Первичная обработка изображения. Выполняет бинаризацию изображения, адаптивно выбирая пороговое значение яркости. Удаляет фон изображения.
· 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 |


