Низкий уровень успеха с pytesser? Это проблема шума, или нужно что-то еще сделать?
Я пытаюсь обнаружить несколько заглавных букв на снимке экрана. Я преобразую его в черно-белое с помощью PIL, а затем, используя пример кода со страницы PyTesser, запускаю tesser.exe на изображении:
from pytesser import *
image = Image.open('fnord.tif')
print image_to_string(image)
Я использую это изображение:
Но он не распознает его как E или что-то в этом роде. Я думаю, что это достаточно чистый захват? Шум наверху не сбрасывает, верно?
Я что-то упускаю?
1 ответ
Если вас беспокоит вопрос о том, является ли шум проблемой, откройте изображение вручную в MSPaint или что-то подобное, удалите шум и запустите новое изображение через OCR. Это лучший способ узнать, как работает механизм OCR, что смущает, а что нет. Каждый механизм распознавания текста работает по-своему.
В этом случае небольшие помехи могут сбивать с толку и процесс зонирования персонажа. Вы должны проверить значения ограничивающего прямоугольника, возвращаемые механизмом OCR, чтобы увидеть, ищет ли механизм OCR правильное местоположение для вашего слова или символа.
У некоторых механизмов распознавания есть опции для удаления шума с изображения во время процесса распознавания. Это часто называют depspeckle или устранением шума. Было бы возможно удалить шум, используя Leptonica ( http://www.leptonica.org/), который теперь является частью последних изображений Тессеракта.
Экранные шрифты представляют собой большую проблему для механизмов OCR, потому что DPI часто очень низок. В случае вашего "E" должно быть более чем достаточно пикселей для распознавания. Тяжелый удар может сбить двигатель с толку.
Кроме того, коммерческие двигатели, как правило, будут более точными, чем Tesseract, но также будут идти с дорогими лицензионными сборами.