Я начинаю изучать OpenCV и Tesseract, и у меня возникают проблемы с тем, что кажется очень простым примером.
Вот изображение, которое я пытаюсь распознать, и которое читается как "171 m":
Я делаю некоторую предварительную обработку.Поскольку синий цвет является основным цветом текста, я извлекаю синий канал и применяю простую настройку порога.
img = cv2.imread('171_m.png')[y, x, 0]
_, thresh = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY_INV)
Полученное изображение выглядит следующим образом:
Затем добавьте это в Тессеракт с psm 7
для одной строки:
text = pytesseract.image_to_string(thresh, config='--psm 7')
print(text)
>>> lim
Я также попытался ограничить возможные символы, и это становится немного лучше, но не совсем.
text = pytesseract.image_to_string(thresh, config='--psm 7 -c tessedit_char_whitelist=1234567890m')
print(text)
>>> 17m
OpenCV v4.1.1.
Tesseract v5.0.0-alpha.20190708
Любая помощь приветствуется.