Распознавание текстаНейросети и технологии

OCR (оптическое распознавание символов): что это и как работает

OCR — технология, которая превращает изображение текста на фото, скане или в PDF в символы: их можно копировать, искать по документу и править в редакторе.

Определение

OCR (optical character recognition, оптическое распознавание символов) — это чтение букв и цифр с изображения программой. Она находит на картинке строки, распознаёт в них символы и собирает связный текст. До OCR скан или фото страницы — только пиксели; после него по документу работают поиск, копирование и правка.

Также называют

  • OCR
  • оптическое распознавание символов
  • оптическое распознавание текста
  • optical character recognition
  • распознавание текста

OCR, скан и текстовый PDF: в чём разница

Скан и фотография фиксируют страницу как картинку, а OCR извлекает из этой картинки текст. Один и тот же документ может храниться в нескольких видах, и от вида зависит, нужно ли распознавание вообще.

Что у васЧто внутри файлаНужно ли распознавание
Фото страницы или скриншотТолько пикселиДа
PDF-сканКартинки страниц в оболочке PDFДа
PDF, сохранённый из Word или с сайтаСимволы и шрифтыНет, текст уже копируется
PDF после распознаванияКартинка страницы и невидимый текстовый слой под нейНет, распознавание уже сделано

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

В узком смысле OCR — распознавание печатных символов: типографских шрифтов, машинописи, текста на экране. Почерк — отдельная задача. Для букв, написанных от руки по клеточкам анкеты, используют термин ICR (intelligent character recognition), для связной рукописи — HTR (handwritten text recognition). Буквы в рукописи соединены, наклон и начертание у каждого человека свои, поэтому движки, обученные на печатном тексте, с почерком справляются плохо.

Как работает распознавание: от пикселей к строкам текста

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

  1. Предобработка. Изображение выравнивают по горизонтали, убирают перспективу и шум, иногда переводят в чёрно-белое, чтобы отделить буквы от фона. Этот шаг называют бинаризацией.
  2. Анализ макета. Страницу делят на блоки: колонки, заголовки, таблицы, иллюстрации, колонтитулы. Здесь же решается, в каком порядке блоки читать.
  3. Распознавание строк. Каждую строку либо режут на отдельные символы, либо читают целиком, сопоставляя начертания с тем, чему модель научилась.
  4. Постобработка. Словарь или языковая модель правит маловероятные сочетания: «прнвет» становится «привет», «1О» в середине числа — «10».
  5. Сборка результата. Текст сохраняют как простой текст, как документ с разметкой или как невидимый слой поверх картинки в PDF.

Самый хрупкий этап — анализ макета. Если программа ошиблась с порядком чтения, текст из двух колонок перемешается построчно, хотя каждое слово распознано верно. Второй по важности — предобработка: она работает с тем, что дал сканер или камера. Для обычного кегля привычный ориентир — скан с плотностью 300 точек на дюйм; чем отличаются точки печати от пикселей экрана, объясняет термин DPI и PPI.

Шаблонный OCR и распознавание текста нейросетью

Ранние системы OCR сравнивали каждый символ с эталонами или с набором признаков: числом штрихов, замкнутых контуров, пропорциями. Современные движки читают строку целиком нейросетью и учитывают соседние буквы, поэтому лучше справляются с плотным, мелким и нестандартным шрифтом.

Пример перехода — открытый движок Tesseract. Его начинали в HP, позже он развивался при участии Google, а с четвёртой версии распознаёт строки рекуррентной нейросетью LSTM. Следующее поколение — модели, которые смотрят на страницу целиком и сразу восстанавливают структуру документа: где заголовок, где список, где таблица.

ПризнакШаблонный подходНейросеть
Как читаетПо отдельным символамСтроку или страницу целиком
ШрифтыТиповые и чёткиеРазные, в том числе мелкие и плотные
Что на выходеОбычно плоский текстТекст со структурой: заголовки, списки, таблицы
Как выглядит ошибкаЯвный мусор вместо буквИногда правдоподобное, но неверное слово

Последняя строка таблицы важна на практике. Модель, которая генерирует текст, на неразборчивом месте может подставить уверенно выглядящее слово вместо честного пропуска. Поэтому реквизиты, суммы и фамилии вычитывают после любого OCR.

По такой схеме работает распознавание текста с фото, сканов и PDF в PhotoPanda: печатный текст распознаётся на собственных GPU в России, результат приходит в формате Markdown с заголовками, списками и таблицами, а скачать его можно в DOCX, PDF, Markdown или TXT. Многостраничный PDF до 50 страниц собирается в один документ.

Где нужно распознавание текста при работе с фото и документами

OCR нужен везде, где текст существует только как картинка, а работать с ним нужно как с текстом: править, искать, цитировать, переносить в таблицу.

  • Сканы договоров, актов, методичек. Без распознавания их можно только перепечатать вручную.
  • PDF без текстового слоя. Архив таких файлов не ищется по словам, пока страницы не прошли OCR.
  • Скриншоты. Слайд, интерфейс программы или переписка, из которых текст нельзя скопировать.
  • Фото страниц книги, объявления, таблички. Сфотографировать быстрее, чем набрать.
  • Сканеры и МФУ с функцией OCR. Драйвер или программа устройства сразу сохраняет скан в PDF с поиском или в редактируемый файл.
  • Оцифровка архивов. Сотни страниц обрабатывают пакетами, а распознанный текст складывают в базу для поиска.

Для фото с телефона половина успеха — съёмка: ровный свет, камера параллельно листу, страница целиком в кадре. Подробно эти правила и путь от снимка до файла Word описаны в статье фото в текст: как распознать текст с фото. Если в документах есть персональные данные, заранее проверьте, где сервис их обрабатывает и сколько хранит, — у PhotoPanda сроки хранения исходников и результатов описаны на странице обработки данных.

Откуда берутся ошибки распознавания и как их избежать

Большинство ошибок OCR — следствие плохого исходника, а не слабого движка. Программа распознаёт то, что видно: если букву трудно прочитать человеку, машина ошибётся тем более.

ПричинаКак проявляетсяЧто сделать
Низкое разрешениеБуквы слипаются, «rn» читается как «m»Сканировать с 300 dpi, мелкий шрифт — с 400–600 dpi
Сильное сжатиеОреолы и «грязь» вокруг буквБрать исходник без пересжатия в мессенджере
Наклон и перспективаСтроки рвутся, слова меняются местамиСнимать сверху, выравнивать скан
Блик или теньПропадают слова и целые строкиРассеянный свет, матовая поверхность
Колонки и врезкиСтроки соседних колонок смешиваютсяПроверять порядок абзацев после распознавания
Похожие символы0 и О, 3 и З, латинская «о» вместо русскойВычитывать номера, коды и суммы

Про сжатие стоит знать чуть больше: блочные искажения и ореолы вокруг контрастных границ описаны в термине JPEG артефакты. На тексте они особенно заметны, потому что буквы — это как раз тонкие контрастные линии.

Отдельная ловушка — смешение алфавитов. Латинская «о» внутри русского слова на глаз неотличима, но поиск по документу такое слово не найдёт, а проверка орфографии подчеркнёт его как ошибку. Если документ потом будут искать по словам, прогоните его через проверку орфографии.

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

FAQ

Вопросы и ответы

Что значит функция OCR в сканере или МФУ?

Это распознавание текста, которое выполняет программа самого устройства или его драйвер сразу после сканирования. Без этой функции сканер сохраняет страницу как картинку: JPEG или PDF, внутри которого лежит изображение. С включённой функцией OCR программа дополнительно читает буквы и сохраняет результат в PDF с поиском, где под картинкой страницы спрятан текстовый слой, или в редактируемый текстовый файл. Качество такого распознавания зависит от программы, которая идёт с устройством: одни хорошо работают только с английским текстом, другие поддерживают русский, третьи теряют таблицы. Поэтому полезно проверить результат на одной типичной странице, прежде чем сканировать стопку документов. Если встроенная функция справляется плохо, страницы можно сохранить обычным сканом в PDF и распознать отдельной программой или онлайн-сервисом: исходник при этом не меняется, а вариантов обработки становится больше.

Что такое PDF с OCR и как понять, распознан ли файл?

PDF с OCR — это файл, в котором поверх или под изображением страницы лежит текст, полученный распознаванием. Внешне он выглядит как обычный скан, но слова в нём можно выделить, скопировать и найти поиском по документу. Такой формат часто называют PDF с текстовым слоем или PDF с поиском. Понять, распознан ли файл, можно за несколько секунд: откройте его в любой программе для просмотра PDF и попробуйте выделить одно слово или найти его через поиск. Если выделяется отдельное слово и поиск его находит, текстовый слой есть. Если выделяется вся страница целиком, как рисунок, а поиск ничего не находит, перед вами чистый скан, и для работы с текстом его нужно распознать. Бывают и смешанные файлы, где часть страниц текстовая, а часть отсканирована и вставлена картинками, поэтому проверяйте несколько страниц из разных мест документа, а не только первую.

Чем Tesseract OCR отличается от нейросетевых сервисов распознавания?

Tesseract — открытый движок распознавания текста, который можно установить на свой компьютер и запускать из командной строки или через программы-оболочки. Его история началась в HP, позже он развивался при участии Google, а начиная с четвёртой версии распознаёт строки нейросетью LSTM, то есть тоже относится к нейросетевому OCR. Сильные стороны Tesseract — бесплатность, работа без интернета и наборы моделей для многих языков, в том числе для русского. Слабая сторона — структура документа: на выходе обычно простой текст, разметка hOCR или PDF с текстовым слоем, а таблицы и заголовки приходится восстанавливать вручную. Кроме того, ему нужна аккуратная предобработка: ровный скан, достаточное разрешение, чистый фон. Сервисы, построенные на более новых моделях, смотрят на страницу целиком и возвращают текст со структурой — с заголовками, списками и таблицами. Выбор зависит от задачи: для автоматизации на своём сервере подходит Tesseract, для разовой работы с документами удобнее готовый сервис.

Распознаёт ли OCR рукописный текст?

Классический OCR рассчитан на печатный текст, и с рукописью он справляется плохо. Почерк — отдельная задача: буквы соединены, у каждого человека свой наклон и свои сокращения, одна и та же буква в разных словах выглядит по-разному. Для неё используют другие термины и модели: ICR для отдельных букв, вписанных по клеточкам в анкеты и бланки, и HTR для связной рукописи, например писем и дневников. Даже специализированные модели на неразборчивом почерке ошибаются заметно чаще, чем на печатной странице, поэтому результат всегда приходится сверять с оригиналом. Распознавание текста в PhotoPanda работает только с печатным текстом с фото, сканов и PDF. Если в документе есть рукописные пометки на полях, подписи или вписанные от руки даты, рассчитывайте, что эти фрагменты придётся перенести в текст вручную, а печатную часть страницы можно распознавать как обычно.

Какое разрешение скана нужно для OCR?

Привычный ориентир для документов с обычным кеглем 10–12 пунктов — 300 точек на дюйм. При таком разрешении строчная буква занимает достаточно пикселей, чтобы движок уверенно различал похожие формы. Для мелкого шрифта, например сносок, примечаний и текста в таблицах, лучше поднять разрешение до 400–600 точек на дюйм. Сканировать сразу с очень высоким разрешением без нужды не стоит: файл растёт в несколько раз, а выигрыша в точности на обычном тексте почти нет. Для фото с телефона считают не точки на дюйм, а то, насколько крупно текст получился в кадре: страница должна заполнять кадр целиком, а буквы — оставаться резкими при увеличении. Режим цвета тоже влияет: оттенки серого обычно надёжнее чисто чёрно-белого режима, в котором тонкие штрихи букв могут пропасть. Если сомневаетесь, отсканируйте одну страницу с двумя настройками и сравните результат распознавания.

Почему после OCR буквы путаются с похожими символами?

Движок распознаёт начертание, а у многих символов оно почти одинаковое: цифра 0 и буква О, цифра 3 и буква З, единица, строчная l и заглавная I, сочетание rn и буква m. На чётком скане модель различает их по мелким деталям и по контексту, а на размытом снимке или после сильного сжатия детали пропадают, и остаётся только догадка. Отдельная проблема — алфавиты: русская и латинская буквы о, а, е, с, р выглядят одинаково, и в слове может оказаться латинская буква. На экране этого не видно, но поиск такое слово не найдёт. Постобработка со словарём часть ошибок исправляет, но может и навредить: редкую фамилию или артикул она способна заменить похожим словарным словом. Поэтому после распознавания вычитывайте всё, что словарь не проверит: номера договоров, суммы, даты, коды, фамилии и названия, а для поиска латиницы внутри русских слов включите проверку орфографии.

Сохраняет ли OCR таблицы и форматирование документа?

Зависит от движка. Простые программы возвращают плоский текст: таблица превращается в строки чисел через пробел, а заголовки ничем не отличаются от абзацев. Движки с анализом макета восстанавливают структуру: определяют заголовки, абзацы, списки и границы ячеек таблиц. Но даже они передают именно структуру, а не вёрстку: шрифты, цвета, точные отступы, ширина колонок и положение блоков на странице в результат не переносятся. Печати, подписи и иллюстрации — часть изображения страницы, а не текста, поэтому исходный скан полезно хранить рядом с распознанным документом. В PhotoPanda результат распознавания приходит в формате Markdown с заголовками, списками и таблицами, а скачать его можно в DOCX для Word, в PDF, Markdown или TXT. Таблицы с объединёнными ячейками и многоуровневыми шапками проверяйте глазами в любом случае, особенно если по ним потом считают суммы.

Что такое шрифт OCR-B?

OCR-B — шрифт, нарисованный специально для машинного чтения. Его символы сделаны так, чтобы программа не путала похожие знаки: ноль отличается от буквы О, единица от строчной l, у каждой цифры своя чёткая форма. При этом шрифт остаётся удобным и для человека, в отличие от более раннего OCR-A с подчёркнуто техническими, угловатыми знаками. OCR-B встречается в машиночитаемых строках документов и в цифрах под штрихкодами товаров. Отсюда и запросы вроде OCR-B type 1: это варианты начертания в наборах шрифтов. Для обычного распознавания документов знать про такие шрифты не нужно: современный OCR читает и привычные шрифты вроде Times или Arial. Но если вы готовите бланк или этикетку, которые потом будут считывать автоматически, машиночитаемые поля разумно набирать шрифтом, созданным для этой задачи, и не уменьшать его кегль сверх необходимого.

Автор материала

Мария Лебедева

Редактор блога PhotoPanda

Редактор блога PhotoPanda. Пишет об обработке фото, нейросетях для изображений и подготовке снимков для маркетплейсов, документов и печати. Инструкции проверяет на реальных фотографиях в PhotoPanda.

Все материалы автора