Как работает распознавание рукописного текста

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

Введение

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

​Занятная заметка тех времён.
​Занятная заметка тех времён.

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

Подходы распознавания

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

Процесс

Подготовка

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

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

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

Сегментация строк, слов и букв
Сегментация строк, слов и букв

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

Выпрямление

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

Как работает распознавание рукописного текста
Слово до выпрямления​
Слово до выпрямления​
Слово после выпрямления​
Слово после выпрямления​

Сегментация слов

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

  • Страница текста разбивается на строки, затем строка разбивается на слова, где пробел является их разделителем. Для этого на текст последовательно накладываются фильтры для удаления шумов и определения границ слов.
Как работает распознавание рукописного текста
  • Текст разбивается на составные части — компоненты и рассчитывается расстояние между их центрами. В качестве параметра алгоритма принимается какое-то пороговое значение расстояния, которое в дальнейшем можно подобрать исходя из успешности результатов.
Как работает распознавание рукописного текста
  • Следующий подход тоже основан на расчете расстояний. С помощью метода опорных векторов находится плоскость, которая разделяет два разных типа данных (символа), а затем с помощью порогового значения текст разбивается на слова.
​Опорные вектора отмечены окружностями
​Опорные вектора отмечены окружностями
  • Последний подход использует несколько способов расчета расстояния между и их комбинация.
a — исходный кусок текста, b — ​ограничивающий прямоугольник, с — Евклидово расстояние, d — горизонтальное расстояние<br />
a — исходный кусок текста, b — ​ограничивающий прямоугольник, с — Евклидово расстояние, d — горизонтальное расстояние

Языковая модель

Языковая модель помогает алгоритму распознавания улучшить результат с помощью известных языковых словосочетаний. Языковая модель может предсказывать следующее слово на основании предыдущих и предлагать варианты с различной степенью вероятности. Например, более вероятной считается словосочетание «There are» по сравнению с «Their are». Такую модель можно тренировать на основании большого количества текста с расчетом повторений одного слова за другими. Конечно, нет сильной уверенности, что языковая модель сможет во всех случаях предсказывать следующее слово для любого текста, поэтому модель тренируют на тексте той же тематики, что и распознаваемый. Использование языковой модели также опционально.

Префиксное дерево

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

На иллюстрации можно увидеть представление слов to, too, a, this, that.​
На иллюстрации можно увидеть представление слов to, too, a, this, that.​

Классификация

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

Как работает распознавание рукописного текста

Пост-обработка

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

Заключение

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

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

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

11
6 комментариев

Вы ощущаете разницу между терминами "онлайновый" и "офлайновый" я не Граммар-наци, но даже мне в этом контексте режет восприятие. Тем более что второй вариант вы написали с ошибкой там должно быть две буквы "ф" английский  "off"
По теме когда AI научится распознавать почерк врачей тогда можно будет говорить о захвате мира, и 3-ем уровне искусственного интеллекта.  

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

тупой копирайтинг

Комментарий недоступен