Сколько Программистов И Копирайтеров Нужно, Чтобы Распознать Рукописный Паспорт?

Как вы думаете, часто ли в нашей стране встречаются рукописные паспорта? Когда мы в Умные двигатели Когда мы приступили к проектированию системы распознавания паспортов, казалось, что достаточно научить систему точно распознавать машинописные документы.

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

Год назад, анализируя качество работы Смарт-IDReader , мы поняли, что достигли уровня, когда рукописные паспорта составляют значительный класс ошибок.

В соответствии с научным подходом мы изучили проблему и начали придумывать решение.

Сегодня мы поговорим о том, как мы распознали рукописный гражданский паспорт РФ, тем самым успешно решив последнюю задачу на пути к полной автоматизации ввода паспортных данных.



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?

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

Поэтому на первых порах важно правильно ограничить формализацию задачи.

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

Такие паспорта заполняются аккуратным каллиграфическим (по крайней мере, по мнению паспортистки) почерком.

С одной стороны, это облегчает задачу: нам не нужно распознавать «медицинские каракули» и другие трудночитаемые тексты.

Но, с другой стороны, нам приходится сталкиваться со всей вариативностью каллиграфических стилей кириллических букв.

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

Задачу распознавания рукописного текста в паспорте мы разделили на три подзадачи:

  1. Обнаружение наличия рукописи в паспорте.

  2. Сегментация рукописной строки на символы.

  3. Распознавание символов и постобработка.

Далее в статье мы подробнее расскажем о решении каждой подзадачи.

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

Без наборов данных невозможно провести нормальное распознавание: даже если можно обучать нейронные сети с использованием синтезированных данных, все равно нужны данные, которые позволят измерить точность обученной системы.

Как оказалось, полезных датасетов рукописи в Интернете нет. Поэтому наш список подзадач пополнился нулевым пунктом — «Подготовка датасета».

Мы подошли к этому процессу творчески: раздали блокноты «по очереди» и попросили всех наших программистов «войти в роль» мастеров каллиграфии — переписать красивым почерком некоторые заранее подготовленные тексты.

Это были стихи А.

С.

Пушкин.

Здесь нас ждало первое разочарование.

Как бы сурово это ни звучало, оказалось, что наши программисты совершенно разучились писать.

И нельзя сказать, что они не пытались.

Нет, они просто разучились писать буквы от руки.

Вот пример того, что произошло:

Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?

Согласитесь, это совсем не то, что нужно.

Буквы пляшут, размеры не те.

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



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?

Через два дня, набравшись опыта, мы были готовы повторить попытку сбора «сырых» данных для набора рукописных текстовых данных.

Буквы стали прямее, слова читабельнее.

А некоторым даже удалось внести некоторые элементы каллиграфии.

Вот, взгляните на новые образцы сами:

Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?

В результате таких заготовок с разными текстами и почерками мы собрали около 1000 штук, тщательно оцифровали и разметили их в строки и символы.

Вот и все, поздравляю, набор данных рукописи готов.

Вернемся к алгоритмам.



Обнаружение наличия рукописи в паспорте

Обнаружение наличия рукописи является важным элементом системы распознавания промышленных документов.

Данный функционал попадает в категорию «понимание документов» и крайне востребован со стороны бизнес-заказчика.

Мы обучили бинарную сверточную нейронную сеть, которая анализировала входные изображения отдельных текстовых строк паспорта.

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



Сегментация рукописной строки на символы

Сегментация рукописного текста принципиально отличается от сегментации машинописного текста.

Чтобы понять первый уровень проблемы, просто попробуйте написать от руки слово «шиншилла» и посмотрите на эти «упорядоченные ряды крючков».

Для сегментации рукописных тестов мы снова использовали нейронные сети.

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

Далее, используя принципы динамического программирования, конструируются разделы писем.



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?



Сколько программистов и копирайтеров нужно, чтобы распознать рукописный паспорт?

Проблема с разрывами между буквами — не единственная проблема сегментации.

Необходимо правильно ограничить каждый символ по вертикали.

И здесь поиск «базовых» линий, который часто используется при распознавании печатного текста, вообще неприменим — высота рукописных букв варьируется в неограниченных пределах.



Распознавание символов и постобработка

Проблема распознавания рукописных знаков главным образом заключается в сходстве стиля разных иероглифов.

Посмотрите на пример выше: какая фамилия пишется – «Петров» или «Нетров»? Когда человек читает рукописный текст, он никогда не читает его посимвольно, а всегда в заданном контексте.

Система распознавания в этом случае должна вести себя точно так же.

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



Чего мы добились в итоге?

Так за год мы научились распознавать рукописные паспорта, оставив позади эту фундаментальную проблему, которая еще несколько лет назад казалась неразрешимой! Что дальше? Затем, как обычно, работа над качеством и новыми горизонтами.

P.S. Мы чуть не забыли об ответе на вопрос, вынесенный в заголовок.

Итак, у нас в компании 62 программиста.

Мы купили 150 тетрадей и напечатали 2000 листов прописей.

Теги: #Машинное обучение #программирование #искусственный интеллект #Обработка изображений #программисты #ocr #распознавание документов #рукопись #прописи #рукописный паспорт #эффективные алгоритмы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.