Как работает извлечение
Конвейер обработки документа: разбор файла, извлечение моделью, проверки и источники со ссылкой на место в документе.
Разбор документа
Файл разбирается на текст и элементы с привязкой к странице: абзацы, таблицы, подписи. Для отсканированных страниц без текстового слоя включается оптическое распознавание (OCR).
Извлечение моделью
Распознанный текст вместе со схемой (JSON Schema с описаниями полей) передаётся языковой модели,
которая заполняет схему и отмечает, к какому месту в документе относится каждое значение. Если
ответ модели не проходит проверку по схеме, система даёт ей ещё несколько попыток исправить
результат, прежде чем вернуть ошибку extraction_failed.
Длинные документы делятся на части с учётом контекста, а результат затем объединяется: массивы (например, строки таблицы) склеиваются, а для одиночных полей берётся первое уверенное значение.
Режим precise использует более медленную и точную модель — подробнее в «Тарификация
страниц».
Проверки полей
После извлечения значения проходят детерминированные проверки без участия модели: соответствие схеме, контрольные суммы реквизитов и сходимость сумм, если в схеме размечены итог и позиции. Подробнее — «Проверки полей».
Источники в исходном документе
Каждое значение поля может нести список источников — мест в документе, откуда оно взято: номер
страницы, прямоугольная область (bbox, в долях от размера страницы) и исходный текст. В ответе
API источники лежат в run.fields[<путь>].sources; в Кабинете клик по полю подсвечивает место в
документе. Если модель не связала значение ни с одним местом в документе, поле получает статус
warn с причиной no_source.
Что дальше
- «Тарификация страниц» — как считаются страницы для режимов
standardиprecise. - «Обработка ошибок и повторов» — что делать с
extraction_failedиdocument_unreadable.