Высокоточная оптическая распознавание символов (OCR) цифр с мобильного скриншота

Вопрос или проблема

Вопрос

Существует ли решение для оптического распознавания текста (OCR), которое будет работать нативно на недавнем iPhone с большей точностью, чем Tesseract? Оно должно распознавать достаточно, чтобы восстановить суммы в долларах.

Цель

Извлечь таблицу сумм в долларах из изображения экрана, сделанного на мобильном устройстве. Мы рассмотрели все часто рекомендуемые решения, но они не удовлетворяют нашим требованиям.

Я начинаю здесь на случай, если существует готовое решение; если нет, я попробую Stack Overflow.

Большинство целей и приоритетов исходят от нашего клиента. Уместно задаться вопросом, разумны ли они, но мне придется с ними жить.

Это краткое содержание. Ниже приведены детали, которые не интересуют всех.


Приоритеты

  1. Решение должно работать на достаточно недавней модели iPhone (скажем, минимум iPhone 6s).
  2. Точность распознанных символов имеет первостепенное значение.
  3. Необходимо извлечь ~30 чисел. Они расположены в таблице из трех столбцов.
  4. Формат чисел может включать символы валюты, разделители группировки и десятичные разделители. (‘$‘, ‘,‘, и ‘.‘ в США). Или любое разумное сочетание этих символов.
  5. Ожидать, что битмап для каждой цифры будет ~25w x ~35h (10-пунктный Helvetica при 2x или 3x разрешении). Шрифт будет пропорциональным, поэтому разделители будут значительно уже.
  6. Приложению нужен способ восстанавливать размещение каждого числа в таблице.
  7. Время выполнения должно быть менее 10 секунд, желательно менее 5. Использование, вероятно, будет достаточно редким, чтобы потребление энергии не стало проблемой.

Ограничения

Это приложение является доказательством концепции. У меня есть строго ограниченное время и трудозатраты. Мне настоятельно не рекомендовали прибегать к услугам с постоянными или большими начальными затратами, даже если они могут иметь смысл для конечного продукта.

Что я пробовал/рассматривал

Tesseract

Tesseract имеет около 85% точности в этом приложении.

Я пробовал нативный предварительный обработчик изображений и свои собственные эксперименты: монохром, различные яркость и контрастность, различные размытие/резкость; обработанное изображение выглядит достаточно различимо для меня, без пустых мест.

Я могу повысить точность выше 90%, исправляя вывод так, чтобы он имел смысл; я знаю наибольшую величину, например, поэтому слишком большое число с ведущей 8, вероятно, начинается с $.

Клиент не удовлетворен.

Tesseract в малых частях

Фреймворк Vision в iOS 11 может идентифицировать положение слов и символов на изображении, хотя и не интерпретирует их. Передача подизображений в Tesseract дает гораздо худшие результаты. Я предполагаю, что Tesseract зависит от контекста для разрешения неоднозначностей.

Извлечение данных из источника

Нет текстового нативного формата, такого как HTML или текстовый PDF. Я застрял с пиксельной картой.

Удаленные сервисы

Удаленный сервис менее привлекателен, чем нативная обработка, даже несмотря на то, что «бесплатные испытания» дают гораздо лучшие результаты:

  • Клиент не хочет нести затрат на фазу доказательства концепции продукта.
  • Мы не можем полагаться на то, что клиент будет управлять своими демо, чтобы они укладывались в сроки или лимиты бесплатного испытания.
  • Из принципа мы хотели бы, чтобы приложение не зависело от доступности сети или времени обработки.
  • Из принципа мы хотели бы избежать любых пользовательских данных, проходящих через сеть и, вероятно, сохраняемых для проверки третьими лицами.

ABBYY выглядит как хороший вариант, за исключением этих ограничений.

Машинное обучение

Проблема довольно четко определена:

  • Предсказуемый стиль шрифта.
  • Нет геометрических искажений.
  • Четкие изображения для работы.
  • 15 символов для классификации (0-9.,${space}{other})

Модель машинного обучения обещает быть очень точной, очень быстрой и легкой для обучения.

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

На данный момент мы вышли за пределы рекомендаций программного обеспечения и в сферу Stack Overflow или местных специалистов. Я включаю этот вариант для полноты.

Я думаю, что вариант с машинным обучением с использованием OpenCV, (несмотря на то что вы можете найти пример альтернативного метода здесь полезным), является лучшим вариантом, и библиотека OpenCV включает алгоритмы машинного обучения и имеет отличные примеры в качестве отправной точки, такие как https://www.learnopencv.com/handwritten-digits-classification-an-opencv-c-python-tutorial/, который решает гораздо более сложную задачу.

OpenCV обладает следующими характеристиками:

  • Бесплатно, бесплатно и с открытым исходным кодом
  • Лицензия BSD
  • Написано на C++, но есть привязки для Java и Python
  • Поддерживает Windows, Linux, Mac OS, iOS и Android
  • Вы можете захватывать свои данные для обучения и обучать свою модель машинного обучения с помощью настольной системы, а затем экспортировать ее в мобильное решение при необходимости.

Ответ или решение

OCR на мобильном устройстве с высокой точностью: Решение для извлечения денежных сумм

Введение

Современные технологии распознавания символов (OCR) становятся все более мощными и эффективными, предоставляя возможность извлечения текстовой информации из изображений. Для вашей задачи, связанной с извлечением денежных сумм из изображений на мобильных устройствах, существует множество решений. Однако, чтобы выбрать оптимальный инструмент, необходимо учесть целый ряд факторов, включая требования к точности и условия эксплуатации.

Привилегии и цели

При выборе подходящего решения для распознавания символов OCR следует сосредоточиться на следующих приоритетах:

  1. Платформа: Решение должно быть совместимо с iPhone, начиная с модели 6s.
  2. Точность: Точность распознавания символов является приоритетом, особенно в контексте извлечения денежных сумм.
  3. Структура данных: Учитывая, что извлекаются числовые значения из таблицы, стратегический подход к их структурированию должен быть включен.
  4. Формат чисел: Обработка различных форматов чисел, включая символы валюты и разделители, должна осуществляться корректно.
  5. Вывод и расположение: Необходимо найти способ определения положения каждого элемента в таблице.
  6. Скорость обработки: Время выполнения должно составлять менее 10 секунд, предпочтительно — менее 5 секунд.

Текущие решения и их ограничения

  1. Tesseract: Хотя Tesseract является популярным инструментом для OCR, с чем вы уже знакомы, его точность на уровне 85% может быть недостаточной для ваших нужд. Пробная обработка изображений для улучшения качества (черно-белая, изменение контрастности и т. д.) ничего не дала.

  2. Vision Framework iOS: Этот инструмент способен определять расположение слов и символов, но, как вы заметили, разбиение изображений на более мелкие кусочки для последующей обработки с использованием Tesseract дало худшие результаты, так как контекст играет важную роль.

  3. Удаленные сервисы: Открытие на использование облачных сервисов также не подходит, так как ваши требования подразумевают отсутствие зависимостей от сетевых соединений и защиты данных пользователей.

Потенциальное решение: машинное обучение

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

  • OpenCV: Эта библиотека предлагает мощные инструменты для обработки изображений и реализации алгоритмов машинного обучения. Она поддерживает различные языки программирования, включая Python и C++, и имеет возможность работы на iOS.
  • Обучение модели: Можно использовать доступный пул студентов для создания и обучения модели. Это позволит вам создать точное решение в рамках вашего бюджета и временных ограничений.

Суть подхода заключается в том, что можно создать сравнительно простую модель, обучая ее на малом наборе данных (например, изображениях чисел, которые будут представлены в различном формате). Это обеспечит высокую точность при извлечении денежных сумм.

Заключение

Решение на основе машинного обучения с использованием OpenCV может стать эффективным способом для достижения высоких результатов OCR на мобильных устройствах, удовлетворяя всем вашим требованиям. При должном внимании к обучению и корректной подготовке данных, это предложение представляет серьезную альтернативу существующим решениям, таким как Tesseract. С вашим подходом к тестированию и итерационным проектированием вы сможете достичь необходимых показателей точности и скорости работы, обеспечивая удовлетворение потребностей ваших клиентов.

Для дальнейшего изучения возможно использование интернет-ресурсов для изучения схем и примеров реализации, например, из официальной документации OpenCV или специализированных курсов по машинному обучению.

Оцените материал
Добавить комментарий

Капча загружается...