Этап 1 — Чтение документа
2.4 Этап 1 — Слой чтения документа
Этот этап превращает изображение чека или PDF в текст, который может проверить слой правил. Конвейер работает по принципу vision-first: для изображений модель со зрительными способностями читает фотографию чека напрямую, поэтому отдельный проход OCR для основного пути пропускается. Публичный контракт — это нормализованный выход этапа, а не имя провайдера.
Путь изображения — vision-first
Для загруженных изображений предобработанное изображение отправляется сразу на этап зрительного извлечения (2.5) одним вызовом. Vision-модель выполняет чтение и структурированное извлечение полей вместе, что убирает целый круговой обход провайдера из синхронного пути и не привязывает качество извлечения к сегментации строк отдельного OCR-движка.
Последующие этапы, работающие с обычными строками чека (слой правил, сопоставление товаров), по-прежнему получают вход в стиле OCR: список строк с порядком чтения реконструируется из выхода vision-модели, поэтому эти этапы сохраняют единую форму входа независимо от того, как был прочитан документ.
Путь PDF — ветка OCR
Цифровые счета поступают в виде PDF. Для них конвейер извлекает встроенный текст напрямую, а когда документ не содержит пригодного текстового слоя, откатывается к преобразованию PDF в изображение для vision-пути. Именно в этой ветке выполняется классический шаг извлечения текста; изображения обходят его полностью.
Нормализация выхода
Каким бы ни был источник — выход vision-модели, текст PDF или текстовый дамп, предоставленный оператором, — результат чтения нормализуется в одну внутреннюю форму: строка полного текста плюс упорядоченный список строк (lineNo, text). Последующие этапы потребляют эту нормализованную форму, поэтому извлечение полей не привязано к форме сырого ответа какого-либо провайдера.
Сигнал качества
Этап чтения переносит сигналы качества и категории ошибок на последующие этапы. В случаях низкого качества конвейер может переобработать, запросить у пользователя новое изображение или продолжить с более низкой достоверностью в соответствии с операционной политикой.
Это сохраняет публичный технический контракт, избегая деталей порогов и резервного поведения, которые можно было бы легко реверс-инжинирить.