В настоящее время компьютеризация в нашем обществе растет очень быстрыми темпами и играет очень значимую роль в повседневной деятельности человека. При помощи компьютерных технологий сейчас делаются попытки автоматизировать широкий круг процессов, которые в недалеком прошлом возлагались на умственную способность человека, поскольку информационные технологии используются повсеместно, в связи с чем программисты всего мира разрабатывают новые и совершенствуют уже зарекомендовавшие себя на практике алгоритмы автоматизации рутинных процессов.
Одной из актуальных проблем на данный момент является неэффективная работа различных государственных организаций, таких как «Пенсионный Фонд», городские поликлиники, различные организации бухгалтерского учета, поскольку все делается в ручном режиме. Каждый бланк заполняется собственноручно, и если нужно внести какую-то информацию (например, паспортные данные) в базу данных, то данная задача выполняется оператором собственноручно. Автоматизация процесса перевода информации с бумажных документов в электронный вид сейчас актуальна практически во всех государственных и коммерческих организациях. Также решение данной проблемы является важным аспектом безопасности и контроля, ведь малейшая ошибка при вводе данных может дорогого стоить. Избежать этого можно, используя программное обеспечение, позволяющее автоматизировать данный процесс. Его можно применять в различных сферах работы, касающихся обработки документов. Иллюстрацией выше изложенного служит практическая деятельность компаний, фиксирующих персональные данные граждан: коммунальные службы, паспортные столы, бухгалтерия по месту работы, т.д. Современные информационные разработки позволяют нам существенно облегчить доступ к необходимым информационным ресурсам из любой точки мира, при условии наличия их электронного варианта.
В настоящее время существует достаточно много систем оптического распознавания символов, но, к сожалению, не все из них являются по-настоящему качественной продукцией. Так программы OCR «низкого уровня» переводят текст на бумаге в набор символов и далее предлагают самостоятельно разобраться с тем, что получилось. Системы, обладающие высоким быстродействием и точностью распознавания, как правило, очень дороги, что делает их практически недоступными для внедрения и практического использования в массовом масштабе.
Объектом исследования в данном случае являются алгоритмы распознавания символов, а предметом исследования - система оптического распознавания символов с изображений.
Цель работы: разработка алгоритма повышенной точности для оптического распознавания символов с изображений паспортов за счет комбинирования методов предварительной обработки с использованием библиотеки OCR Tesseract и словарного контроля полученных результатов.
Для достижения поставленной цели в ходе выпускной квалификационной работы были поставлены следующие задачи:
. Изучение и анализ существующих методов по распознаванию печатных символов и программных решений, базирующихся на данных методах для выявления их недостатков
. Рассмотреть существующий программный инструментарий для создания системы оптического распознавания символов
. Сравнить в ходе экспериментов различные движки для распознавания символов с изображений
. Реализовать рабочий прототип приложения, способный распознавать данные с паспортов граждан
В главе 1 рассматриваются основы распознавания символов, существующие приложения и программный инструментарий. В главе 2 рассмотрено реализованное приложение, поэтапно разобран алгоритм его работы и интерфейс пользователя.
Глава 1. Материалы и методология
В данной главе рассматриваются основные понятия в сфере оптического
распознавания символов, методы распознавания печатных букв, программные
средства для распознавания и приложения, способные распознавать русские
символы. Также сконцентрировано внимание на экспериментальном сравнении трех
основных движков распознавания символов.
1.1 Оптическое распознавание символов
Оптическое распознавание символов (англ.optical character recognition, OCR) - это механический или электронный перевод изображений рукописного, машинописного или печатного текста в последовательность кодов, использующихся для представления в текстовом редакторе. Оптическое распознавание имеет широкие границы применения: для конвертации книг и документов в электронный вид, для автоматизации систем учета в бизнесе или для публикации текста на веб-странице. Над преобразованным в электронный вид при помощи оптического распознавания текстом можно совершать множественные манипуляции: редактировать, осуществлять поиск слова или фразы, хранить его в более компактной форме, демонстрировать или распечатывать материал, не теряя качества, анализировать информацию, а также применять к тексту электронный перевод <#"896877.files/image001.gif">
Рис.1 Процесс обработки поступающего документа
Учитывая перечисленные выше недостатки исходных изображений, перед
непосредственным распознаванием графического файла алгоритмами распознавания
необходимо провести как можно более тщательную предварительная обработка входящего
документа, направленную на улучшение качества изображения[16, 23, 26]. Данная
процедура включает в себя ротацию изображения, преобразование в используемый
системой формат (в основном это 8-битное изображение переведенное градации
серого), последующую фильтрацию изображения от шумов, локальное повышение
резкости и контрастности необходимых участков. Подготовленное изображение
отправляется на вход модуля сегментации областей интереса. Задачей данного
модуля является нахождение и определение основных структурных единиц текста -
строк и слов. Выделение фрагментов наивысших уровней, таких как строки и слова,
может быть осуществлено на основе анализа промежутков между тёмными областями
на бинаризованном изображении. Однако такой подход не может быть успешно
применен для выделения отдельных букв в силу особенностей написания или
различных искажений. Изображения соседних букв могут объединяться в одну
компоненту связанности как показано на рисунке 2, в данной ситуации велика
вероятность того, что «нн» будет принято за «м», или за «ии».
Рис. 2. Объединение нескольких букв в одну компоненту связанности
Еще один частый случай, когда изображение одной единой буквы может
распадаться, как показано на рисунке 3. Человек, в отличие от программы,
способен понять, что это единый символ. Во многих случаях для решения задачи
сегментации отдельных букв используются эвристические алгоритмы повышенной
сложности, затрачивающие слишком большие вычислительные мощности. Для принятия
решения о прохождении границы конкретной буквы на данном этапе обработки
системе распознавания будет недостаточно информации. В разработанном алгоритме
задачей модуля сегментации на уровне букв будет являться нахождение лишь
возможных границ символов внутри каждой буквы, а окончательное решение о
разделении слова принимается на последнем этапе работы модуля распознавания, с
учетом идентификации отдельных фрагментов изображения как букв. Дополнительным
преимуществом такого подхода является возможность работы с начертаниями букв,
состоящих из нескольких компонент связанности благодаря рассмотрению таких
случаев.
Рис. 3. Разделение изображений букв на несвязанные компоненты
В результате работы модуля сегментации мы получаем дерево сегментации.
Дерево сегментации это особая структура данных, организация которой отражает
структуру текста на странице. Самому верхнему уровню соответствует сам исходный
объект - документ. Он содержит в свою очередь массив объектов, описывающих
строки. Каждая строка в свою очередь включает свой набор объектов-слов. Слова
являются листьями получаемого нами на выходе алгоритма дерева. Информация о
возможных местах разделения слова на буквы хранится в самом слове, отдельные
объекты для букв не выделяются. В каждом объекте дерева хранится информация об
области, занимаемой соответствующим объектом на изображении.
.3 Обзор существующих приложений
по оптическому распознаванию символов
На данный момент уже существуют готовые программные решения по оптическому распознаванию символов.
В данном разделе будет рассмотрено решение безоговорочного лидера в данной сфере IT технологий, компании ABBYY: Abbyy FineReader, а также некоторые небольшие приложения по преобразованию печатных символов в электронный вариант на базе собственных движков распознавания. Следует помнить, что на рынке на сегодняшний день имеется достаточное количество как бесплатных, так и платных приложений по распознаванию символов, но в данной работе будут рассмотрены только наиболее примечательные из них. Об остальных будет упомянуто лишь в сводной сравнительной таблице, т.к. многие из них являются лишь обертками для уже упомянутых движков распознавания и не демонстрируют достойных результатов.
1.3.1 Abbyy FineReader
FineReader -
коммерческий продукт для оптического распознавания символов разработанный
российской компанией ABBYY и безусловный лидер в сфере оптического
распознавания символов. В основе FineReader запатентованная технология
оптического распознавания символов ABBYY OCR, которую лицензируют такие мировые
гиганты как Fujitsu <https://ru.wikipedia.org/wiki/Fujitsu>, Panasonic
<https://ru.wikipedia.org/wiki/Panasonic>, Xerox
<https://ru.wikipedia.org/wiki/Xerox> и Samsung
<https://ru.wikipedia.org/wiki/Samsung>. Программа позволяет переводить
изображения печатных документов во множество электронных редактируемых
форматов. Начиная с версии 12, она поддерживает распознавание текста на 190
языках, имеет встроенную проверку орфографии для 48 из них, способна сохранять
исходное форматирование документа, имеет большой набор функций для
предварительной обработки изображения, позволяет проводить настройку множества
параметров. Но основным ее преимуществом является почти безукоризненная
точность распознавания. По некоторым данным, после тщательного обучения система
может распознавать рукописный текст, однако ее нужно будет учить под почерк
каждого конкретного пользователя. На данный момент программа насчитывает более
20 миллионов пользователей по всему миру.
1.3.2 CuneiForm
CuneiForm
- система оптического распознавания текстов российской компании
CognitiveTechnologies. Изначально программа CuneiForm была разработана
компанией CognitiveTechnologies как коммерческий продукт. CuneiForm поставлялся
в комплекте с некоторыми моделями сканеров. Однако после нескольких лет
перерыва в разработке, 12 декабря 2007 года анонсировано открытие исходных
текстов программы, которое состоялось 2 апреля 2008 года. На данный момент
CuneiForm позиционируется как шрифтонезависимая система преобразования
электронных копий бумажных документов и графических файлов в редактируемый вид
с возможностью сохранения структуры и гарнитуры шрифтов оригинального документа
в автоматическом или полуавтоматическом режиме. Система включает в себя две
программы для одиночной и пакетной обработки электронных документов.
1.3.3 OCRopus
OCRopus
- система оптического распознавания символов, изначально направленная на
преобразование в электронный вид большого объема документов на базе
собственного распознающего ядра, начиная с версии 0.4. Это программный пакет
для распознавания текста, развивающийся по принципам OpenSource и
распространяющийся под лицензией ApacheLicense 2.0. Программа позволяет
подключать дополнительные модули для анализа макета содержимого,
предварительного улучшения изображения. По задумке разработчиков, с помощью
OCRopus станет возможным определять текстовое содержимое на графических файлах
построчно и переводить его в обычный текстовый формат для дальнейшего
редактирования. Помимо печатного текста, программа сможет распознавать и рукописные
материалы. По состоянию на альфа-релиз, OCRopus использует код языка
моделирования из другого проекта, поддерживаемого Google - OpenFST. OCRopus в
настоящее время доступна только для GNU/Linux. В настоящее время OCRopus
использует только интерфейс командной строки, принимая указания на входные
изображения с текстом, и выводя данные в формате hOCR (открытый формат на
основе HTML), TXT.
.3.4 Tesseract
Tesseract
- одноименная со своим ядром распознавания, свободно распространяемая программа
для распознавания текстов, разрабатывавшаяся Hewlett-Packard с середины 1980-х
по середину 1990-х, а затем на 10 лет проект был приостановлен.[10,20] В
августе 2006 года компания Google выкупила ее и открыла исходные тексты под
лицензией Apache 2.0 для продолжения работы над перспективным проектом. В
настоящий момент программа работает с UTF-8, поддержка языков (включая, русский
с версии 3.0) осуществляется с помощью установки и настройки дополнительных
модулей. Использует интерфейс командной строки. Начиная с версии 3.04,
выпущенной в 2015 году работает с более чем 100 языками.
1.3.5 Выявленные недостатки приложений
После рассмотрения четырех наиболее примечательных приложений по распознаванию символов, были сделаны следующие выводы:
1. Многие из приложений обладают не вполне интуитивно понятным интерфейсом и слишком большим числом функций, что иногда может оказаться недостатком
. Приложения не способны работать в фоновом режиме, кроме FineReader(добавлено в последней версии 12)
. Не у всех имеется возможность предварительной обработки изображения с целью улучшения качества
. Отсутствие графического интерфейса пользователя у некоторых решений
. Ни одна из программ не демонстрирует 100% результата и
идеального сохранения форматирования
.4 Основные трудности распознавания
символов
Существуют различные проблемы, связанные с распознаванием символов. Наиболее существенны следующие:
. Разнообразие языков, символов, и способов изображать их. Многие языки обладают похожими буквами: «N» и «И», «R» и «Я» и др. В каждом языке имеются символы, обладающие схожими чертами друг с другом и цифрами. Например, в русском языке: «М», «Н», «И» и «О» и «0», и т.д.
. Искажение изображений символов. Причины могут быть разнообразны. От минимальных проблем связанных с исходным изображением, заканчивая дефектом самого источника.
. В случае обработки персональных данных, проблемы могут вызвать системы защиты источника изображения. В случае паспортов - это невидимые символы.
4. Разнообразные вариации размеров и масштабов символов. Каждый отдельный символ может быть написан с использованием различных шрифтов, как стандартных (Times, Orator, Arial), а также множеством шрифтов, используемых, например, в пределах одной страны, для оформления одних и тех же документов.
Искажения цифровых изображений текстовых символов могут быть вызваны следующими причинами[26]:
1. Шумами печати, в частности, непропечаткой (разрывами слитных черт символов), «слипанием» соседних символов, пятнами и ложными точками на фоне вблизи символов и т. п.
2. Смещением символов или частей символов относительно их ожидаемого положения в строке
. Изменением наклона символов
. Искажением формы символа за счет оцифровки изображения с «грубым» дискретом
. Эффектами освещения (тени, блики и т. п.) при съемке камерой.
Многие системы OCR показывают наилучшие результаты при обработке черного текста на светлом фоне. В случае текстовых документов - это не критично. Но если применять такую систему для обработки нестандартных изображений: сканы паспортов, водительских удостоверений, номерных знаков автомобилей, то мы столкнемся с невозможностью получить корректные данные без предварительной обработки изображения.
Многие проблемы, описанные выше, можно устранить на этапе предобработки(1, 2, 3)[23, 26].
Система оптического распознавания текста (OCR) должна:
выделять на цифровом изображении текстовые области, выделять в них отдельные
строки, затем отдельные символы, распознавать эти символы и при этом быть
нечувствительной (устойчивой) по отношению к способу верстки, расстоянию между
строками и другим параметрам печати.
1.5 Методы распознавания символов
Распознавание структурированных (печатных) символов различных изображений обеспечивает решение ряда научных и прикладных задач при идентификации объектов различной природы. Современные методы распознавания символов используются для решения как типовых задач, например, распознавание текста, так и специализированных задач, ориентированных на распознавание символьной информации, нанесенной на поверхность различных объектов. Рассмотрим наиболее известные и распространенные методы распознавания символов.