РУКОВОДСТВО · ОБНОВЛЕНО 2026-09-16
Нейросеть для счетов и актов: как извлекать поля и проверять результат
Задача не заканчивается распознаванием текста: документ нужно превратить в поля, сопоставить суммы и отметить места, где модель не уверена.
Задайте схему полей до обработки: тип документа, номер, дата, контрагент, ИНН, валюта, итог, налог и строки. Извлекайте текст или изображение страницы подходящим методом, затем требуйте структурированный результат и проверяйте его кодом. Пустое или сомнительное поле отправляйте на ручную сверку; модель не должна выдумывать реквизиты, чтобы заполнить обязательный JSON.
1. Определите целевую карточку документа
Для счёта сохраните document_type, number, date, supplier_name, supplier_tax_id, currency, subtotal, tax_amount, total и массив строк. Для акта важны период, стороны, перечень услуг и подписанты. У каждого поля укажите тип, обязательность и источник: страница и фрагмент документа. Не объединяйте сумму без налога и итог к оплате в одно поле. Схему тестируйте на реальных обезличенных образцах разных поставщиков, включая сканы и документы без части реквизитов.
2. Выберите путь чтения по качеству входа
Если PDF содержит доступный текст, сначала проверьте извлечение обычным парсером. Для сканов и таблиц может потребоваться OCR или мультимодальная модель, понимающая расположение элементов. Сравните два пути на одном наборе документов: неверно распознанная цифра в ИНН опаснее пропущенного пробела. Не обещайте, что одна LLM заменит специализированный процессор на любом языке и качестве скана. Для каждой ошибки сохраняйте исходную страницу, а не только ответ модели.
3. Потребуйте поля с признаком неопределённости
Вывод может содержать значение, страницу, короткое подтверждение из документа и статус found, missing или conflict. Для отсутствующего ИНН лучше null и статус missing, чем правдоподобные цифры. JSON Schema помогает ограничить типы и допустимые поля, если конкретный маршрут поддерживает структурированный вывод. Даже строго валидный JSON может содержать неправильный итог; модельное поле не становится бухгалтерской истиной из-за правильной формы.
4. Сверьте арифметику и реквизиты отдельно
Код проверяет формат даты и ИНН, валюту, сумму строк, налоги и соответствие итога. Нормализуйте десятичный разделитель и пробелы в суммах без округления на глаз. При расхождении показывайте оператору исходный фрагмент и оба значения. Если документ упоминает аванс, скидку или несколько налоговых ставок, простая сумма строк может не совпасть с оплатой; такие случаи помечаются, а не исправляются моделью автоматически.
5. Оцените качество на цене ошибки
Разметьте набор документов вручную и посчитайте точность по каждому полю, долю документов без ручной правки и число критических ошибок. Отдельно измерьте цену страницы или документа, включая OCR, модель и повтор. Сначала запускайте процесс в режиме предложения оператору, а не автоматической записи в учётную систему. Перед интеграцией проверьте поддерживаемые форматы файла и параметры структурированного вывода у конкретного метода.
Частые вопросы
Нужен ли OCR, если есть мультимодальная модель?
Зависит от качества и структуры документов; сравните точность, стоимость и проверяемость двух подходов.
Почему одного JSON Schema недостаточно?
Схема проверяет типы и наличие полей, но не подтверждает, что число действительно взято из документа.
Что делать с пустым или противоречивым полем?
Сохранить статус неопределённости и отправить документ на ручную сверку.
Можно автоматически проводить счета после распознавания?
Сначала нужна отдельная приёмка качества, проверки реквизитов и контроль критических ошибок.