Распознавание форм: как превратить скан бланка в структурированные данные

Распознавание форм (form recognition) — это извлечение из PDF/сканов конкретных полей формы (ФИО, дата, сумма), таблиц и отметок чекбоксов в виде структурированных данных (обычно JSON). В первые минуты проекта важно понять: здесь недостаточно «просто OCR» — нужно восстановить структуру и связи «подпись поля → значение».

Практическое правило: если вам нужен результат вида «поле → значение», а не «сплошной текст документа», значит вам нужно form recognition (OCR — только часть конвейера).

Оглавление

Что именно распознают в формах

Обычно извлекают четыре типа сущностей:

  • Пары ключ–значение (KVP): «Серия паспорта → 1234», даже если значение находится ниже или в соседней колонке.
  • Таблицы: заголовки, строки, ячейки, иногда без линий (визуально «как таблица», но построена пробелами).
  • Чекбоксы и варианты выбора: отмечено/не отмечено + к какому пункту относится.
  • Координаты и порядок чтения: чтобы потом корректно связать элементы и подсветить их в интерфейсе проверки.

Почему это сложнее OCR: текст может быть распознан верно, но привязан не к тому полю (например, значение «съехало» к соседней подписи), а таблица может «развалиться» на строки при скане под углом.

Подходы: от шаблонов до ML

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

Сравнение подходов к form recognition

ПодходКогда подходитГлавный риск
Шаблоны по координатам1–3 стабильных бланка годамиЛюбой редизайн/масштаб ломает извлечение
Якоря + правилаДо десятков вариаций, есть устойчивые подписи полейСложно поддерживать при росте числа форм
Готовый Document AI/IDPБыстрый запуск, много типов документовОграничения кастомизации, цена на объёмах
ML с дообучением под схемуСотни форм, нужен высокий STPНужны разметка, MLOps и контроль дрейфа

Если формы часто «плывут» (разные сканеры, масштаб, поля то справа, то снизу) — начинайте не с шаблонов, а с якорей или готового парсера, и добавляйте нормализацию/валидацию. Это обычно быстрее даёт стабильный результат.

Внедрение и метрики качества

Минимально жизнеспособный конвейер выглядит так:

  1. Предобработка: выравнивание (deskew), шумоподавление, нормализация DPI.
  2. OCR + координаты: текст, блоки, строки, bbox.
  3. Извлечение структуры: KVP, таблицы, чекбоксы.
  4. Приведение к вашей схеме: синонимы ключей, форматы дат/сумм, справочники.
  5. Валидация + операторская проверка для низкой уверенности.
  6. Экспорт в целевую систему (JSON/таблица).

Измеряйте качество в двух плоскостях:

  • Field-level F1: насколько правильно заполнены значения по каждому полю (отдельно по критичным).
  • STP (Straight-Through Processing): доля документов, прошедших без участия человека.
  • Стоимость ошибки: цена неверного поля (особенно сумма, реквизиты, даты).

Не ставьте единственный KPI «точность 98%». Ошибка в сумме или реквизитах может быть критичнее десятка ошибок в второстепенных полях — заведите список критичных полей с более строгой проверкой и отдельным SLA.

Частые ошибки

  • Нет слоя нормализации ключей: «Телефон», «Контактный телефон», «Тел.» считаются разными полями → растёт ручная правка.
  • Смешали рукописные и печатные поля без правил: для рукописных значений почти всегда нужна усиленная валидация и чаще — оператор.
  • Слишком ранний уход в “сложную модель”: если базовый OCR и координаты нестабильны, качество KVP/таблиц будет падать каскадом.
  • Не определили формат таблицы: что считать строкой, как обрабатывать объединённые ячейки, что делать с пустыми колонками.
  • Нет мониторинга: качество «тихо» деградирует при смене шаблона бланка или источника сканов.

FAQ

Чем form recognition отличается от OCR?
OCR выдаёт текст. Form recognition дополнительно определяет структуру: какие значения относятся к каким полям, где таблица и какие чекбоксы отмечены.

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

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

Какие данные подготовить для пилота?
Набор документов «как в жизни»: разные качества, перекосы, печати/подписи, несколько источников сканирования. И заранее — целевую схему полей (что обязательно, что критично, какие форматы).