Тема: Разработка сервиса по распознаванию кассовых чеков
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
1. Обзор альтернативных методов 6
1.1 Распознавание чека по QR-коду 6
1.2 Распознавание чека при помощи Tesseract 8
2. Декомпозиция задачи 11
3. Препроцессинг 13
3.1 Перевод изображения в серые тона 13
3.2 Бинаризация 13
3.3 Дилатация 16
4. Нахождение контуров 18
5. Сегментация строк 20
6. Выравнивание строк 22
7. Распознавание текста 26
7.1 LSTM 26
7.2 Сверточная нейронная сеть 27
8. Исправление ошибок 29
9. Нахождение купленных позиций 30
Заключение 32
Глоссарий 34
Список использованных источников 35
📖 Введение
Большинство магазинов снабжены ККТ (Контрольно-кассовой техникой), которая, как правило, выдает чеки со списком, приобретенных товаров. Таким образом, зная содержание чека, можно получить список всех совершенных покупок, не заставляя пользователя вводить их вручную. Для этого нужно будет сфотографировать кассовый чек, что намного быстрее чем вводить каждую позицию вручную. Но основная проблема в распознавании чеков связана с тем, что чеки не имеют определённой структуры, в результате чего сложно выстроить определённой алгоритм для их обработки.
При изучении методов распознавания был принят во внимание Федеральный закон № 54-ФЗ (с учётом изменений и дополнений, внесённых Федеральным законом от 03.07.2016 №2 290-ФЗ) согласно которому, появились новые требования к контрольно-кассовой технике, в том числе обеспечение возможности печати на кассовом чеке (бланке строгой отчетности) двухмерного штрихового кода (QR-код) в отдельной выделенной области кассового чека или бланка строгой отчетности. [2]
На первый взгляд может показаться, что сканирование QR-кода является оптимальным методом распознавания чека. И уже есть много готовых решений для работы с ними, но углубляясь в механизмы работы, пришел к выводу, что данный метод не решает поставленную задачу.
Существующие алгоритмы распознавания кассовых чеков хорошо работают только при качественных входных данных, и при небольших искажениях вероятность ошибки резко возрастает. В рамках данной задачи система должна быть помехоустойчивой, потому что, как правило, чеки не сохраняются в изначальном виде.
Актуальность данной работы заключается в том, что на данный момент не существует не коммерческих алгоритмов распознавания кассовых чеков, поддерживающих русскую локализацию. Есть множество хороших коммерческих решений по распознаванию текста, однако, нет определённого алгоритма, который бы позволил распознавать чеки. И, в связи с этим, приложения, нацеленные на учет расходов, не имеют возможности точно классифицировать траты пользователей и собирать качественные статистические данные, иначе в таком случае вся ответственность за классификацию покупок, легла бы на плечи пользователя, что повлекло бы за собой неудобство в использовании. Поэтому большинство подобных приложений имеют не больше 6-7 типов трат. Причем покупки в большинстве магазинов очень сильно коррелируют сразу с несколькими типами. Подобная система станет удобной как разработчикам, так и обычным пользователям. Пользователи смогут наблюдать более точную динамику своих расходов, а разработчики получать полезный набор данных, на основании которого можно разрабатывать новые сервисы с использованием машинного обучения, которое на данный момент пользуются огромной популярностью.
Объектом дипломной работы является система, способная по снимку определить список покупок. Система будет различным образом обрабатывать снимок, после чего распознавать текст с полученной картинки, обрабатывать его и трансформировать в определённый структурированный формат.
Предметом дипломной работы является сервис по распознаванию кассовых чеков.
Целью дипломной работы является разработка нового сервиса по распознаванию чеков с минимальной вероятностью ошибки, с более широким диапазоном погрешности входных данных.
Для достижения поставленной цели необходимо решить следующие задачи:
• анализ существующих сервисов и качество их работы;
• изучение механизмов и алгоритмов работы компьютерного зрения;
• изучение методов распознавания печатного текста;
• выбор технологии для разработки системы;
• разработка системы распознавания неструктурированного текста
• разработка алгоритма по нахождению списка покупок;
• проведение тестов;
✅ Заключение
На момент написания работы мне не удалось найти ни одной полноценной исследовательской работы, которая бы проводилась в данном направлении. И поэтому в процессе разработки сервиса, также было проанализировано и опробовано на практике огромное количество методов и алгоритмов, прежде чем найти оптимальный подход к решению поставленной задачи.
Исходя из общего положения и опираясь на совокупность всех ранее упомянутых фактов, можно сделать вывод, что до тех пор, пока не будет принят определённый стандарт, по которому будут печататься все кассовые чеки, безошибочное распознавание невозможно. Целью данной выпускной квалификационной работы было создание сервиса с минимальной вероятностью ошибки. Качество распознавания по большей части зависит от качества распознавания текста и количества алгоритмов, способных распознавать те или иные структуры кассовых чеков.
Специфичная предварительная обработка показала отличные результаты при распознавании неструктурированного текста. Было создано несколько алгоритмов для нахождения позиций в чеке в наиболее распространённых структурах их расположения.



