Как дать наибольшие шансы на успех программному обеспечению для распознавания текста?

StackOverflow https://stackoverflow.com/questions/1335581

  •  20-09-2019
  •  | 
  •  

Вопрос

Я использую Распознавание текста в Тессеракте (через пытессер) и PIL (библиотека изображений Python) для автоматического тестирования приложения.

Я проверяю, что отображаемый текст в порядке, делая снимок экрана и получая текст благодаря tesseract.

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

К сожалению, у меня все еще есть некоторые ошибки, такие как путаница между '0' и 'O'.Я могу себе представить, что в будущем у меня возникнут и другие подобные проблемы.

Я хотел бы знать, существуют ли какие-либо методы подготовки изображения, чтобы помочь распознаванию текста.Любая идея приветствуется.

Заранее спасибо

Это было полезно?

Решение

Бесстыдный плагин и отказ от ответственности: моя компания пакеты Tesseract для использования в .NET

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

Другие советы

  1. Обучите tesseract распознавать ваш шрифт
  2. Сделайте изображение более чистым и с достаточным количеством свободного места вокруг символов
  3. Прибыль :)

Вот несколько примеров из реального мира.

  • Первое изображение - исходное изображение (обрезанные номера измерителей мощности).
  • Второе изображение - это слегка очищенное изображение в GIMP, точность распознавания около 50% в tesseract
  • Третье изображение - полностью очищенное изображение - 100% распознавание текста без какой-либо подготовки!

enter image description here enter image description here enter image description here

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

Для различения между 0 и O одним простым решением является выбор шрифта, который различает оба (например:0 имеет черточку или точку в середине).Было бы это приемлемо в вашем приложении?

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

Например, круглый символ, за которым следуют другие цифры, скорее всего, будет нулем, в то время как тот же символ, за которым следуют буквы, скорее всего, будет заглавной "о".Это тривиальный пример, но он показывает, насколько контекст необходим для создания более надежной системы распознавания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top