Диагностика Mock-интервью
Главная · Мультимодальные модели

OCR: от классики до распознавания через LLM

Как из пикселей получить текст: классический OCR-пайплайн (бинаризация, сегментация, распознавание символов), современный DL-OCR с CRNN и CTC, и чтение документов мультимодальными LLM — с их главным риском, галлюцинациями.

Интуиция

Задача OCR (optical character recognition) звучит просто: на входе — картинка с текстом, на выходе — машиночитаемая строка. Но между «пикселями» и «буквами» — пропасть: буква на скане размазана, фон неравномерный, строка наклонена. Всю историю OCR можно рассказать как борьбу с этой пропастью тремя поколениями инструментов: правила и шаблоны → свёрточные сети → мультимодальные LLM.

Классический пайплайн (эпоха Tesseract)

Классика разбивает задачу на явные шаги:

💡 Ключевая мысль Классический OCR — конвейер из простых явных шагов, и он ровно настолько крепок, насколько крепок самый слабый шаг: плохая бинаризация ломает сегментацию, плохая сегментация делает распознавание безнадёжным.

Современный DL-OCR

Глубокое обучение убрало самые хрупкие шаги. Современный пайплайн — два этапа:

Такой стек (например, PaddleOCR, EasyOCR) быстрый, дешёвый и хорошо работает на печатном тексте даже с фото.

OCR через VLM: чтение с пониманием

Третье поколение — показать страницу мультимодальной LLM (как это устроено — в теме как LLM видят изображения). Модель «читает» документ целиком: понимает вёрстку, таблицы, поля формы, сноски, рукописные пометки — и может сразу вернуть структурированный JSON («номер счёта», «сумма», «дата»), это называется structured extraction. Не нужен ни отдельный детектор, ни правила парсинга таблиц.

Сравнение честное такое: классика и DL-OCR — быстро, дёшево, предсказуемо, отлично на чистых сканах, работает локально; VLM — понимает контекст и структуру, справляется с рукописью и сложной вёрсткой, но дороже, медленнее и галлюцинирует.

Практика: когда что выбрать

Рабочее правило — идти от документа и цены ошибки:

Гибрид «OCR + LLM-постобработка» хорош ещё и тем, что LLM видит только текст: у неё физически нет возможности «дочитать» несуществующие пиксели — худший сценарий чистого VLM-OCR устранён по построению.

⚠️ Подводный камень VLM не «считывает» пиксели, а генерирует правдоподобный текст по картинке. На смазанной цифре она не скажет «не читается» — она уверенно допишет ту, что выглядит вероятной. Для паспортов, счетов и медицинских документов это худший тип ошибки: неотличимый от правды. Классический OCR в таком месте честно выдаст мусор с низкой уверенностью — и это можно поймать.
🎤 На собеседовании
  • «Спроектируй распознавание паспортов/чеков» — пайплайн: детекция документа и полей → распознавание (классика/CRNN для печатных полей) → валидация (контрольные цифры, форматы дат, справочники) → ручная проверка при низкой уверенности. VLM — для сложной вёрстки, но с обязательной валидацией.
  • «Почему VLM-OCR опасен для критичных данных?» — галлюцинации: модель уверенно «дочитывает» нечитаемое, ошибку не видно без сверки с источником.
  • «Чем CRNN+CTC лучше посимвольной сегментации?» — распознаёт строку целиком, не требуя резать её на буквы; слипшиеся символы перестают быть проблемой.
  • «Когда достаточно Tesseract?» — чистые сканы печатного текста, большие объёмы, требования по цене/приватности (всё локально).