Какие подходы применимы для распознавания текста на изображениях?

Распознавание текста на изображениях (Optical Character Recognition, OCR) — это задача извлечения символьной информации из растровых изображений. В компьютерном зрении она делится на два основных этапа: детекция текста (поиск областей, содержащих текст) и распознавание текста (преобразование пикселей в символы). Современные подходы к OCR сочетают классические алгоритмы, глубокое обучение и мультимодальные методы.

1. Общая архитектура OCR-системы

A. Text Detection

Определение координат текстовых регионов (bounding box или сегментация).

B. Text Recognition

Извлечение текста из обрезанных регионов.

C. Post-processing

Коррекция ошибок, нормализация символов, приведение к единому регистру, выравнивание, проверка по словарю и т.д.

2. Text Detection: локализация текста

Классические методы

  • MSER (Maximally Stable Extremal Regions) — выделяет стабильные регионы (ближе к blob-детекции)

  • Stroke Width Transform (SWT) — анализирует толщину линий

  • Edge-based методы — контуры, градиенты, connected components

Эти методы чувствительны к освещению, шрифтам, наклону и фону.

Глубокие методы

EAST (Efficient and Accurate Scene Text detector)
  • CNN + FCN, прогнозирует score map и геометрию прямоугольников

  • Высокая скорость (реальное время)

  • Возвращает произвольные наклонные прямоугольники

CTPN (Connectionist Text Proposal Network)
  • Основан на RPN из Faster R-CNN

  • Выделяет вертикальные сегменты текста

  • Хорошо работает с текстом строкой

DBNet (Differentiable Binarization)
  • Сегментация текста с обучаемой функцией биноризации

  • Очень точная детекция криволинейного и мелкого текста

  • Используется в современных OCR-фреймворках (PaddleOCR)

PSENet (Progressive Scale Expansion Network)
  • Постепенное расширение текстовой области

  • Подходит для разреженного текста или нестандартных форм

TextSnake
  • Модель для детекции криволинейного текста

  • Использует сегментацию "по скелету" буквенной линии

DINO/DETR/GLIP + SAM
  • Последние vision-language трансформеры также применяются для Zero-shot детекции текста при поддержке prompt'ов

3. Text Recognition: расшифровка символов

A. CNN + RNN + CTC

  • Используется CNN (например, ResNet) для извлечения признаков

  • RNN (BiLSTM) обрабатывает последовательность признаков

  • CTC (Connectionist Temporal Classification) декодирует последовательность символов без фиксированной длины

Модели:

  • CRNN (Convolutional Recurrent Neural Network) — классическая структура

  • Хорошо работает со строками текста (горизонтальный текст)

B. Attention-based decoder

  • CNN-энкодер + Attention-декодер (как в Seq2Seq)

  • Учитывает контекст при распознавании каждого символа

  • Работает лучше на нерегулярном тексте

Пример:

  • ASTER, TRBA, SAR

C. Transformers-based OCR

  • Используют ViT или Swin для экстракции признаков

  • Декодер — как в NLP (decoder-only или encoder-decoder)

  • Лучше справляются с мульти-язычным и нестандартным текстом

Примеры:

  • TrOCR (Microsoft) — encoder-decoder Vision Transformer + BERT-стиль декодер

  • Donut (OCR без токенизации) — мультимодальный трансформер без CTC

  • MANGO, StrOCR, ABINet (интеграция языковых моделей)

4. End-to-End OCR

Некоторые модели совмещают детекцию и распознавание текста в одном пайплайне.

Модели:

  • Mask TextSpotter — сегментация + расшифровка

  • TextBoxes/TextBoxes++ — SSD-подобная архитектура

  • PAN (Pixel Aggregation Network) — сегментирует, а затем декодирует текст

  • SceneTextFormer — всё на базе Transformer

End-to-End OCR эффективен, но требует хорошо размеченных данных (bbox + текст) и больше ресурсов.

5. Pretrained OCR-фреймворки

Tesseract OCR

  • Open-source OCR от Google

  • Основан на LSTM

  • Работает с кириллицей, латиницей, арабским и др.

  • Поддерживает предварительное обучение на своих данных

PaddleOCR

  • Один из лучших open-source фреймворков

  • Модули детекции (EAST, DBNet, SAST) и распознавания (CRNN, SRN)

  • Поддерживает 80+ языков, в т.ч. казахский, узбекский, русский

EasyOCR

  • Простой в использовании Python-пакет

  • Поддерживает более 80 языков

  • Основан на CRNN и CRAFT

MMOCR (OpenMMLab)

  • Модульная архитектура

  • Поддержка кастомных моделей, аннотаций и трансформеров

  • Подходит для исследований и продакшн

6. Data Augmentation для OCR

  • Геометрические искажения: поворот, наклон, перспектива

  • Фотометрические: размытие, шум, изменение контрастности

  • Background noise, тени, штампы

  • Добавление артефактов: морщины, грязь, перекосы (особенно в документах)

  • Blur/Low resolution для мобильных данных

Инструменты: Augraphy — генерация "грязных" текстов, Albumentations, synthText

7. Синтетические данные

Создание датасетов из шрифтов и текстов на изображениях:

  • SynthText in the Wild — генерация текста с рандомными фонами

  • TextRecognitionDataGenerator (trdg) — генератор строк и предложений

  • TextRenderer — китайский и многоязычный OCR генератор

8. Работа с многоязычными данными

  • Используйте юникодное декодирование

  • Обучение мультиязычных моделей (например, TrOCR multilingual)

  • Построение словаря или использования BPE/WordPiece

  • Распознавание письменных, готических, рукописных форм — требует кастомных моделей

9. Проблемные сценарии и решения

Проблема Решение
Малый текст Super-resolution, улучшение контрастности
--- ---
Криволинейный текст TPS (Thin Plate Spline), TextSnake, Spatial Transformer Networks
--- ---
Рукописный текст Специализированные датасеты (IAM, RIMES), CTC/Attention/TrOCR
--- ---
Текст на сложном фоне Предобработка (blur, contrast), сегментация, masking
--- ---
Вертикальный/перевёрнутый Данные + rotation-based augmentation, detection orientation
--- ---
Многострочный текст Line segmentation, sequence grouping
--- ---
Таблицы/структура документов LayoutLM, Donut, DocFormer, TableNet
--- ---

10. Метрики качества OCR

  • Character Accuracy (CER) — процент правильно распознанных символов

  • Word Accuracy (WER) — процент правильно распознанных слов

  • BLEU, ROUGE, edit distance — если OCR — часть pipeline для перевода или суммаризации

  • IOU (для детекции) — при оценке локализации текста

11. OCR на мобильных и edge-устройствах

  • Применяются облегчённые модели:

    • MobileNet + CRNN

    • Lite-HRNet

    • Tiny Transformer OCR (ViT-Tiny)

  • Использование quantization и pruning

  • ONNX/TF Lite/NCNN для вывода на устройстве

12. Модели нового поколения (2023–2025)

  • Donut — OCR без токенизации, на Vision+Text Transformer

  • TrOCR — Encoder-Decoder модель на ViT + BERT

  • LayoutLMv3 — для документов со структурой (инвойсы, формы)

  • GLIP, GIT, Flamingo — мультимодальные модели с OCR-возможностями

OCR сегодня — это не просто "чтение символов", а комплексная система из детекции, распознавания, коррекции и логической обработки. Современные модели способны справляться с разными шрифтами, языками, рукописью и структурой документа, опираясь на мощные архитектуры и синтетические данные.