Стенд распознавания карт
Браузерный инструментарий аналитика: разметить трафарет (геометрию клеток) по эталонному бланку, применить его к сканам, прочитать отметки офлайн и текст выбранным движком, сравнить подходы. Живёт вне продуктового кода, в src-tools.
1. Цель
Дать аналитику средства спроектировать распознавание одного вида бумажной карты и
проверить его на реальных сканах, не трогая продуктовый код. Ключевой результат
стенда — переиспользуемые трафареты по видам страниц (page_type): описание точной
геометрии клеток бланка, снятое один раз с эталонного скана.
Устройство подчинено принципу «математика вперёд, модель — только на текст»: выравнивание, привязка сетки, детекция отметок — детерминированные алгоритмы по пикселям (бесплатно, воспроизводимо, мгновенно); большая языковая модель (VLM) или облачный OCR вызывается только для чтения рукописного/печатного значения в непустой ячейке.
Стенд — исследовательский слой перед реализацией: на нём отрабатывается подход, который затем ложится в продуктовую обработку пакета (см. Связанные артефакты).
2. Акторы
| Актор | Роль в эпике |
|---|---|
| Аналитик | размечает трафареты по эталонным бланкам, применяет к сканам, читает зоны, сравнивает движки распознавания |
| Разработчик | сопровождает стенд, переносит отработанный подход в продуктовую обработку |
3. Границы
Входит:
- Редактор трафарета — разметка клеток (checkbox/text) по эталону: детекция линий сетки, примагничивание, клик-по-клетке, id клетки из подписи (translit), экспорт/импорт JSON.
- Применение трафарета — загрузка скана, выравнивание вертикали (deskew), опциональная привязка по линиям сетки, чтение зон: отметки (офлайн, прототип-вычитание) и текст (Qwen-VL / Yandex OCR), вывод в JSON и читаемый список полей.
- OCR-лаборатории — сравнение движков распознавания текста и координатной привязки (grounding) на отдельных страницах.
- Локальный сервер — прокси (обход CORS к Yandex/Qwen/orthocover).
- Библиотека трафаретов — JSON по видам страниц (front_v1/v2, back_v1/v2).
Не входит: продуктовая обработка пакета и её конвейер, сервис нормализации кадра (orthocover) как таковой, обучение/дообучение моделей, ведение форм и видов ИК (администрирование). Стенд их использует или имитирует, но не реализует.
4. Критерии приёмки
- Трафарет — это JSON вида страницы (
page_type): рамка-якорь, линии сетки и клетки{id, type: checkbox|text, section (путь), label, x, y, w, h}в долях 0..1. - Разные виды бланка требуют своего трафарета: они отличаются не только координатами, но и составом колонок (пример: Декор-Обрез — 5 опций в back_v1 против 3 в back_v2).
- Отметки (галочка/крестик/штрих — любая) читаются офлайн, без обращения к модели; устойчивость к форме метки обеспечивает прототип-вычитание по колонке.
- Текст читается выбранным движком; перед вызовом — офлайн-проверка «есть ли чернила», пустые клетки не отправляются.
- Скан обрабатывается без нормализации: по умолчанию только выравнивание вертикали (deskew); нормализация (orthocover) и привязка по линиям — опциональны.
- Инструменты — статические HTML, открываются в браузере через локальный прокси; ключи доступа проходят насквозь и никуда, кроме целевого API, не пишутся.
5. Открытые вопросы
| № | Вопрос |
|---|---|
| OQ-RS-1 | Автоопределение вида страницы (page_type) — чтобы форма подбиралась сама. Механизм решён геометрическим детектором — ADR-015 «Опознание формы и страницы кадра»; открытым остаётся перенос в продуктовую обработку и прод-устойчивость (см. OQ-RS-2) |
| OQ-RS-2 | Запас прочности привязки на произвольном (прод) фото. На эталонных сканах решено: Y-граница кадра берётся по крайним горизонталям сетки (frameYbyLines), регистрация по линиям регуляризована к аффинной (мёртвая зона + отбраковка выбросов) — на «своём» скане вырождается в тождество. Открыт вопрос устойчивости на сильно «плывущих» и низкокачественных сканах |
| OQ-RS-3 | Потолок точности упирается в разрешение фото (~816px, клетка ~55px); при съёмке 2000px+ офлайн и VLM резко точнее |
| OQ-RS-4 | Формат и версионирование библиотеки трафаретов, перенос отработанного подхода в продуктовую обработку |