ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»
Факультет информатики, математики и компьютерных наук
Программа подготовки бакалавров по направлению 09.03.04 Программная инженерия
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
Разработка мобильного приложения для распознавания информации на визитных карточках
Матутин Василий Андреевич
Нижний Новгород, 2019
Содержание
ѕ провести обзор изучаемой области и рассмотреть существующие решения в области оптического распознавания текста и классификации текстовой информации по необходимым категориям;
ѕ определить требования к разрабатываемому приложению;
ѕ разработать и описать алгоритм функционирования предлагаемого приложения с учётом агрегации существующих решений и разработанных требований;
ѕ разработать функционирующий прототип приложения;
ѕ провести тестирование приложения на соответствие заявленным требованиям, обобщить полученную информацию и подготовить предложения по возможным улучшениям предлагаемого программного продукта.
Входными данными для данного приложения будет являться цифровое изображение, полученное с помощью камеры мобильного устройства. Для получения точного результата данное изображение должно быть выполнено в достаточном разрешении (не менее 800х600 пикселей), без значительных отклонений, в том числе поворотов, недостаточного освещения и присутствия посторонних объектов в кадре.
По результатам работы приложения должна быть получена электронная версия текста, представленного на распознаваемом изображении, классифицированная по следующим категориям: имя, компания, телефон, адрес электронной почты и физический адрес организации или человека. Данная информация должна сохраняться на устройстве пользователя вместе с выходным изображением и быть доступна для редактирования. Также сведения об организации или человеке могут быть экспортированы во встроенную электронную адресную книгу на устройстве пользователя.
1.2 Обзор технологии оптического распознавания символов
Оптическое распознавание символов (optical character recognition, OCR) - это машинное преобразование рукописного, машинописного или печатного текста в текстовые данные, использующиеся для представления символов на компьютере [3]. В настоящее время данная технология в основном применяется для распознавания текста на бумажных носителях (так называемая оцифровка текста), например для анализа бумажной отчётности предприятий, кассовых чеков, банковских выписок, научной литературы и прочих документов, подходящих для обработки данным алгоритмом. Технология OCR используется как эффективный способ повышения доступности информации: документы, преобразованные в цифровой вид, могут быть проиндексированы поисковыми системами сети Интернет, занимают значительно меньше места при хранении и доступны в онлайн режиме. Кроме того, текст в цифровой форме может быть использован для таких автоматизированных процессов, как машинный перевод и преобразование текста в речь.
В настоящее время выделяют два основных подхода к оптическому распознаванию текста: сопоставление изображений и шаблонов и классификация символов с помощью нейронных сетей [5].
Метод сопоставления изображений и шаблонов предполагает сравнение изображения символа по определённым параметрам с заранее определённым эталонным символом. В качестве таких параметров могут выступать пересечения (сколько раз и каким образом произошло пересечение изображения символа с определёнными прямыми, проведёнными под заданными углами) или зонирование (пиксельное разбиение изображения для определения частоты совместной встречаемости «чёрных» и «белых» зон). Алгоритм в результате своей работы выбирает эталонный шаблон, наиболее близко соответствующий параметрам входного изображения.
Данный метод довольно легко реализуется в практических программах, поэтому используется во многих малобюджетных проектах по оптическому распознаванию текста. Однако, следует учитывать ту особенность, что метод сопоставления базируется на том предположении, что входной символ корректно отделён от других частей изображения. Данный факт является существенным недостатком метода, так как в практических условиях, на изображениях почти всегда присутствуют различные затемнения и искажения, кроме того, входящий текст может быть представлен в другом формате или на другом фоне, которые отличаются от эталонного символа, что приводит к значительному падению качества распознавания текста.
В основе второго метода, классификации символов с использованием нейронных сетей, лежит принцип формирования признаков. В первую очередь определяется архитектура нейронной сети, каждый узел которой будет отвечать за выделение какого-либо признака входящего символа. В процессе обучения на вход нейронной сети подаётся большое количество вариантов начертания символов в различных фонах и шрифтах, после чего полученный результат сравнивается с ожидаемым. Ошибка распознавания используется для перераспределения весов каждого узла, то есть степени влияния каждого признака или их совокупности на конечный результат.
Таким образом, по результатам обучения составляется карта признаков для анализа входного символа. Данный подход позволяет получить достаточно высокую точность при большом наборе входных данных для обучения, за счёт выделения сложных сочетаний признаков, устойчивых к изменениям фона или шрифта изображения. Тем не менее, следует учитывать тот факт, что алгоритм работает только для определённых входных данных, пусть и подверженных искажениям, например, нельзя распознавать символы русского алфавита, используя нейронные сети, обученные на образцах английского текста. Данный алгоритм представляется наиболее перспективным в настоящее время и находится в стадии активной разработки. Многие высокобюджетные компании реализуют и предлагают к использованию свои модели нейронных сетей для оптического распознавания текста.
С помощью применения данных методов можно добиться 99% точности распознавания символов на высококачественном изображении текста. При применении методов в реальных условиях приемлемым признаётся результат 80-90% успешно распознанных символов. Кроме того, ни один метод не может показать хороший результат при распознавании изображения плохого качества, поэтому предварительная обработка изображения почти также важна, как и выбор метода распознавания текста.
1.3 Анализ библиотек оптического распознавания символов
В настоящее время существует большое разнообразие программных интерфейсов, предлагающих функционал для оптического распознавания символов. В силу ограниченности ресурсов проекта, среди многообразия данных библиотек рассмотрим только те, которые предлагают готовые решения без необходимости конструирования архитектуры нейронной сети и её последующего обучения: ABBYY Cloud OCR SDK, Tesseract OCR и Google Firebase Text Recognition.
ABBYY Cloud OCR SDK - это онлайн-сервис, предложенный компанией ABBYY для распознавания текста на изображении. Функционирует по принципу удалённого веб-сервиса: пользователи могут загружать изображения на сервер с помощью REST запросов и принимать результат в виде распознанного текста. Как следствие, данный сервис может быть использован на любом устройстве, поддерживающем выполнение таких запросов (фактически на всех устройствах с выходом в интернет), кроме того, данный сервис характеризуется одной из самых высоких точностей распознавания. Существенным недостатком ABBYY Cloud OCR SDK является отсутствие бесплатной модели распространения и встраиваемых интерфейсов, ориентированных на использование непосредственно из кода мобильного приложения.
Tesseract OCR - это свободно распространяемая библиотека, написанная на языке C++. Построена по модульному принципу: для распознавания текста на определённом языке пользователю необходимо подключить модуль с моделью для распознавания данного языка, разместив его на своём устройстве. Таким образом, существует возможность собирать любую комбинацию распознаваемых языков, в том числе с использованием собственных моделей. Существенным преимуществом библиотеки является возможность работы без соединения с сетью. Недостатком является более низкое качество распознавания по сравнению с онлайн аналогами. Для работы библиотеки на мобильных устройствах необходимо подключить библиотеку tess-two, которая расширяет возможности библиотеки Tesseract OCR путём её адаптации для работы на мобильных устройствах. В среднем библиотека распознаёт успешно 60% символов [7].
Google Firebase Text Recognition - библиотека, предлагаемая компанией Google для распознавания текста. Изначально адаптирована для работы на мобильных устройствах. Распространяется по условно бесплатной модели: существует лимит количества бесплатно распознанного текста. Работает как в онлайн, так и оффлайн режимах (в последнем отсутствует поддержка кириллических языков). Из преимуществ можно отметить возможность динамического определения языка анализируемого текста и наличие обширной документации, что упрощает использование данной библиотеки. Ошибка при распознавании символов в тексте в среднем составляет 15-20% [7].
Все перечисленные библиотеки основываются на использовании метода классификации символов с помощью нейронных сетей, как наиболее перспективной технологии.
В данной работе основной акцент ставится на использование комбинации двух библиотек: Tesseract OCR и Google Firebase Text Recognition в связи с явным наличием преимуществ данного решения: поддержка мобильных устройств, модель бесплатного использования в рамках исследовательского проекта и высокое качество распознавания.
1.4 Обзор технологии извлечения упоминаний сущностей (классификации текста по категориям)
Извлечение упоминаний сущностей (named entity recognition, NER) - это технология идентификации участков в неструктурированном тексте, в которых упоминаются категорируемые объекты для их классификации по заранее определённым категориям, таким как имя человека, адрес электронной почты, название организации [2].
Данная технология находится на стадии экспериментального развития и мало применяется в существующих на сегодняшний момент приложениях, однако первые результаты использования уже демонстрируют огромный потенциал данной технологии для решения прикладных задач. Например, заполнение баз данных по отсканированным заявлениям, в которых человек указывает свои данные или поиск определённых категорий, таких как названия городов, в больших объёмах текста [4].
Существует два основных подхода к решению задачи извлечения сущностей из текста.
Первый подход базируется на использовании сложных наборов языковых правил, разработанных вручную, или сравнении входных данных с заранее определённым категорированным списком слов в словаре, что требует обширных знаний в области структуры языка и существенно ограничивает возможность повторного использования созданных наборов для других языков, в силу существенных различий в их структуре. Такой алгоритм демонстрирует приемлемый результат при анализе текстов в конкретной области, к примеру, анализ научных исследовательских работ, но плохо справляется с разговорным языковые стилем из-за его постоянного изменения. Кроме того, поддержание работы такой системы требует существенных затрат на составление актуальной базы данных слов и обновляющихся правил грамматики, которая может поддерживаться только специалистами в области лингвистики.