Конвейер AI-разбора документов
▍Счета, договоры и акты превращаются в проведённые проводки без ручного ввода.
Контекст
Бухгалтерия клиента вручную перебивала входящие счета, договоры и акты в учётную систему: открыть скан, найти номер, дату, сумму, контрагента — и вбить. На один документ уходило около 47 минут с проверками, поток шёл сотнями в день.
Проект под NDA, имя клиента не раскрываем. Задача была не «прикрутить OCR», а закрыть весь путь: скан → распознанные поля → валидация по схеме → проводка в учётной системе, с честной оценкой уверенности и понятным разбором спорных случаев.
Задача
- 01OCR входящих сканов и PDF (счета, договоры, акты, УПД, ТОРГ-12)
- 02LLM-извлечение полей: №, дата, сумма, НДС, контрагент, ИНН/КПП
- 03Валидация по JSON Schema + сверка контрагента по реестру
- 04Очередь обработки с приоритетами и понятным статусом по каждому документу
- 05Выгрузка проводок в 1С / ERP без ручного ввода
Решение
OCR-фронт и нормализация
Скан выравнивается, чистится и распознаётся в 300 dpi. Текст вместе с координатами блоков уходит дальше — так модель видит, где именно на странице лежит каждое значение.
LLM-извлечение полей
Модель извлекает поля в нормализованную форму и к каждому возвращает оценку уверенности. Выход жёстко ограничен JSON Schema — формат предсказуемый, без свободного текста.
Валидация и сверка
Суммы проверяются на арифметику (база + НДС = итог), даты — на формат, контрагент сверяется с реестром по ИНН. Что ниже порога уверенности — уходит в ручную проверку, а не в учёт молча.
Выгрузка в учёт
Прошедшие валидацию документы превращаются в проводки и выгружаются в 1С по расписанию через очередь. Каждый документ остаётся прослеживаемым: скан, извлечённые поля, кто и что правил.
Архитектура
Сердце системы — очередь. Документ проходит стадии (OCR → извлечение → валидация → выгрузка) как джоба с идемпотентным ключом, поэтому повторный запуск не плодит дублей. Тяжёлый OCR и обращения к LLM вынесены в воркеры и масштабируются отдельно от приёма.
Извлечённые поля хранятся в Postgres вместе со ссылкой на исходный скан и оценками уверенности — это и аудит-след, и обучающая выборка. Выход LLM зажат JSON Schema, а пороги уверенности настраиваются по типу документа, чтобы баланс автоматики и ручной проверки держал заданный уровень точности.
Результаты
- на один документ
- точность полей
- ручного ввода
- документов в конвейере
Что не получилось с первого раза
- ✕Сначала доверились средней точности по документу — и пропустили, что на «сумме прописью» и рукописных правках модель ошибалась чаще, чем на печатных полях. Перешли на пороги по каждому полю отдельно: спорные значения теперь уходят в ручную проверку, а не в учёт.
- ✕На сложных сканах OCR съедал минуты и подвешивал приём новых документов. Вынесли распознавание и вызовы LLM в отдельные воркеры с очередью — приём перестал зависеть от тяжёлой обработки, и пиковые пачки больше не копятся.
“Бухгалтерия перестала перебивать документы руками. Теперь люди смотрят только спорные — где модель честно сказала, что не уверена.
Команда
Что дальше
- →Дообучение на спорных документах из ручной проверки
- →Автосопоставление документа с заказом/договором
- →Расширение типов: таможенные и кадровые документы

