Что такое OCR простыми словами
Кратко:
- OCR (Optical Character Recognition, оптическое распознавание символов) превращает буквы, нарисованные пикселями на картинке, в текст, который можно выделить, скопировать и найти поиском.
- Классический OCR-движок сравнивает форму каждого знака с эталоном и не понимает, что читает, — отсюда путаница нуля с буквой «О» и рассыпающийся курсив.
- Мультимодальная нейросеть достраивает спорное место по смыслу фразы, поэтому вытягивает плохой снимок и почерк, но не собирает файл с сохранённой вёрсткой.
- Блик, наклон камеры и тень поперёк строки портят результат сильнее, чем выбор инструмента.
OCR — это способ заставить компьютер прочитать то, что нарисовано на картинке. Текст на фотографии, скриншоте или скане для машины не текст вовсе: это набор точек разного цвета. Человек видит слова, машина — пиксели. Работа OCR в том, чтобы найти в этих пикселях буквы и вернуть их символами, с которыми уже можно что-то делать: копировать, искать, править, отдавать другой программе.
Технология старше, чем кажется. Первую читающую машину запатентовал Густав Таушек ещё в 1929 году, задолго до компьютеров в нынешнем понимании (история вопроса — в обзоре Биорг). С тех пор менялся в основном способ, которым система решает, какая перед ней буква.
Как машина находит буквы на картинке
Системы устроены по-разному, но последовательность у большинства примерно одна.
- Обработка снимка. Изображение выравнивают, поднимают контраст, гасят шум, отделяют страницу от фона. Здесь же чинится перспектива, если кадр снят под углом.
- Разметка страницы. Система решает, где текст, где иллюстрация, где таблица и в каком порядке читать колонки. Именно на этом шаге газетная полоса чаще всего «съезжает»: порядок колонок восстанавливается неверно, и текст перемешивается.
- Распознавание знаков. Найденный фрагмент сопоставляется с тем, что система знает о буквах. Классический движок работает с формой отдельного символа, современный — со словом или строкой целиком.
- Сборка результата. Символы склеиваются в слова, слова — в строки и абзацы. Подключается словарь: если получилось «догвор», система понимает, что такого слова нет, и правит.
Четвёртый шаг объясняет, почему распознавание связного текста получается заметно точнее, чем распознавание таблицы с артикулами. У связного текста есть словарь и грамматика, на которые можно опереться. У номера накладной нет ничего: любая комбинация цифр одинаково правдоподобна, проверить её не по чему.
Отсюда же главное практическое правило: цифры, даты, суммы и номера документов проверяют глазами всегда, каким бы инструментом их ни распознавали.
Почему почерк даётся машине тяжелее печати
Печатный шрифт — это конечный набор одинаковых форм. Буква «а» в книге выглядит одинаково на первой и на трёхсотой странице, и таких форм в кегле ровно столько, сколько знаков в алфавите. Распознавание в этом случае близко к задаче поиска по образцу.
С почерком всё иначе. Одна и та же буква у одного и того же человека может выглядеть по-разному в начале и в конце строки — в зависимости от того, торопился он, чем писал и куда упирался локтем. Буквы сливаются, «п» и «н» различаются одним наклоном, а половина слова вообще пишется одной непрерывной линией, в которой не видно границ между знаками. Сравнивать тут не с чем: эталона нет.
Для рукописного ввода в отрасли даже завели отдельное имя — ICR, intelligent character recognition. Разница тут содержательная: обычный OCR ищет форму знака, а ICR вынужден восстанавливать слово по соседям, потому что по форме оно неопределимо.
Практическое следствие простое. Связная рукописная страница читается лучше, чем список отдельных слов, написанных тем же почерком: у связного текста есть соседи, по которым восстанавливается спорное место. А одиночная подпись под фотографией или помета на полях остаётся самым трудным случаем — контекста нет. Задача эта настолько отдельная, что под неё имеет смысл брать отдельный инструмент: распознавание рукописного текста работает по другим правилам, чем чтение печатной страницы.
Три способа распознать текст и зона силы каждого
Обзоры OCR обычно написаны про корпоративный поток документов: банк, страховая, архив. Частному человеку это мало что даёт, потому что выбирать ему приходится из другого набора. Реально под рукой три варианта, и ни один из них не лучше остальных во всём.
Классические OCR-программы. Типичный представитель класса — ABBYY FineReader, но принцип общий для всех: программа обрабатывает многостраничные документы, восстанавливает вёрстку и отдаёт готовый файл. Это её зона силы и одновременно причина существования: если нужно превратить двести отсканированных страниц в редактируемый документ с сохранённым макетом, конвертер справится с этим быстрее любого диалога с моделью. Слабость там же, где у любого посимвольного разбора: кривой кадр, текст поверх фона, почерк.
Встроенные сканеры. Умная камера в приложении «Яндекс» распознаёт печатный текст со снимка, переводит надписи и умеет сохранять документ в PDF, TXT или картинку — что именно она делает, описано в справке Яндекса. На iPhone похожую роль играет «Живой текст»: он подсвечивает текст прямо в приложении «Фото», и слова можно выделить пальцем, как в обычном документе. Ничего устанавливать не нужно, работает мгновенно — это лучший способ выхватить строку с вывески, цену с ценника или адрес с экрана. Дальше начинаются границы: длинный документ, сложная вёрстка и любое неочевидное место такому сканеру не по зубам, а спросить его не о чем — он ничего не объясняет.
Мультимодальные нейросети. Модель видит изображение и понимает содержание одновременно, поэтому спорный знак достраивает по смыслу фразы, а не по форме. Это выигрывает ровно там, где остальные два подхода буксуют: снимок с рук, блик поперёк строки, мелкий шрифт, рукопись, страница, где термины и формулы идут вперемешку. Взамен нейросеть не умеет того, что для конвертера базово: она не собирает файл, не сохраняет макет один в один и не годится для пакетной обработки сотни сканов.
| OCR-программа | Сканер в телефоне | Нейросеть | |
|---|---|---|---|
| Сильна на | многостраничном печатном документе, пакете файлов, сохранении вёрстки | коротком фрагменте здесь и сейчас: вывеска, ценник, строка с экрана | плохом снимке, почерке, смешанном тексте, вопросах по содержимому |
| Спотыкается на | почерке, кривом кадре, тексте поверх фона | длинном документе, сложной вёрстке, спорных местах | пакетной обработке, точной вёрстке, выгрузке файла |
| Что на выходе | файл с текстовым слоем | текст в буфере обмена | текст в чате, с которым можно продолжить работу |
| Сколько стоит времени | установка и настройка | нисколько, уже в телефоне | нисколько, работает в браузере |
Выбор сводится к одному вопросу: что вам нужно от результата. Нужен документ — берите конвертер. Нужна одна строка прямо сейчас — хватит телефона. Нужно разобраться в том, что на снимке, или снимок плохой — здесь выигрывает модель, которая понимает содержание.
Что в снимке ломает распознавание
Инструмент влияет на результат меньше, чем качество кадра. Причём каждая типичная ошибка съёмки ломает распознавание по своей причине, и понимание этой причины экономит вторую попытку.
Блик уничтожает контраст между буквой и бумагой. Там, где прошла засветка, символа для системы просто нет — не «плохо видно», а нет вовсе. Вспышка в упор гарантирует блик ровно по центру страницы, то есть по тексту.
Наклон камеры искажает пропорции знаков. Буквы в дальней части кадра сжимаются, строки перестают быть параллельными, и разметка страницы — второй шаг из тех, что описаны выше, — начинает разбивать текст неверно. Часть систем умеет выправлять перспективу, но у любой коррекции есть предел.
Тень от собственной руки или телефона создаёт границу яркости поперёк строки. Система принимает эту границу за элемент изображения и пытается что-то с ней сделать, обычно во вред.
Расфокус и низкое разрешение размывают границы между знаками. «Ш» и «Ill», «сл» и «м» отличаются несколькими пикселями, и когда этих пикселей нет, различить их нельзя ни по форме, ни по контексту.
Обрезанный край восстановлению не подлежит вообще. Чего нет на снимке, того не будет и в тексте, — при этом система обычно не сообщает о пропаже, а просто отдаёт то, что попало в кадр.
Проверка перед отправкой занимает секунду: увеличьте снимок и посмотрите на самое мелкое место. Если вы сами не разбираете там буквы, машина тоже не разберёт — вопрос только в том, честно ли она об этом скажет.
Что меняется, когда снимок читает нейросеть
Заметнее всего разница проявляется уже после распознавания. Конвертер отдаёт файл и на этом заканчивает работу: дальше вы открываете документ и разбираетесь сами. Модель возвращает текст в диалог, и распознавание становится первым шагом работы, а не её концом.
На практике это значит, что задачу можно ставить целиком, а не по частям. Не «распознай чек», а «выпиши из чека позиции и суммы таблицей». Не «прочитай договор», а «дай стороны, сумму и срок». Не «распознай страницу», а «прочитай мелкий шрифт внизу и объясни, что он означает». Спорные места модель помечает как неразборчивые вместо того, чтобы поставить правдоподобный вариант, — и это полезнее гладкого текста, в котором подставлена наугад цифра суммы.
Попробовать можно на своём снимке: отправьте фотографию, скриншот или страницу PDF в распознавание текста с картинки — текст вернётся в чат, откуда его можно скопировать и сразу продолжить работу. Одного стоит ожидать заранее: файла Word на выходе не будет, текст копируется из чата руками.
Четыре ситуации и подходящий инструмент
Архив сканов, который нужно оцифровать целиком. Двести страниц с сохранением макета — задача конвертера, а не диалога с моделью. Нейросеть здесь проиграет по скорости и не отдаст файл.
Строка с экрана или с вывески. Телефон в руке уже умеет это делать: Умная камера на Android, «Живой текст» на iOS. Открывать что-то ещё ради одной фразы смысла нет.
Плохой снимок документа, присланный по почте. Тот случай, где посимвольный разбор рассыпается, а понимание содержания вытягивает. Сюда же попадает всё смешанное: распознать текст с фотографии стоит нейросетью, если на странице формулы, таблица и текст одновременно.
Снимок, с содержимым которого надо что-то сделать. Если на фото задача из учебника — нужен не текст, а решение, и это решение задачи по фото. Если на фото прайс или ведомость и результат нужен структурой — таблицы и Excel. Если текст на снимке иностранный, распознавание и перевод лучше разделить на два шага: сначала прочитать как есть, потом отправить результат в перевод с английского на русский. Так видно исходную фразу и заметно, если модель что-то додумала.
Частые вопросы
Чем OCR отличается от ICR? OCR работает с печатным текстом, ICR (intelligent character recognition) — с рукописным. Разница лежит в самой постановке задачи. У печатного шрифта конечный набор форм, и знак опознаётся по форме. У почерка эталона нет, поэтому слово приходится восстанавливать по соседям и по смыслу. Из-за этого система, отлично читающая книгу, может не справиться с тетрадью, и наоборот. В обиходе аббревиатурой OCR называют оба случая, хотя механики за ними стоят разные.
Почему распознавание путает ноль с буквой «О», а единицу с «l»? Потому что классический движок сравнивает форму знака с эталоном и не понимает смысла того, что читает. Формы у этих пар почти совпадают, а разница между ними лежит в контексте: в артикуле скорее ноль, в фамилии скорее «О». Системе, которая работает посимвольно, этот контекст недоступен. Модель, читающая фразу целиком, ошибается на таких парах реже — но и она беззащитна там, где контекста нет в принципе, то есть в тех же номерах и суммах.
Что такое текстовый слой в PDF и как понять, нужно ли распознавание? Текстовый слой — это символы, записанные в файл отдельно от изображения страницы. Если он есть, текст выделяется мышкой и находится поиском, а распознавание не нужно вовсе. Если PDF собран из фотографий или сканов, слоя нет: страница внутри — картинка. Проверить можно на глаз, попробуйте выделить строку. Не выделяется, значит перед вами скан, и текст оттуда достаётся только распознаванием.
Почему «Живой текст» на айфоне иногда не находит текст на фотографии? Чаще всего функция просто выключена: тумблер живёт в «Настройках» в разделе «Основные» → «Язык и регион». Если она включена, а текст всё равно не подсвечивается, дело обычно в самом снимке — мелкий шрифт, наклон, блик или язык, который система не поддерживает. Встроенные сканеры рассчитаны на короткий и чёткий фрагмент; когда снимок сложный, надёжнее отправить его туда, где распознавание опирается на смысл, а не только на форму букв.
