Перейти к содержимому

Необходимые cookie-файлы нужны для работы сайта. Аналитические cookie (Яндекс Метрика) — только с вашего согласия. Политика cookie-файлов

ТОРГ-12

Распознавание товарной накладной ТОРГ-12

Поставщик, грузоотправитель, грузополучатель и плательщик, основание, товары с количеством, ценой и НДС, итоги — из скана товарной накладной.

Что извлекается

Готовая схема: берите как есть или добавьте свои поля. Если значения нет в документе, поле вернётся null со статусом missing.

ПолеОписаниеТипПроверка
numberНомер документаstring
dateДата составленияstring (date)
supplierПоставщикobject
nameНаименованиеstring
innИННstringИНН
kppКПП (у ИП нет)stringКПП
consigneeГрузополучательobject
nameНаименованиеstring
innИННstringИНН
kppКПП (у ИП нет)stringКПП
payerПлательщикobject
nameНаименованиеstring
innИННstringИНН
kppКПП (у ИП нет)stringКПП
basisОснование (договор, заказ)string
items[]Товарыarray
nameНаименованиеstring
unitЕдиница измеренияstring
quantityКоличество (масса нетто)number
priceЦенаnumber
vat_amountСумма НДСnumber
amount_with_vatСумма с учётом НДСnumber
total_with_vatВсего по накладнойnumberсумма строк

Пример результата

Данные вымышлены, структура — ровно по схеме из таблицы. Рамкой отмечены реквизиты, которые Typizer проверяет.

result.json
{
  "number": "1873",
  "date": "2026-08-21",
  "supplier": {
    "name": "ООО «Опт-Пример»",
    "inn": "0013579240",
    "kpp": "001301001"
  },
  "consignee": {
    "name": "ООО «Склад на Неве»",
    "inn": "0024681359",
    "kpp": "002401001"
  },
  "payer": {
    "name": "ООО «Склад на Неве»",
    "inn": "0024681359",
    "kpp": "002401001"
  },
  "basis": "Договор поставки № 44 от 10.01.2026",
  "items": [
    {
      "name": "Цемент М500, мешок 50 кг",
      "unit": "шт",
      "quantity": 80,
      "price": 520,
      "vat_amount": 6933.33,
      "amount_with_vat": 41600
    }
  ],
  "total_with_vat": 41600
}

Особенности документа

  • ТОРГ-12 — унифицированная форма (ОКУД 0330212), но на практике её печатают из разных учётных систем: колонки сдвигаются, строки переносятся. Typizer читает таблицу по заголовкам, а не по координатам.
  • В накладной четыре участника: поставщик, грузоотправитель, грузополучатель и плательщик. Часто это одни и те же организации — но не всегда, поэтому в схеме они разделены.
  • Многостраничные накладные с итогами «по странице» и «всего по накладной»: извлекайте общий итог отдельно от промежуточных.

Что проверяет Typizer

  • ИНН участников — контрольные цифры; КПП — формат из 9 знаков.
  • Итог по накладной — сумма строк против строки «Всего по накладной».

Не прошло — поле получает статус warn и причину. У найденных значений есть источник на странице.

Вызов API с этой схемой

Один запрос к /v1/extract: файл, схема и инструкция. Ключ — в кабинете после регистрации.

Инструкция: Номер и дата ТОРГ-12, поставщик, грузополучатель и плательщик с ИНН и КПП, основание, товары с единицей, количеством, ценой, суммой НДС и суммой с НДС, итого

curl
curl -X POST 'https://api.typizer.ru/v1/extract?wait=60' \
  -H 'Authorization: Bearer tz_live_YOUR_API_KEY' \
  -H "Idempotency-Key: $(uuidgen)" \
  -F 'file=@document.pdf' \
  --form-string 'schema={"type":"object","properties":{"number":{"type":"string","description":"Номер документа"},"date":{"type":"string","format":"date","description":"Дата составления"},"supplier":{"type":"object","description":"Поставщик","properties":{"name":{"type":"string","description":"Наименование"},"inn":{"type":"string","description":"ИНН","x-typizer-check":"inn"},"kpp":{"type":"string","description":"КПП (у ИП нет)","x-typizer-check":"kpp"}},"required":["name","inn","kpp"]},"consignee":{"type":"object","description":"Грузополучатель","properties":{"name":{"type":"string","description":"Наименование"},"inn":{"type":"string","description":"ИНН","x-typizer-check":"inn"},"kpp":{"type":"string","description":"КПП (у ИП нет)","x-typizer-check":"kpp"}},"required":["name","inn","kpp"]},"payer":{"type":"object","description":"Плательщик","properties":{"name":{"type":"string","description":"Наименование"},"inn":{"type":"string","description":"ИНН","x-typizer-check":"inn"},"kpp":{"type":"string","description":"КПП (у ИП нет)","x-typizer-check":"kpp"}},"required":["name","inn","kpp"]},"basis":{"type":"string","description":"Основание (договор, заказ)"},"items":{"type":"array","description":"Товары","items":{"type":"object","properties":{"name":{"type":"string","description":"Наименование"},"unit":{"type":"string","description":"Единица измерения"},"quantity":{"type":"number","description":"Количество (масса нетто)"},"price":{"type":"number","description":"Цена"},"vat_amount":{"type":"number","description":"Сумма НДС"},"amount_with_vat":{"type":"number","description":"Сумма с учётом НДС"}},"required":["name","unit","quantity","price","vat_amount","amount_with_vat"]}},"total_with_vat":{"type":"number","description":"Всего по накладной","x-typizer-check":"sum_of","x-typizer-sum-of":"items[].amount_with_vat"}},"required":["number","date","supplier","consignee","payer","basis","items","total_with_vat"]}' \
  --form-string 'instructions=Номер и дата ТОРГ-12, поставщик, грузополучатель и плательщик с ИНН и КПП, основание, товары с единицей, количеством, ценой, суммой НДС и суммой с НДС, итого'

FAQ

Вопросы о распознавании товарных накладных ТОРГ-12

Не нашли ответ? Напишите — ответит человек.

hello@typizer.ruДокументация
Распознаётся ли рукописная правка в накладной?

Печатный текст распознаётся надёжно; рукописные пометки — по возможности. Поле, значение которого прочитано неуверенно или не прошло проверку, получает статус warn с причиной.

Как быть с накладными на несколько страниц?

Отправляйте документ целиком — до 200 страниц за прогон. Позиции со всех страниц собираются в один массив, у каждой строки — источник с номером страницы.

Можно ли получить XML для загрузки в учётную систему?

Да: результат можно запросить в XML, а XSD вашего типизатора получить через API — по нему настраивается загрузка.

Первые страницы — за наш счёт.

100 страниц при регистрации и ещё 200 страниц за ИНН компании. Без карты и без подписки.