Success Story - rus
iDog OCR Research Group CV

Детектирование блоков текста

Задача:
Со стороны заказчика заказчика была потребность в очень точной детекции слов на изображении документа, выделение ключевых блоков текста (абзацы, заголовки, колонки), и выделении базовых линий.

Проблема:
Боксы слов должны охватывать слова точно и быть воспроизводимыми на различных сканах одного документа. Решение должно быть легковесным и запускаться на машинах без gpu.

Решение:
  1. Text Detection. Аналогично предыдущему проекту подготовили и полуавтоматически разметили согласованный с заказчиком датасет для тестирования и дообучения нейросетевых моделей. Датасет был достаточно разнообразный и покрывал все основные кейзы. Для тренировки моделей использовался искусственно сгенерированный датасет DDI-100 c дополнительным добавлением аугментаций, отвечающим кейзам заказчика.
  2. Block Detection. Для выделения блоков на изображении документы нами был построен общий эвристический алгоритм над результатами Text Detection модели, устойчивый к наклоном документа и документам разной структуры, сочетающим в себе одно- и двух- колоночные фрагменты, подписи, заголовки и т.п.. Внутри каждого блока происходила построчная нумерация слов, с дополнительной фильтрацией на случай ошибок модели Text Detection. Для оценка качества Block Detection также использовался специально подготовленный датасет, включающий в себя различные варианты изображений для каждого документа для тестирования воспроизводимости подхода.
  3. Baselines. Для базовых линий также использовался нейросетевой подход. Модели были обучены на подсете DDI-100, с дополнительной, автоматически размеченной информацией о базовых линиях слов.

Результат: 
Для Text Detection использовалась метрика F1-score (IOU с высоким порогом для отнесения бокса к TP) и визуальная оценка качества. Для Block Detection оценивался F1-score по правильному отнесению боксов слов в блоки.

Технологии:
Numpy, pandas, sklearn, torch, Я.Толока.
Основные архитектуры моделей, которые были использованы в данном проекте основывались на Unet и Stacked Unet. Также были протестированы архитектуру PSP-Net и HRNet