Модель может вернуть правдоподобное значение, которого нет в документе, перепутать похожие поля или изменить формат даты и суммы.

Надежный pipeline не принимает ответ как истину: каждое критичное поле связывается с фрагментом источника и проходит детерминированную проверку.

Какие расхождения нужно разделить

Ошибка может появиться до модели, внутри распознавания или уже при нормализации результата.

  • Значение отсутствует в документе, но заполнено уверенным ответом.
  • Номер договора перепутан с номером счета или приложения.
  • Дата и сумма прочитаны верно, но преобразованы в неправильный формат.
  • Одинаковый документ дает разные поля при повторной обработке.

Почему возникает проблема

Качество зависит от изображения, структуры документа, схемы ответа, контекста и правил постобработки.

  • OCR потерял символы, таблицу или связь подписи с полем.
  • Схема допускает свободный текст и не запрещает догадки.
  • В запросе нет четких определений похожих реквизитов.
  • Нормализация неверно трактует локаль, разделители или часовой пояс.
  • Изменились модель, prompt или preprocessing без регрессионной проверки.

Пошаговая диагностика

Для каждой ошибки сохраните исходную страницу, промежуточный OCR и финальный структурированный ответ.

  1. Сравните пиксели документа с текстом и координатами OCR.
  2. Проверьте, был ли исходный фрагмент передан модели целиком.
  3. Зафиксируйте версию модели, prompt, schema и параметры запуска.
  4. Отделите буквальное извлечение от вычисляемых и нормализованных полей.
  5. Соберите набор ошибок по типу документа и конкретному полю.

Требуйте доказательство для каждого поля

Вместе со значением полезно сохранять страницу, цитату и координаты исходного фрагмента.

  • Отсутствующее значение возвращается как null, а не угадывается.
  • Каждое поле содержит ссылку на source span или bounding box.
  • Буквальное значение хранится отдельно от нормализованного.
  • Низкая уверенность или конфликт правил отправляет документ на проверку.

Как исправить проблему

Укрепите каждый этап: подготовку, извлечение, схему и детерминированную валидацию.

  1. Улучшите рендер, OCR и layout-анализ для проблемных страниц.
  2. Опишите поля строгой schema с допустимыми типами и null.
  3. Добавьте примеры сложных документов и различия похожих реквизитов.
  4. Проверяйте даты, валюты, контрольные суммы и связи между полями кодом.
  5. Используйте ручное подтверждение для критичных или неуверенных результатов.

Как проверить результат

  • Каждое значение можно показать рядом с фрагментом исходника.
  • Повторная обработка дает стабильный результат в допустимых пределах.
  • Суммы, даты и идентификаторы проходят форматные и бизнес-проверки.
  • Ошибочные документы не попадают автоматически в дальнейшие операции.

Типичные ошибки

  • Оценивать качество по красивому JSON без сверки с документом.
  • Просить модель обязательно заполнить каждое поле.
  • Смешивать исходное значение и нормализацию в одном шаге.
  • Обновлять модель без набора регрессионных документов.

Как предотвратить повторение

  • Храните анонимизированный эталонный набор документов и ответов.
  • Измеряйте точность отдельно по каждому критичному полю.
  • Версионируйте модели, prompts, schemas и preprocessing.
  • Мониторьте рост null, конфликтов и ручных исправлений.

Когда нужна помощь

Если AI извлекает поля не так, как в исходных документах, я разберу pipeline от OCR до schema, добавлю привязку к источнику и проверки, чтобы сомнительные значения не проходили дальше автоматически.