На данный момент есть множество приложений, позволяющих пользователю вести учет своих доходов и расходов. Однако, почти у всех них есть один общий недостаток - это потребность в вводе всех данных вручную и крайне неточная классификация трат, ограничивающаяся местом покупки. Решением этой проблемы могла бы стать система, способная распознавать кассовые чеки.
Большинство магазинов снабжены ККТ (Контрольно-кассовой техникой), которая, как правило, выдает чеки со списком, приобретенных товаров. Таким образом, зная содержание чека, можно получить список всех совершенных покупок, не заставляя пользователя вводить их вручную. Для этого нужно будет сфотографировать кассовый чек, что намного быстрее чем вводить каждую позицию вручную. Но основная проблема в распознавании чеков связана с тем, что чеки не имеют определённой структуры, в результате чего сложно выстроить определённой алгоритм для их обработки.
При изучении методов распознавания был принят во внимание Федеральный закон № 54-ФЗ (с учётом изменений и дополнений, внесённых Федеральным законом от 03.07.2016 №2 290-ФЗ) согласно которому, появились новые требования к контрольно-кассовой технике, в том числе обеспечение возможности печати на кассовом чеке (бланке строгой отчетности) двухмерного штрихового кода (QR-код) в отдельной выделенной области кассового чека или бланка строгой отчетности. [2]
На первый взгляд может показаться, что сканирование QR-кода является оптимальным методом распознавания чека. И уже есть много готовых решений для работы с ними, но углубляясь в механизмы работы, пришел к выводу, что данный метод не решает поставленную задачу.
Существующие алгоритмы распознавания кассовых чеков хорошо работают только при качественных входных данных, и при небольших искажениях вероятность ошибки резко возрастает. В рамках данной задачи система должна быть помехоустойчивой, потому что, как правило, чеки не сохраняются в изначальном виде.
Актуальность данной работы заключается в том, что на данный момент не существует не коммерческих алгоритмов распознавания кассовых чеков, поддерживающих русскую локализацию. Есть множество хороших коммерческих решений по распознаванию текста, однако, нет определённого алгоритма, который бы позволил распознавать чеки. И, в связи с этим, приложения, нацеленные на учет расходов, не имеют возможности точно классифицировать траты пользователей и собирать качественные статистические данные, иначе в таком случае вся ответственность за классификацию покупок, легла бы на плечи пользователя, что повлекло бы за собой неудобство в использовании. Поэтому большинство подобных приложений имеют не больше 6-7 типов трат. Причем покупки в большинстве магазинов очень сильно коррелируют сразу с несколькими типами. Подобная система станет удобной как разработчикам, так и обычным пользователям. Пользователи смогут наблюдать более точную динамику своих расходов, а разработчики получать полезный набор данных, на основании которого можно разрабатывать новые сервисы с использованием машинного обучения, которое на данный момент пользуются огромной популярностью.
Объектом дипломной работы является система, способная по снимку определить список покупок. Система будет различным образом обрабатывать снимок, после чего распознавать текст с полученной картинки, обрабатывать его и трансформировать в определённый структурированный формат.
Предметом дипломной работы является сервис по распознаванию кассовых чеков.
Целью дипломной работы является разработка нового сервиса по распознаванию чеков с минимальной вероятностью ошибки, с более широким диапазоном погрешности входных данных.
Для достижения поставленной цели необходимо решить следующие задачи:
• анализ существующих сервисов и качество их работы;
• изучение механизмов и алгоритмов работы компьютерного зрения;
• изучение методов распознавания печатного текста;
• выбор технологии для разработки системы;
• разработка системы распознавания неструктурированного текста
• разработка алгоритма по нахождению списка покупок;
• проведение тестов;
В процессе исследования задачи распознавания кассовых чеков встречалось не малое количество трудностей. Наиболее важным этапом при разработке подобной системы является правильная декомпозиция задачи и предварительный анализ. Очень трудно решить всю задачу целиком, гораздо проще решить много маленьких подзадач, готовые решения которых вероятнее всего уже есть, поэтому много времени потребовалось на разбиение больших задач на подзадачи, на выявление и изучение трудностей, которые могут возникнуть при разработке. Однако, как бы хорошо система не была проработана на начальных этапах, все равно могут образовываться ситуации, которые очень трудно предусмотреть. Пример такой ситуации - это выпуклость чека, почти все чеки после печати имеют выпуклую форму, что значительно усложнило подготовку данных для последующего распознавания.
На момент написания работы мне не удалось найти ни одной полноценной исследовательской работы, которая бы проводилась в данном направлении. И поэтому в процессе разработки сервиса, также было проанализировано и опробовано на практике огромное количество методов и алгоритмов, прежде чем найти оптимальный подход к решению поставленной задачи.
Исходя из общего положения и опираясь на совокупность всех ранее упомянутых фактов, можно сделать вывод, что до тех пор, пока не будет принят определённый стандарт, по которому будут печататься все кассовые чеки, безошибочное распознавание невозможно. Целью данной выпускной квалификационной работы было создание сервиса с минимальной вероятностью ошибки. Качество распознавания по большей части зависит от качества распознавания текста и количества алгоритмов, способных распознавать те или иные структуры кассовых чеков.
Специфичная предварительная обработка показала отличные результаты при распознавании неструктурированного текста. Было создано несколько алгоритмов для нахождения позиций в чеке в наиболее распространённых структурах их расположения.
1. Онлайн кассы и налоговая: условия взаимодействия [Электронный
ресурс] - Режим доступа: https://www.1-ofd.ru/blog/news/onlayn-kassy-i-
nalogovaya/
2. Дэвид А. Ф. Компьютерное зрение. Современный подход. / А. Ф. Дэвид // Издательский дом «Вильямс», 2018. - 928 с.
3. Кадурин. А. В. Глубокое обучение. Погружение в мир нейронных сетей. / А. В. Кадурин, Е. А. Архангельская // СПб.: Питер, 2018. - 481 с.
4. Ковалёв А. И. QR-коды, их свойства и применение / А. И. Ковалёв // Молодой ученый. — 2016. — №10. — С. 56-59. [Электронный ресурс] — Режим доступа: https://moluch.ru/archive/114/29398/
5. Фисенко В. Т. Компьютерная обработка изображений: учебное пособие / В. Т. Фисенко, Т. Ю. Фисенко // Санкт-Петербург, 2017. - 195 с.
6. Прохоренко Н. А. OpenCV и Java. Обработка изображений и компьютерное зрение / Н. А. Прохоренко // БХВ-Петербург, 2018 - 320 с.
7. OpenCV - Adaptive Threshold [Электронный ресурс] - Режим доступа: https://www.tutorialspoint.com/opencv/opencv adaptive threshold.htm
8. Крылов В. С. Компьютерное зрение: инновационный
виртуальный стенд / В. С. Крылов // Ученые записки крымского инженернопедагогического университета Крым: сб. тр. науч.-практич. конф., 2017. — C. 117-125.
9. Желтов С. Ю. Методы машинного зрения / С. Ю. Желтов, Ю.В. Визильтер // Машинное зрение как прикладная техническая дисциплина Москва: сб. тр. науч.-практич. конф., 2018. - С. 4 - 6.