OCR (optical character recognition) — превращение изображения текста в строку символов. На выходе, помимо самих символов, обычно есть координаты каждого слова и оценка уверенности. Именно на этом строится поиск по скриншотам: искать по картинке нельзя, по распознанному тексту — можно.
#Что определяет качество
Порядок важности примерно такой:
- Разрешение исходника. Для сканов ориентир — около 300 dpi. Для скриншотов правило другое: снимайте в исходном масштабе и не уменьшайте. Уменьшенный вдвое скриншот теряет мелкий интерфейсный текст безвозвратно.
- Кегль в пикселях. Ниже примерно 10–12 пикселей высоты строчной буквы точность начинает заметно падать — на любом движке.
- Языковой пакет. Русский текст без загруженной русской модели распознаётся как набор латинских символов. Для смешанного текста нужны оба языка сразу — в Tesseract это
-l rus+eng. - Контраст и тема. Светлый текст на тёмном фоне часть движков обрабатывает хуже; помогает инверсия перед распознаванием.
- Разметка страницы. Колонки, таблицы и текст поверх изображений сбивают порядок строк — не сами символы, а их последовательность.
#Главная беда на русском: смешение алфавитов
Кириллица и латиница содержат неразличимые на глаз пары: с/c, о/o, е/e, а/a, р/p, х/x, у/y, к/k, В/B, Н/H, М/M, Т/T. Движок регулярно выбирает не ту букву — особенно в коротких словах и в верхнем регистре.
Последствие не косметическое. Слово «сервер», в котором «с» оказалась латинской, выглядит правильно, но не находится по запросу «сервер» — ни точным совпадением, ни полнотекстовым индексом, потому что это другая строка байтов. Архив на десятки тысяч скриншотов может содержать тысячи таких молчаливо непоисковых слов.
Что с этим делать: нормализовать текст после распознавания — заменять одиночные латинские буквы внутри кириллических слов — и падать в поиск по подстроке, если точное совпадение ничего не дало. Практика — в разборе особенностей поиска по OCR-тексту.
| Типовая ошибка | Как выглядит | Чем лечится |
|---|---|---|
| Смешение алфавитов | «сервер» с латинской «c» | нормализация после распознавания |
| Ошибки цифр | 0 вместо O, 1 вместо l | контекстные правила, словарь |
| Слипание строк | две строки в одну | коррекция разметки страницы |
| Мусор из иконок | случайные символы | порог уверенности, фильтр коротких фрагментов |
#Где путают
Заблуждение первое: OCR понимает текст. Не понимает. На выходе символы и координаты, без смысла и без структуры. Смысл добавляет уже языковая модель, которой скормили распознанное.
Заблуждение второе: современная модель зрения заменила OCR. Для смысла — часто да, для точного текста — нет. На нечитаемом фрагменте распознавание выдаст видимый мусор, а модель зрения — правдоподобно выдуманную строку. Для архива, по которому потом ищут, второе хуже; сравнение подходов — в справке про мультимодальность.
Заблуждение третье: распознавание всего экрана безопасно, раз это мой экран. На экране регулярно оказывается чужое: переписка, документы коллег, персональные данные. Что из этого попадает в архив и как это ограничивать — в разборе записи экрана как памяти ИИ и в правилах редактирования и исключений при распознавании.
#Частые вопросы
#Почему распознанный текст ищется хуже, чем набранный руками?
Из-за смешения алфавитов, ошибок в отдельных символах и слипшихся строк. Поиск по точному совпадению на таком тексте работает плохо; нужен либо поиск по подстроке, либо нормализация при индексации.
#Насколько OCR нагружает компьютер?
Классические движки заметно легче языковых моделей и работают на процессоре. Нагрузка возникает не от одного распознавания, а от их количества: непрерывный захват экрана — это десятки тысяч распознаваний в день.
#Можно ли распознавать текст только в нужной области экрана?
Можно, и это стоит делать: быстрее и меньше лишнего в архиве. Ограничение области — простейший способ снизить объём случайно захваченного.
#Что делать с рукописным текстом?
Классические движки распознают его плохо. Здесь как раз уместнее модель зрения — что доступно локально, разобрано в обзоре vision-моделей локально. Оговорка та же: проверяйте результат, потому что такая модель додумывает неразборчивое, а не помечает его как нечитаемое.
Остальные термины — в глоссарии терминов ИИ.