Success Story - rus

Распознавание сложных таблиц


Задача проекта: построить фреймворк для распознавания структуры и содержания таблиц на сканах

Описание проекта:
Задача распознавания структуры таблиц является важной задачей в области обработки текстовых документов. Особо сложным кейсов является распознавание структуры таблиц с отсутствующими границами, что не позволяет испоьзовать большинство алгоритмических подходов, основанных на детекции прямых линий. Также довольно сложным, но распространенным случаем является объединение ячеек таблицы.
Нашей задачей было создание нейросетевого фреймворка, решающего поставленную задачу, а также позволяющую выдавать корректный результат даже в сложных случаях, указанных выше.
Кроме того, для обучения и валидации моделей необходимо было собрать датасет, содержащий структуру и содержание таблиц на сканах документов.

Датасет:
Датасет для решения данной задачи состоял из синтетической и реальной частей.
Синтетическая часть построена на основе разметки датасета PubTabNet. Для генерации изображений таблиц HTML-разметка таблиц из датасета была визуализирована с применением случайных стилей (разные шрифты, цвет, толщина границ).
Реальная часть датасета состояла из сканов документов, которые в дальнейшем были размечены при помощи Яндекс.Толока.

Наше решение:
В рамках решения поставленной задачи рассматривалось 2 подхода:
  • End-to-end модель
  • Two-stage модель
В качестве первого подхода была выбрана модель EDD (PubTabNet). Модель состоит из Visual Encoder и двух связанных Text Decoder. Первый декодер извлекал из изображение разметку в формате HTML, второй декодер использовал attention map первого декодера для решения задачи OCR снутри предсказанного блока.
Второй подход предполагал отдельное решение задачи определения структуры документа и OCR. В качестве OCR-движка использовался Tesseract. Для выделения ячеек таблицы использовалась модель сегментации для выделения границ таблицы с последующим преобразованием в боксы ячеек.
В качестве модели сегментации использовалась модель FPN. Для улучшения качества использовался стек из 3 моделей, последовательно улучшающих качество, а также применялись методы self-distillation для ускорения итогового решения. Также, для получения более четких границ, модель обучалась в манере Pix2pix с Patch Discriminator.

Результаты и примеры работы:
Для two-stage подхода получено качество определения ячеек таблицы mAP~0.981

Заказчик: ИСП РАН

Технологический стек: Python, PyTorch, opencv

Computer Vision Research OCR Engineering