Как с помощью NLP распознавать текст на изображениях?
Что проверяют
Прежде всего, заметите ли вы подвох. Распознавание текста на картинке это задача компьютерного зрения, а NLP подключается после OCR или работает внутри мультимодальных моделей. Следом спрашивают, как вы оцениваете качество и что делать с плохими сканами.
Как отвечать
Опишите конвейер по стадиям:
- предобработка: выравнивание наклона, бинаризация, увеличение мелкого текста, для фото ещё поиск границ и исправление перспективы в OpenCV;
- детекция: где на изображении строки и слова, модели вроде DBNet или CRAFT;
- распознавание: вырезанная строка превращается в символы. Классика это CRNN с CTC-декодированием, современнее трансформерный TrOCR;
- структура: порядок чтения, таблицы, поля формы. Для документов берут LayoutLM-подобные модели или Donut, которому отдельный OCR не нужен;
- NLP-постобработка: исправление ошибок языковой моделью, доменные словари, извлечение сущностей (NER), нормализация дат и сумм.
Из инструментов: Tesseract (с 4-й версии движок на LSTM, русский через lang='rus+eng', сегментация страницы через --psm), EasyOCR, PaddleOCR, docTR. Многие задачи сейчас закрывают мультимодальные LLM, которые читают документ целиком и отдают JSON, но они дороже и иногда «додумывают» текст, которого на картинке нет.
Качество распознавания меряют через CER и WER, долю ошибок на уровне символов и слов. Детекцию оценивают precision и recall по пересечению рамок (IoU), извлечение полей считают по каждому полю отдельно.
Где спотыкаются
Отвечают «pytesseract, потом NLTK убирает стоп-слова». Стоп-слова к распознаванию отношения не имеют и портят результат, если нужен сам текст.
Бездумно размывают изображение перед OCR. Гауссово размытие убирает шум, но на мелком шрифте сливает буквы.
Не проверяют модель на своих данных. Отличная на печатном английском, на рукописном русском или мятых чеках она может дать CER в десятки процентов, и узнать это нужно до выбора инструмента.