pytesseract: не верно распознается текст изображения
Друзья, мне нужно распознать числа на изображении, но при помощи pytesseract.Image_to_string() не получается - плохо считывает. Опытным путем, мне показалось, что проблема в фоне,но видимо не только. Менял фон, но изображение все равно плохо считывается. Прикладываю пример изображения. Это полное изображение, я конечно обрезал, обесцвечивал. фото возможно плохого качества, воспринимается не верно(третье фото результата)
Добавляю код:
from PIL import Image
import pytesseract
img = Image.open('/home/zevs525/Рабочий стол/resA3.jpg')
r, g, b = img.split()
g.save('/home/zevs525/Рабочий стол/resB.jpg')
#r.show()
g.show()
#b.show()
text = pytesseract.image_to_string(g)
print(text)
Но проблема еще в чем: похожее фото воспринимается правильно:

Ответы (1 шт):
Вам нужно делать предварительную обработку изображения. Изображение на сером фоне у вас и изображение с желтыми цифрами с точки зрения тессеракта совсем не похожи. Попробуйте сделать так:
Исходный файл:
from PIL import Image, ImageEnhance, ImageFilter
import pytesseract
img = Image.open('tess_img.png')
# Увеличиваем контрастность:
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(2)
# Преобразуем в черно-белый рисунок:
thresh = 200
fn = lambda x : 255 if x > thresh else 0
res = img.convert('L').point(fn, mode='1')
res.save("res.png") #сохранил предварительно обработанный файл для наглядности
Теперь картинка выглядит так:
text = pytesseract.image_to_string(res, lang="eng", config='--psm 6')
#обратите внимание на значение параметра pcm
print(text)
Результат:
342/436
text = pytesseract.image_to_string(res, lang="eng", config='--psm 13')
#играемся со значением параметра pcm
print(text)
342/430



