Какие подходы применимы для распознавания текста на изображениях?
Распознавание текста на изображениях (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 сегодня — это не просто "чтение символов", а комплексная система из детекции, распознавания, коррекции и логической обработки. Современные модели способны справляться с разными шрифтами, языками, рукописью и структурой документа, опираясь на мощные архитектуры и синтетические данные.