Распознавание форм: как превратить скан бланка в структурированные данные
Распознавание форм (form recognition) — это извлечение из PDF/сканов конкретных полей формы (ФИО, дата, сумма), таблиц и отметок чекбоксов в виде структурированных данных (обычно JSON). В первые минуты проекта важно понять: здесь недостаточно «просто OCR» — нужно восстановить структуру и связи «подпись поля → значение».
Практическое правило: если вам нужен результат вида «поле → значение», а не «сплошной текст документа», значит вам нужно form recognition (OCR — только часть конвейера).
Оглавление
Что именно распознают в формах
Обычно извлекают четыре типа сущностей:
- Пары ключ–значение (KVP): «Серия паспорта → 1234», даже если значение находится ниже или в соседней колонке.
- Таблицы: заголовки, строки, ячейки, иногда без линий (визуально «как таблица», но построена пробелами).
- Чекбоксы и варианты выбора: отмечено/не отмечено + к какому пункту относится.
- Координаты и порядок чтения: чтобы потом корректно связать элементы и подсветить их в интерфейсе проверки.
Почему это сложнее OCR: текст может быть распознан верно, но привязан не к тому полю (например, значение «съехало» к соседней подписи), а таблица может «развалиться» на строки при скане под углом.
Подходы: от шаблонов до ML
Выбор подхода зависит от количества типов форм и того, как часто они меняются.
Сравнение подходов к form recognition
| Подход | Когда подходит | Главный риск |
|---|---|---|
| Шаблоны по координатам | 1–3 стабильных бланка годами | Любой редизайн/масштаб ломает извлечение |
| Якоря + правила | До десятков вариаций, есть устойчивые подписи полей | Сложно поддерживать при росте числа форм |
| Готовый Document AI/IDP | Быстрый запуск, много типов документов | Ограничения кастомизации, цена на объёмах |
| ML с дообучением под схему | Сотни форм, нужен высокий STP | Нужны разметка, MLOps и контроль дрейфа |
Если формы часто «плывут» (разные сканеры, масштаб, поля то справа, то снизу) — начинайте не с шаблонов, а с якорей или готового парсера, и добавляйте нормализацию/валидацию. Это обычно быстрее даёт стабильный результат.
Внедрение и метрики качества
Минимально жизнеспособный конвейер выглядит так:
- Предобработка: выравнивание (deskew), шумоподавление, нормализация DPI.
- OCR + координаты: текст, блоки, строки, bbox.
- Извлечение структуры: KVP, таблицы, чекбоксы.
- Приведение к вашей схеме: синонимы ключей, форматы дат/сумм, справочники.
- Валидация + операторская проверка для низкой уверенности.
- Экспорт в целевую систему (JSON/таблица).
Измеряйте качество в двух плоскостях:
- Field-level F1: насколько правильно заполнены значения по каждому полю (отдельно по критичным).
- STP (Straight-Through Processing): доля документов, прошедших без участия человека.
- Стоимость ошибки: цена неверного поля (особенно сумма, реквизиты, даты).
Не ставьте единственный KPI «точность 98%». Ошибка в сумме или реквизитах может быть критичнее десятка ошибок в второстепенных полях — заведите список критичных полей с более строгой проверкой и отдельным SLA.
Частые ошибки
- Нет слоя нормализации ключей: «Телефон», «Контактный телефон», «Тел.» считаются разными полями → растёт ручная правка.
- Смешали рукописные и печатные поля без правил: для рукописных значений почти всегда нужна усиленная валидация и чаще — оператор.
- Слишком ранний уход в “сложную модель”: если базовый OCR и координаты нестабильны, качество KVP/таблиц будет падать каскадом.
- Не определили формат таблицы: что считать строкой, как обрабатывать объединённые ячейки, что делать с пустыми колонками.
- Нет мониторинга: качество «тихо» деградирует при смене шаблона бланка или источника сканов.
FAQ
Чем form recognition отличается от OCR?
OCR выдаёт текст. Form recognition дополнительно определяет структуру: какие значения относятся к каким полям, где таблица и какие чекбоксы отмечены.
Можно ли обойтись без обучения моделей?
Да, если у вас мало типов форм или подходят готовые парсеры. Но почти всегда понадобятся: нормализация ключей, валидация форматов и сценарий проверки сомнительных полей.
Когда шаблоны по координатам — хороший выбор?
Когда бланк один и не меняется, сканы стабильные, а цена ошибки высока и нужна предсказуемость.
Какие данные подготовить для пилота?
Набор документов «как в жизни»: разные качества, перекосы, печати/подписи, несколько источников сканирования. И заранее — целевую схему полей (что обязательно, что критично, какие форматы).