Как происходит распознавание текста кратко

Обновлено: 05.07.2024

В повседневной жизни мы почти перестали писать от руки, ведь у многих работа и общение связаны со смартфоном, компьютером, и куда быстрее напечатать, нежели написать ручкой или стилусом. Тем не менее, иногда эта возможность не была бы лишней. Сейчас много разговоров про искусственный интеллект, машинное обучение, и кажется, что это можно дать на откуп девайсам. В этой статье мы разберем, как работают алгоритмы распознавания рукописного текста, какие есть проблемы, ведь до сих пор ввод текста на клавиатуре считается более надежным и быстрым, чем написание с помощью стилуса.

В качестве результата распознавания мы должны получить текст в цифровом формате. Существует два вида распознавания: — онлайновый и оффлайновый. Онлайновый — распознавание текста при написании стилусом или пальцем на экране или планшете. Сразу понятно, где написано слово, а где полотно. Первым КПК, который мог распознавать рукописный текст — Apple Newton (1993 год).

Оффлайновый — распознавание уже написанного текста на бумаге. Текст предоставляется в виде скана или фотографии документа, страницы книги и т.п. Является более сложным способом, т.к. в случае онлайн-метода можно проследить процесс написания текста и на этом факте построить алгоритм распознавания. Сложность задачи распознавания рукописного текста — это большое разнообразие почерков, форм, размеров букв и многообразие языков. Так же бумага с текстом может содержать “шумы” — дефекты бумаги, посторонние пятна, что так же усложняет весь процесс.

Существует по крайней мере два подхода, которые дают приемлемый результат: с использованием скрытой марковской модели и искусственной нейронной сети (ИНС). На практике так же применяется гибридный подход с использованием одновременно двух подходов.

Подготовка включает выпрямление, пороговую бинаризацию, удаление шумов.

    — процесс отделения фона от объекта, в данном случае текст. В результате получаем чёрный текст на белом фоне.
  • Удаление шумов — удаление артефактов с изображения, не затрагивая написанный текст.

Также выполняется сегментация строк, слов, символов. Это разделение текста на строки, слова и символы, чтобы в дальнейшем распознавать их с помощью ИНС. Чем меньше строки в тексте похоже на прямые, тем хуже будет работать алгоритм сегментации на строки. Элементарная сегментация на слова работает по принципу, что расстояние между словами больше, чем между буквами.

Рассмотрим подробнее несколько из шагов.

Угол наклона — угол между вертикалью и направлением письма. Шаг выпрямления направление на то, чтобы максимально снизить этот угол.

Не во всех алгоритмах требуется сегментация. Тем не менее, рассмотрим несколько способов разбиения текста на слова.

  • Текст разбивается на составные части — компоненты и рассчитывается расстояние между их центрами. В качестве параметра алгоритма принимается какое-то пороговое значение расстояния, которое в дальнейшем можно подобрать исходя из успешности результатов.
  • Следующий подход тоже основан на расчете расстояний. С помощью метода опорных векторов находится плоскость, которая разделяет два разных типа данных (символа), а затем с помощью порогового значения текст разбивается на слова.
  • Последний подход использует несколько способов расчета расстояния между и их комбинация.

a — исходный кусок текста, b — ​ограничивающий прямоугольник, с — Евклидово расстояние, d — горизонтальное расстояние

Алгоритм поиска слова по префиксу достаточно быстрый и простой для понимания. Как можно догадаться, используется структура дерево, где рёбра — буквы, а вершина содержит признак слова. Таким образом, слово представляется в виде пути от корневого узла (первой буквы слова) через рёбра — составные буквы слова к вершине с признаком слова.

На вход классификатора может поступать как изображения отдельных слов, так и целых строк. ИНС состоит из слоёв. Именно здесь и происходит вся магия и математека: сначала используются свёрточные нейронные сети (СНС) — операции свёртки и пулинга, и рекуррентные нейронные сети (РНС), а именно один из типов типы LSTM, mdlstm, IDCN. Суть свёртки в том, что каждый фрагмент изображения умножается на матрицу (ядро) свёртки поэлементно, а результат суммируется и записывается в аналогичную позицию выходного изображения (формируется карта признаков — feature map). Операция пулинга позволяет существенно уменьшить объём изображения. Пулинг интерпретируется так: если на предыдущей операции свёртки уже были выявлены некоторые признаки, то для дальнейшей обработки настолько подробное изображение уже не нужно, и оно уплотняется до менее подробного — выполняется уменьшение размерности сформированных карт признаков. Так же конечный результат зависит от датасета — набора изображений для модели для каждой буквы разного почерка.

Текст после классификации может быть проверен на орфографию. На данном этапе в нашем распоряжении только текстовая информация без исходных графических данных. Например, текст разбивается на слова, затем проверяется на наличие в словаре. Если в словаре нет слова, но оно похоже на какое-то, предлагается вариант для исправления. Исправления можно так же тренировать параллельно от классификатора.

Максимальная точность распознавания рукописного текста на английском, результаты которого удалось найти в открытых источниках, достигает величины от 55 до 75%. Пост-обработка дает улучшение результатов в среднем на 15% для каких-то алгоритмов, а может и ухудшить результаты (до 3-6%).

Не забывайте, что большое значение имеет датасет. Каких-то данных про точность инструментов для распознавания русского языка я найти не смог. Тем не менее, на данный момент задача не выглядит нерешаемой, и при серьезном подходе к созданию модели, ее обучению, можно достигнуть высоких результатов распознавания.

Если вас заинтересовала тема глубокого обучения, советую для прочтения эту книгу. Пример реализации алгоритма для распознавания рукописного текста можно найти на GitHub, например, у этого автора.

Буквально вчера прошла 61-я студенческая научная конференция в Южном Федеральном Университете в городе Таганроге, на которой я представлял доклад по методам распознавания текста на графических изображениях. И хотелось бы поделиться этим с еще большим количеством слушателей и читателей. Кому интересно почитать про велосипеды студента-новичка в этой области, прошу под кат.
Картинки и кусочки кода присутствуют.

Немного теории

Тема распознавания текста попадает под раздел распознавания образов. И для начала коротко о самом распознавании образов.
Распознавание образов или теория распознавания образов это раздел информатики и смежных дисциплин, развивающий основы и методы классификации и идентификации предметов, явлений, процессов, сигналов, ситуаций и т. п. объектов, которые характеризуются конечным набором некоторых свойств и признаков. Данное определение нам дает Wikipedia.

  • Изучение способностей к распознаванию, которыми обладают живые существа, объяснение и моделирование их;
  • Развитие теории и методов построения устройств, предназначенных для решения отдельных задач в прикладных целях.

Итак, моя тема — это распознавание текста на графических изображениях и сейчас говорить о важности данного подраздела не приходиться. Всем давно известно, что существуют миллионы старых книг, которые хранятся в хранилищах строгого режима, доступ к которым имеет только специализированный персонал. Использование этих книг запрещено по причине их ветшалости и дряхлости, так как возможно, что они могут рассыпаться прямо в руках читателя, но знания которые они хранят, представляют, несомненно, большой клад для человечества и поэтому оцифровка этих книг столь важна. Именно этим в частности занимаются специалисты в области обработки данных.

  • Сравнение с заранее подготовленным шаблоном;
  • Распознавание с использованием критериев, распознаваемого объекта;
  • Распознавание при помощи самообучающихся алгоритмов, в том числе при помощи нейронных сетей.

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

Фильтрация и обработка


Так как этап обнаружения был опущен и вставлен этап предобработки то изображение в большинстве своем выглядит следующим образом.



Данное изображение обрабатывается двумя фильтрами. Медианным и монохромом. В приложении использовалась измененная версия медианного фильтра с увеличением значения компоненты красного цвета.


Данный фильтр применятся для минимизации шума и смазывания острых краев букв (засечек и т.п.). После этого изображение обрабатывает монохром. То есть происходит четкая бинаризация, при этом границы букв четко фиксируются.

Сегментация


После предобработки в процессе распознавания происходит сегментация изображения. Опять-таки, так как этап обнаружения опущен, то для процесса сегментации принята следующая эвристика. Предполагается, что предложения текста расположены горизонтально и не создают пересечений друг с другом. Тогда задача сегментации не составляет труда.
Задается среднее значение расстояния между двумя буквами в слове. После этого изображение делится на строки путем поиска полных белых полос. Далее эти полосы делятся на слова путем поиска белых полос определенной ширины. После всего этого выделенные слова передаются на заключительный этап, и они делятся на буквы. Таким образом на выходе модуля сегментации мы имеет весь текст представленный изображениями букв этого текста.


Непосредственно перед распознаванием изображение нормализуется и приводится до размеров шаблонов, подготовленных заранее.

Далее наступает сам процесс распознавания. Для пользователя имеется два выбора, при помощи метрик и при помощи нейронной сети.

Распознавание
Рассмотрим первый случай — распознавание при помощи метрик.

Метрика – некоторое условное значение функции, определяющее положение объекта в пространстве. Таким образом, если два объекта расположены близко друг от друга, то есть похожи (например, две буквы А написанные разным шрифтом), то метрики для таких объектов будут совпадать или быть предельно похожими. Для распознавания в этом режиме была выбрана метрика Хэмминга.

Метрика Хэмминга – метрика которая показывает, как сильно объекты не похожи между собой.

Данную метрику часто используют при кодировании информации и передаче данных. Например, после сеанса передачи на выходе имеется следующая последовательность бит (1001001), также нам известно, что должна прийти другая последовательность бит (1000101). Мы вычисляем метрику путем сравнения частей последовательности с соответствующими местами из другой последовательности. Таким образом метрика Хэмминга в нашем случае равна 2. Так как объекты отличаются в двух позициях. 2- это степень непохожести, чем больше, тем хуже в нашем случае.
Следовательно, чтобы определить какая буква изображена нужно найти ее метрику со всеми готовыми шаблонами. И тот шаблон, чья метрика окажется наиболее близкой к 0 будет ответом.

Тогда было принято решение придумать новые метрики, позволяющие разграничить некоторое множество букв в отдельный класс. В частности, были реализованы метрики (Отражения горизонтального и вертикального, преобладания веса горизонтального и вертикального).

Второй способ распознавания – при помощи нейронной сети.

Что такое нейронная сеть и в биологическом понимании, и в математическом я рассказывать не буду, так как данного материала полно в интернете и повторять его не хочется. Сказать лишь можно то, что в математическом смысле нейронная сеть — это лишь модель биологического определения.

Существуют также множества разновидностей этих моделей. В своей работе я использовал однослойную сеть Кохонена.
Принцип работы нейронной сети таков, что поучив на входной слой нейронов новое изображение сеть реагирует импульсом того или иного нейрона. Так как все нейроны поименованы значениями букв, следовательно, среагировавший нейрон и несет ответ распознавания. Углубляясь в терминологию сетей можно сказать, что нейрон помимо выхода имеет также множество входов. Данные входы описывают значение пикселя изображения. То есть, если имеется изображение 16х16, входов у сети должно быть 256.

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

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


По окончанию обучения каждый нейрон похож на холст художника, где на местах в которых чаще всего встречались черные пиксели наиболее темная краска (значение заряда больше), а там, где реже совсем светлый тон.


Все коэффициенты выровнены и готовы воспринимать изображения.
Точность распознавания при этом методе достигает 80 процентов. Следует заметить, что точность распознавания зависит от обучающей выборки, как от количества, так и от качества.

Переписывание телефонных номеров из записной книжки, заучивание иностранных слов. В списке этих и прочих рутинных занятий ведущее место занимает набор текста на ПК. К счастью, существует компьютер, который способен выполнять эту скучную задачу безо всякого недовольства и к тому же быстрее человека. Все, что требуется от пользователя, – поместить страницу в сканер или многофункциональное устройство и нажать на кнопку Scan. Правда, для получения полноценного текстового документа одного сканера будет недостаточно. Ведь он сохраняет оцифрованную страницу в виде изображения, независимо от того, сколько текстовых и графических блоков она содержит. Чтобы получить возможность редактировать содержимое отсканированной страницы в других программах, например в Microsoft Word, изображение необходимо преобразовать в текст. Данная процедура называется Optical Character Recognition (OCR) – оптическое распознавание текста. О программах распознавания текста, а также обо всех тонкостях этого процесса мы расскажем далее.

Как происходит распознавание текста на ПК

Процесс оцифровки и оптического распознавания текста включает в себя пять этапов.

Чтобы упростить компьютеру распознавание текста, были разработаны специальные типы шрифтов. Первый, OCR-A (вверху), существует с 1968 года. Так как при его чтении нередко возникали трудности, позднее был создан другой шрифт – OCR -B (внизу)

1 Ввод страницы. На этом этапе отсканированный или сфотографированный документ попадает в компьютер в виде изображения.

2 Анализ макета. OCR-приложение определяет, где на странице находятся текст, рисунки, таблицы и т.п., и разбивает ее на блоки. Программа последовательно дробит страницу на все более мелкие блоки: разбивает текст на абзацы, затем на предложения, отдельные слова и символы. В финале анализа макета документ представляет собой набор отдельных символов. Программа запоминает, в каком месте на странице каждый из них находится.

Для более точного распознавания текста программы комбинируют различные методы, которые условно делятся на две категории: методы сопоставления с образцом и методы сопоставления признаков (более подробно о них читайте далее).

4 Реконструкция документа. После завершения процесса распознавания программа начинает воссоздавать страницы, с помощью встроенного словаря объединяя отдельные символы в слова, слова в предложения, предложения в абзацы и т.д.

Для ускорения процесса используются результаты анализа макета страницы (этап 2). Кроме того, применяя специальные методы, программы пытаются учитывать грамматические особенности текста, чтобы в итоге получились корректные с точки зрения распознаваемого языка предложения.

5 Сохранение документа. OCR-приложение сохраняет распознанный документ в определенном пользователем формате (только текст – TXT; макет страницы – файлы Microsoft Word или PDF).

Как выполняется распознавание символов

Для этого используется несколько различных технологий (см. врезку ниже).

Что затрудняет распознавание текста

Распознавание текста даже для мощных компьютеров – задача не из простых. Поэтому раньше существовали специальные типы шрифтов для распознавания, символы которых машина понимала лучше (см. рис. выше).

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

Программы распознавания текста

  • Наиболее известными программами распознавания текста являются ABBYY FineReader, CuneiForm, OmniPage и Readiris (см. табл. ниже). Они доступны в различных версиях – для домашнего и профессионального использования. На прилагаемом к этому номеру журнала DVD вы найдете 30-дневную версию программы ABBYY FineReader Home Edition со скидкой на следующую покупку.
  • Даже самые простые версии программ способны распознавать текст, таблицы, колонки и структуру страницы. С их помощью бумажный документ буквально за пару минут превратится в текстовый файл, доступный для редактирования. Как правило, пользователь может заранее определить, в каком файловом формате программа будет сохранять данные. Некоторые приложения способны распознавать документы на нескольких языках и позволяют вносить в перевод коррективы. Это важно, так как все программы допускают ошибки. Так, к примеру, 99,9% точности означает вероятность одной ошибки на 1000 символов, то есть от трех до четырех ошибок на страницу.
  • Сравнительно новыми являются такие программы, как ABBYY FotoReader, способная распознавать текст на фотографиях.
  • Таблицы. Для любого OCR-приложения таблица представляет собой смесь графических элементов (линий) и текста. Для того чтобы любой элемент таблицы удалось распознать, разработчики предусмотрели специальные функции. Корректно распознанные таблицы можно редактировать, к примеру в Excel или Word.


Каким должен быть сканер

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

Может ли OCR-программа распознавать рукописный текст

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

По следам госслужб


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

Именно OCR превращает изображение текста в текст. А с текстом уже можно делать что угодно.

Как это устроено?

В 1960-х годах был создан специальный шрифт OCR-A, который использовался в документах типа банковских чеков. Каждая буква в нем была одинаковой ширины (т.н. шрифт фиксированной ширины или моноширинный шрифт).


Образец шрифта OCR-A

Принтеры для чеков работали с этим шрифтом, и для его распознавания было разработано программное обеспечение. Поскольку шрифт был стандартизирован, его распознавание стало относительно простой задачей. Следующим шагом стало обучение программ OCR распознавать символы еще в нескольких самых распространенных шрифтах (Times, Helvetica, Courier и т.д.).


Что делать с рукописным вводом?

Человек способен догадаться о смысле предложения, даже если оно написано самым неразборчивым почерком (если речь не идет о рецепте на лекарства, конечно).


Задачу для компьютера иногда упрощают. Например, людей просят писать почтовый индекс в специальном месте на конверте специальным шрифтом. Формы, созданные для дальнейшей обработки компьютером, обычно имеют отдельные поля, которые просят заполнять печатными буквами.

OCR по шагам

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

Хорошие OCR-программы автоматически отмечают трудные элементы структуры страницы — колонки, таблицы и картинки. Все OCR-программы распознают текст последовательно, символ за символом, словом за словом и строчка за строчкой.
Сначала OCR-программа объединяет пиксели в возможные буквы, а буквы — в возможные слова. Затем система сопоставляет варианты слов со словарем. Если слово найдено, оно отмечается как распознанное. Если слово не найдено, программа предоставляет наиболее вероятный вариант и, соответственно, качество распознавания будет не таким высоким.

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

Для высокой точности распознавания исторического текста с необычными графическими символами, отличающимися от современных шрифтов, необходимо извлечь соответствующие изображения из документов. Для языков с небольшим набором символов это можно сделать вручную, но для языков со сложными системами письменности (например, иероглифических) ручной сбор этих данных нецелесообразен.

Для распознавания исторических китайских текстов требуется внести в OCR-программу как минимум 3000 символов, которые имеют разную частотность. Если для распознавания исторических английских текстов достаточно ручной разметки нескольких десятков страниц, то аналогичный процесс для китайского языка потребует анализа десятков тысяч страниц.
В то же время многие исторические варианты китайской письменности имеют высокую степень сходства с современным письмом, поэтому модели распознавания символов, обученные на современных данных, часто могут давать приемлемые результаты на исторических данных, хоть и со сниженной точностью. Этот факт вместе с использованием корпусов позволяет создать систему для распознавания исторических китайских текстов. Для этого исследователь Д. Стеджен (Donald Sturgeon) из Гарварда обработал два корпуса: корпус транскрибированных исторических документов и корпус отсканированных документов желаемого стиля.

После предварительной обработки изображений и этапов сегментации символов процедура извлечения обучающих данных состояла из:
1) применения модели распознавания символов, обученной исключительно на современных документах, к историческим документам для получения промежуточного результата оптического распознавания с низкой точностью;
2) использование этого промежуточного результата для соотнесения изображения с его вероятной транскрипцией;
3) извлечение изображений размеченных символов на основе этого соотнесения;
4) выбор из размеченных символов подходящих обучающих примеров.
Полученные данные могут использоваться без проверки для обучения новой модели распознавания символов, позволяющей достичь более высокой точности на аналогичном материале.

Читайте также: