Счета и УПД
Готовые схемы для счетов и УПД с проверками x-typizer-check: какие поля извлекаются и как их проверить.
Ниже — рабочие схемы для двух самых частых типов документов. Создайте типизатор с такой схемой («Первый вызов API», шаг «Сохранить типизатор») и при необходимости уберите или добавьте поля под свой формат документа.
Счёт на оплату
{
"type": "object",
"properties": {
"invoice_number": { "type": "string" },
"invoice_date": { "type": "string", "format": "date" },
"supplier_name": { "type": "string" },
"supplier_inn": { "type": "string", "x-typizer-check": "inn" },
"supplier_kpp": { "type": "string", "x-typizer-check": "kpp" },
"supplier_account": { "type": "string", "x-typizer-check": "account" },
"supplier_bik": { "type": "string", "x-typizer-check": "bik" },
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"quantity": { "type": "number" },
"price": { "type": "number" },
"amount": { "type": "number" }
},
"required": ["name", "amount"]
}
},
"total": {
"type": "number",
"x-typizer-sum-of": "items[].amount"
}
},
"required": ["invoice_number", "total", "supplier_inn"]
}x-typizer-sum-of на поле total сверяет его с суммой amount по всем строкам items — расхождение
(например, итог в документе округлён иначе, чем сумма строк) даёт полю total статус warn с
причиной sum_mismatch, а не падение всего прогона.
УПД (универсальный передаточный документ)
{
"type": "object",
"properties": {
"document_number": { "type": "string" },
"document_date": { "type": "string", "format": "date" },
"seller_name": { "type": "string" },
"seller_inn": { "type": "string", "x-typizer-check": "inn" },
"seller_kpp": { "type": "string", "x-typizer-check": "kpp" },
"buyer_name": { "type": "string" },
"buyer_inn": { "type": "string", "x-typizer-check": "inn" },
"buyer_kpp": { "type": "string", "x-typizer-check": "kpp" },
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"quantity": { "type": "number" },
"price_without_vat": { "type": "number" },
"vat_rate": { "type": "string" },
"vat_amount": { "type": "number" },
"amount_with_vat": { "type": "number" }
},
"required": ["name", "amount_with_vat"]
}
},
"total_without_vat": { "type": "number" },
"total_vat": { "type": "number" },
"total_with_vat": {
"type": "number",
"x-typizer-sum-of": "items[].amount_with_vat"
}
},
"required": ["document_number", "seller_inn", "buyer_inn", "total_with_vat"]
}УПД совмещает счёт-фактуру и передаточный документ, поэтому в нём два ИНН/КПП (продавца и покупателя) — обе пары проверяются одинаково, по контрольным цифрам.
Проверки x-typizer-check для реквизитов
Для российских реквизитов есть готовые проверки — их достаточно один раз указать в схеме (или
положиться на автоопределение по имени поля), и Typizer сам выставит полю статус ok/warn с
причиной расхождения:
| Проверка | Что проверяется |
|---|---|
inn | ИНН: контрольные цифры, 10 знаков (юрлицо) или 12 (физлицо/ИП) |
kpp | КПП: формат из 9 символов |
ogrn | ОГРН/ОГРНИП: контрольная цифра |
bik | БИК: 9 цифр, код России |
account | Расчётный счёт: контрольная сумма относительно БИК, если он есть в документе |
snils | СНИЛС: контрольная сумма |
sum_of | Сходимость суммы с перечнем слагаемых (x-typizer-sum-of) |
Подробнее о статусах и причинах — «Проверки полей»; полный список ключевых слов схемы — «Поддерживаемый JSON Schema».
Частые ошибки распознавания
- Скан низкого качества или фото под углом. Контрольные суммы (ИНН, БИК, счёт) часто спасают
от опечатки распознавания на одну цифру — поле уйдёт в
warn, а не вokс неверным значением. Если такихwarnмного на однотипных документах — попробуйте режимprecise(«Тарификация страниц»), он даёт более точное распознавание ценой повышенного тарифа. - Итоговая сумма прописью вместо цифр. Поле со значением прописью («сто рублей 00 копеек»)
извлекается как есть в
string-поле; если нужно число дляx-typizer-sum-of, описывайте итог какnumber-поле рядом с суммой цифрами в документе, а не с суммой прописью. - Нестандартная таблица строк. Если строки счёта/УПД объединены в документе нетипично
(например, несколько позиций в одной ячейке), уменьшите число полей в
itemsдо действительно нужных — это снижает шанс, что модель перепутает колонки.
Что дальше
- «Проверки полей» — все статусы и причины
warn. - «Выгрузка в 1С через XML» — экспорт результата в 1С.
- «Пакетная обработка» — та же схема сразу на пачке документов.