Первичная обработка изображения. Выполняет бинаризацию изображения, адаптивно выбирая пороговое значение яркости. Удаляет фон изображения.

· Segmentator

Выполняет разбиение изображения на строки.

· Data Grabber

Обработчик данных. Объект DataGrabber реализует протокол[16]IDataGrabber. В приложении хранится список DataGrabber’ов. Каждому из этих объектов передается список изображений строк. Каждый объект, применяя свои эвристики, распознает входящие строки и извлекает необходимую ему информацию. Таким образом некоторые строки могут распознаваться несколько раз. Это обусловлено тем, что DataGrabberвладеет информацией о представлении обрабатываемых им данных, а значит может более точно распознать интересующую его строку, предполагая где изображен текст, а где цифры, а также используя специфичный словарь. В реализованном прототипе список DataGrabber’ов состоит из одного SumGrabber’а, который ищет строку, на которой слева находится поле «итого» или аналогичное ему, а справа число с не более чем двумя знаками после запятой.

· Character Recognizer и Numeric Recognizer

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

· Vocabulary Provider

Выдает ближайшее словарное слово и вычисляет Расстояние Левенштейна [16]для определения корректности замены слова словарным. В реализованном прототипе есть один словарь, содержащий слова «итог», «итого» и «сумма». В дальнейшем можно организовать набор словарей, позволяющий различным DataGrabber’ам использовать различные корректировки.

НЕ нашли? Не то? Что вы ищете?

По окончанию работы этих модулей в некоторых DataGrabber’ах хранятся извлеченные данные. В данной реализации они хранятся в наиболее абстрактном представлении – в виде строк. Эти данные можно использовать для дальнейшегоанализа. В реализованном прототипе они выводятся на консоль.

Прототип

Прототип был реализован под операционную систему iOS. В качестве среды разработки использовался пре-релиз AppCode[15]. Данная среда разработки предоставляет разработчику мощный синтаксический анализатор и интеллектуальную систему подсказок и рефакторинга. В сравнении с предоставляемой Appleсредой XCode, AppCodeзначительно функциональнее и позволяет больше работы выполнять автоматически, что снижает вероятность возникновения ошибок в коде.

Основной проблемой при реализации прототипа было ограничение по памяти. На iOS отсутствует сборка мусора, и контролировать выделение памяти необходимо вручную. В большинстве случаев применяется отложенное освобождение памяти, но при реализации прототипа пришлось обработать bottleneck’и и заменить отложенное освобождение явным. По показаниям профилятора итоговое приложение занимает около 5 мегабайт оперативной памяти (не включая входное изображение) при лимите на iPhone в 30 мегабайт. Это говорит о допустимости использования алгоритма на данной мобильной платформе. Время обработки изображения чека колеблется в зависимости от качества изображения, но не более 20 секунд. Это время можно считать допустимым для данной задачи. Также было выявлено, что большую часть времени работают первичная обработка изображения и сегментация его на строки, а не основная часть работы – распознаватель. Это позволит при необходимости оптимизировать работу приложения, заменив эти модули.

Для оценки качества распознавания был проведен эксперимент. Были подготовлены 30 фотографий кассовых чеков, сделанные в разных условиях. Фотографии обрабатывались реализованным прототипом, а также Tesseract-ocrдля сравнения качества распознавания чисел.Tesseractне рассматривался как эталонная реализация сегментации чеков, т. к. он достаточно плохо распознавал разметку чека, а значит непригоден непосредственно для его распознавания – допустимо его использование лишь в качестве распознавателя символов.

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

В результате эксперимента 5 изображений не были распознаны. Из них 4 из-за некорректной сегментации – не была обнаружена строка с итоговой стоимостью; и в 1 была неправильно распознана цифра. Tesseract-ocrкорректно распознал все числа, изображенные на чеках, что свидетельствует о достаточном качестве изображения.

Заключение

При выполнении дипломной работы были получены следующие результаты:

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

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

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

· Реализован прототип системы распознавания чеков на мобильной платформе iOS, извлекающий итоговую стоимость покупки;

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

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

· Классификация расходов по группам товаров;

· Отслеживание изменения цен;

· Определение эффективного с точки зрения экономии магазина

· Анализ популярности товаров

· Выявление регулярного адаптивного списка покупок

Список литературы

[1] Граничин О. Н.,  Рандомизированные алгоритмы оценивания и оптимизации при почти произвольных помехах // М.: Наука. 20 с.

[2]Граничин О. Н., Измакова О. А. Рандомизированный алгоритм стохастической аппроксимации в задаче самообучения // Автоматика и телемеханика, 2005, № 8, с. 52-63.

[3] Рандомизированный алгоритм стохастической аппроксимации в задаче распознавания печатных текстов арабского языка // Труды VIII Международной конференции «Идентификация систем и задачи управления» SICPRO ‘09. Москва, 2009 г.

[4] Граничин О. Н., Решение задачи автоматического распознавания отдельных слов речи при помощи рандомизированного алгоритма стохастической аппроксимации // Нейрокомпьютеры: разработка, применение, 2009, № 3, с. 58-64.

[5] Математическое обеспечение для разработки и анализа систем распознавания образов, использующих рандомищированные алгоритмы // диссертационная работа, 2009

[6] http://code.google.com/p/tesseract-ocr/

[7] http://www.abbyy.ru/mobile/

[8] http://mocrt.e-ur.asia/up/

[9] http://www.google.com/mobile/goggles/

[10] http://en.wikipedia.org/wiki/Artificial_neural_network

[11] http://en.wikipedia.org/wiki/Support_vector_machine

[12] http://en.wikipedia.org/wiki/Hidden_Markov_model

[13]http://hitfounder.livejournal.com/26404.html

[14]http://marketimho.ru/

[15]http://www. /objc/

[16] http://en.wikipedia.org/wiki/Levenshtein_distance

[17] http://www.apple.com/iphone/ios4/

[1] Речь идет о распознавании напечатанного на светлой бумаге темного текста

[2] Рукописный ввод в первых карманных компьютерах фирмы Palmhttp://en. wikipedia. org/wiki/Palm_(PDA)

[3] Для распознавания достопримечательностей Google также использует информацию о местоположении мобильного телефона в момент получения снимка.

[4] Значение точки – цвет ее бинарного представления, 0 или 1.

[5] Зависимость количества ненулевых пикселей в строке от ее номера.

[6] Зависимость количества ненулевых пикселей в столбце от его номера.

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

[8] Кроме того, ошибки в наименовании товара могут быть исправлены применением словаря. Числа же не могут быть откорректированы подобным способом.

[9] Буква Ы воспринимается как 2 отдельных символа: “ь” и “I

[10] В данном случае, соседней точкой называется одна из 8 окружающих точек.

[11] Кластеризация, при которой заранее известно число кластеров

[12] Как отмечалось ранее, буква ы рассматривается как пара символов Ь и I

[13] Рассматривается заранее подготовленная обучающая выборка, состоящая из изображений каждого символа.

[14] Почти произвольная помеха – ограниченная (допустима неслучайная) величина

[15]Такое изначальное приближение должно сильно не соответствовать реальным центрам кластеров, что не выполняется в реализованном прототипе.

[16]Протоколом в языке ObjectiveC называют интерфейс.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3