Не удается распознать слово с помощью pytesseract.image_to_string

#python-3.x #opencv #tesseract

#python-3.x #opencv #тессеракт

Вопрос:

У меня есть изображение с повернутым текстом. Я получаю позицию для этого текста и обрезаю его, а затем поворачиваю этот текст. До этого я вижу, что мой текст отображается идеально. Но теперь, если я отправлю этот повернутый текст в ‘pytesseract.image_to_string’, он не распознает текст. Вот код.

 croped = orig[y:y h, x:x w].copy()
cv2.imshow('cropped ',croped)
text_img = cv2.cvtColor(croped, cv2.COLOR_BGR2GRAY)
text_img_nt = cv2.bitwise_not(text_img)

cv2.imshow('text img not ',text_img_nt)
thresh = cv2.threshold(text_img_nt, 0, 255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
coords = np.column_stack(np.where(thresh > 0))
angle = cv2.minAreaRect(coords)[-1]

if angle < -45:
     angle = -(90   angle)
else:
     angle = -angle
            
(h, w) = text_img_nt.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)

rotated = cv2.warpAffine(text_img_nt, M, (w, h),flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)
cv2.imshow('rotated',rotated)  
cv2.waitKey(100000)
config='-l eng --oem 1 --psm 3'
textRecognized = pytesseract.image_to_string(rotated, config = config, lang ='eng')
print(textRecognized)
  

Обрезанное изображение
Повернутое изображение

распознанный текст: «Ol Ey»

Есть ли какие-либо проблемы в моем коде? Любая помощь будет высоко оценена.

Комментарии:

1. tessereact хорошо работает, когда у вас текст черный, а фон белый. просто сделайте rotated = 255 - rotated

Ответ №1:

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

введите описание изображения здесь

 rotated = cv2.bitwise_not(rotated)
  

введите описание изображения здесь