Sobes.tech
Back to questions
Middle — Senior
14

Какие модели распознавания строк (CRNN, TrOCR)?

Companies where asked
GravityField
VisionLabs

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

CRNN и TrOCR — это два популярных подхода к распознаванию текста на изображениях, но они решают задачу по-разному. CRNN — классическая гибридная модель: CNN извлекает признаки, а RNN/CTC декодирует последовательность символов. TrOCR — трансформерный подход, где распознавание формулируется как задача sequence-to-sequence, обычно с сильной зависимостью от предобучения.

Определение:

CRNN (Convolutional Recurrent Neural Network) — модель для распознавания строк, которая сначала превращает изображение текста в последовательность признаков с помощью сверточной сети, а затем обрабатывает эту последовательность рекуррентной сетью, чтобы получить символы. Обычно такие модели обучают с CTC-loss, что позволяет не размечать границы каждого символа.

TrOCR (Transformer OCR) — модель OCR, построенная на трансформерах. Она рассматривает распознавание текста как генерацию строки: encoder кодирует изображение, decoder поэтапно предсказывает символы текста. Такой подход обычно лучше работает на сложных шрифтах и разнообразных данных, особенно при хорошем предобучении.

Пример использования:

CRNN часто применяют в классическом OCR для печатного текста, номеров, чеков и простых документов, где важны скорость и относительная простота. TrOCR удобен, когда нужно повысить качество распознавания на более сложных документах, рукописном тексте или шумных изображениях.

# Концептуальный пример: выбор модели под задачу OCR

if task == "быстрое распознавание печатных строк":
    model = "CRNN"
    # CNN -> признаки по изображению
    # RNN + CTC -> последовательность символов
else:
    model = "TrOCR"
    # Transformer encoder-decoder -> генерация текста

Пояснение кода:

Код здесь нужен только для иллюстрации выбора подхода, а не для полноценной реализации OCR.
Если задача простая и важна скорость, выбирают CRNN: изображение преобразуется в последовательность признаков, затем модель предсказывает текст без явного выравнивания символов.
Если задача сложнее и есть ресурсы на более тяжелую модель, выбирают TrOCR: изображение кодируется трансформером, а декодер последовательно генерирует строку.

Ключевые моменты:

  • CRNN — это CNN для признаков + RNN для последовательности, часто с CTC-loss.
  • TrOCR — трансформерный encoder-decoder подход к OCR, где текст генерируется как последовательность токенов.
  • CRNN обычно проще, быстрее и легче в продакшене.
  • TrOCR часто дает лучшее качество на сложных данных, но обычно требует больше вычислений.
  • Для CRNN важно хорошее выравнивание признаков по ширине изображения, для TrOCR — качество предобучения и декодирования.
  • Выбор зависит от компромисса между скоростью, качеством и сложностью текста.