Tesseract возвращает None вместо числа - PullRequest
0 голосов
/ 10 июля 2020

Контрольное изображение

Когда я запускаю pytesseract.image_to_string('file.png'), функция возвращает None вместо

'4X 35'

Любая помощь была бы замечательной. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Это изображение с очень низкой контрастностью, поэтому вам необходимо улучшить его с помощью PIL (или другой библиотеки), прежде чем Tesseract сможет правильно преобразовать его. Я обнаружил, что обрезка как можно ближе к тексту также помогает, хотя ручная настройка пикселей для кадрирования не очень масштабируема, если у вас много изображений разных размеров.

from PIL import Image, ImageEnhance

im = Image.open(r'file.png').convert('L') # convert to grayscale
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(15.0)

# crop 7 pixels off top and 10 off bottom
im = im.crop((0, 7, im.size[0], im.size[1] - 10)) 

# convert with whitelist of capital letters and digits
result = image_to_string(im, 
    config='--psm 10 --oem 3 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'))

print(result) # 4X35
0 голосов
/ 10 июля 2020

Используйте подушку, чтобы открыть изображение, а затем передайте объект подушки в pytesseract.

Пример-

from PIL import Image, ImageFilter
im = Image.open("file.png").convert('L')
im2 = im.filter(ImageFilter.GaussianBlur(radius = 1))
data = pytesseract.image_to_string(im2)

covert ('L') преобразует изображение в оттенки серого, вы также можете примените Размытие, чтобы смягчить изображение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...