1. Главная
  2. Docs
  3. Глоссарий
  4. Извлечение данных из документов

Извлечение данных из документов

8

Извлечение данных из документов — преобразование неструктурированного документа — счёта, акта, заявления, паспорта — в структурированную запись: набор полей с типами, обязательностью и правилами проверки. Формулировка задачи: не «прочитать документ», а «достать из него то, что нужно учётной системе, и гарантировать формат результата».

От текста к полям: чем задача отличается от распознавания

Распознавание даёт текст, извлечение даёт структуру. OCR отвечает на вопрос «что написано», извлечение — на вопрос «какой номер счёта, какая дата, какие позиции». Входом служит текстовый слой, результат распознавания или страница целиком для мультимодальной модели; выходом — запись по заранее заданной схеме.

Подхода три, выбирают по разнообразию форм. Шаблоны по координатам работают быстро и точно, пока контрагент не меняет вёрстку — каждая новая форма требует ручной настройки. Модели с выделением сущностей (NER — named entity recognition) устойчивее к смещениям, но требуют размеченных примеров. Большие модели с промптом и схемой выдерживают произвольную вёрстку, зато всегда выдают ответ — даже там, где поле в документе отсутствует, поэтому обязательна проверка схемой.

Схема дисциплинирует и модель, и процесс. Пока список полей, типов и обязательности не зафиксирован, задача «достань всё» даёт плавающий результат: в одном документе поле найдено, в другом придумано. Схема — контракт между документом и учётной системой.

Схема и валидация: форматы, контрольные суммы, справочники

Формат ловит ошибки, которые глаз не замечает. Дата в трёх написаниях приводится к одной норме; суммы с пробелами, запятыми и словом «руб.» — к числу; номер договора — к канонической форме без дефисов. Нормализация обязательна до сравнения с эталоном и до загрузки в учётную систему.

Контрольные суммы превращают ошибку распознавания в сигнал. ИНН из 10 и 12 цифр, СНИЛС и номер банковской карты содержат проверочные разряды: если контрольная сумма не сходится, в поле есть ошибка — система не молчит, а отправляет документ на разбор. Это самый дешёвый автоматический контроль качества извлечения.

Справочники связывают документ с внутренним контуром. Контрагент сопоставляется по ИНН, а не по названию: «ООО Ромашка» и «Общество с ограниченной ответственностью Ромашка» — одна запись. Единицы измерения, валюты, статьи затрат проверяются по справочнику; значение вне справочника — повод для ручного разбора, а не для молчаливой загрузки.

Таблицы и связность значений

Таблицы — главный источник боли. Перенос длинных строк, объединённые ячейки, многостраничные таблицы с повтором шапки, итоговая строка в середине, разная локаль чисел и отрицательные суммы в скобках — каждая типовая особенность ломает наивные парсеры. Доля ошибок извлечения обычно концентрируется в табличных полях, а не в реквизитах шапки.

Связность проверяет документ целиком. Количество, умноженное на цену, даёт сумму строки; сумма строк сходится с итогом до НДС; НДС согласуется с базой по действующей ставке с допуском на округление. Нарушение связности — не ошибка конкретного поля, а маркер: где-то в документе извлечено неверно, документ смотрит человек.

Числа нормализуются до проверки связности. Разделители разрядов, запятая или точка как десятичный знак, скобки для отрицательных значений — без единой нормы проверки связности дают ложные срабатывания на каждом втором документе.

Точность по полям, уверенность и человек в контуре

Базовая метрика — точность по полям. Поле считается верным при полном совпадении с эталоном после нормализации формата. Считать надо разрезами: по полям, по контрагентам, по источнику изображения — средняя по документу скрывает, что «ИНН» извлекается на 99%, а «дата поставки» на 85%.

Точности по полям недостаточно без объёма документа. При 30 полях и точности 99% по каждому полю полностью безошибочных документов — около трёх четвертей; каждое добавленное поле снижает долю чистых документов. Отсюда практический вывод: список полей минимизируют до необходимого, а не расширяют «на будущее».

Уверенность модели управляет очередью на проверку. Поля и документы с уверенностью ниже порога уходят человеку, остальные проходят дальше с выборочным контролем. Типовая настройка на старте — порог, при котором вручную проверяется 20–30% документов; после чистки схемы и дообучения порог поднимают до 5–10%. Порог настраивается замером на эталонном наборе из 200–500 документов, а не значением по умолчанию из документации. Как строить такой контур — в статье «Человек в контуре проверки».

Где уместно и когда нужно

Извлечение оправдано на массовом повторяющемся потоке. Счета от десятков и сотен контрагентов, анкеты, заявления, титульные листы договоров — документы, где набор полей стабилен, а вёрстка гуляет. Ориентир целесообразности — от нескольких сотен документов в месяц; ниже ручной ввод с двойным контролем обходится дешевле.

Неуместно — на разнородных разовых документах. Если документы не повторяются по типу, а объём измеряется десятками в месяц, настройка схемы и сопровождение обойдутся дороже ручного ввода; для таких случаев подходят ассистенты с разметкой сущностей в тексте без жёсткой схемы — про этот слой отдельная статья про NER.

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

  • «Достань всё» без схемы. Без фиксированного списка полей и типов модель выдумывает структуру: набор полей плавает от документа к документу, последующие системы ломаются на каждом плавающем поле.
  • Средняя точность без разрезов. Отчёт «точность 96%» не говорит, что три критичных поля работают на 85%; решение о снижении доли ручной проверки принимается по разрезам критичных полей.
  • Отсутствие валидации. Испорченный ИНН без проверки контрольной суммой уходит в платёж и всплывает в банке; контроль на входе стоит на порядки дешевле разбора на выходе.
  • Доверие самоуверенности модели. Большая модель выдаёт ответ всегда; без порога уверенности и проверок связности уверенная галлюцинация неотличима от извлечённого значения.
  • Настройка на чистых сканах, эксплуатация на фото. Эталон и пороги настроены на сканы 300 DPI, а в бою приходят фото с телефона — точность падает незаметно, без мониторинга разрезов по источникам.
  • Игнорирование смены форм контрагентами. Точность снижается исподволь, поэтому качество меряется не один раз, а по расписанию — как это происходит, разобрано в статье про дрейф данных.

Частые вопросы

Сколько документов нужно для пилота?

Эталонный набор из 200–500 размеченных вручную документов плюс реальный поток на один–два месяца. Меньший эталон не ловит редкие формы, больший на старте не окупается — он дорастает по мере накопления ошибок.

Можно ли обойтись без человека в контуре?

При точности по критичным полям выше целевой, надёжной валидации и низкой цене единичной ошибки — да, с выборочным контролем и мониторингом. Если ошибка уходит в платёж или договор, полное удаление человека из контура не оправдано почти никогда.

Как извлекать поля, если у каждого контрагента своя форма?

Схема остаётся единой, гуляет только вёрстка — это штатный режим больших моделей. Контроль переносится с шаблонов на валидацию: форматы, контрольные суммы и связность работают независимо от того, как поля расположены на странице.

Что делать с рукописными анкетами?

Печатные поля отдавать модели, рукописные — человеку сразу: точность распознавания скорописи не дотягивает до учётных задач. Порог уверенности для рукописных полей настраивается отдельно и жёстче, чем для печатных.

Чем извлечение отличается от OCR и NER?

OCR даёт текст, NER находит сущности внутри текста, извлечение возвращает запись по схеме с валидацией и проверкой связности. Это последовательные уровни: каждый следующий строится на предыдущем и добавляет гарантии.

Как считать точность по полям?

Поле верно при точном совпадении с эталоном после нормализации формата; отдельно считаются обязательные и опциональные поля. Ошибки «поле пропущено» и «поле выдумано» учитываются раздельно — у них разные причины и разная цена.

Что почитать по теме