Pytesseract не может распознавать символы в двоичных изображениях - PullRequest
0 голосов
/ 06 мая 2018

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

First Captcha Image

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

script.py

 cv2.imwrite(filename, imgOP)
 text = pytesseract.image_to_string(Image.open(filename))

Вывод в консоль для изображения отсутствует

Однако, когда попробовал с другим изображением (приведенным ниже), я получил вывод как

Second Image Captcha

PGKQKf

Что опять не так из-за строки над буквой T

Я использовал различные методы для очистки изображений, такие как эрозия, расширение, а также вероятностное преобразование Хафа (результат приведен ниже)

#Hough Line Transform
img = cv2.imread('Output1.png')
edges = cv2.Canny(img, 1000, 1500)
minLineLength = 0
maxLineGap = 10000000000
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 15, minLineLength, maxLineGap)
for x in range(0, len(lines)):
    for x1, y1, x2, y2 in lines[x]:
        cv2.line(img, (x1, y1), (x2, y2), (255, 255, 255), 2)

cv2.imwrite('houghlines3.jpg', img)

где изображение после преобразования выглядит примерно так

enter image description here

Любая другая комбинация значений minLineLength и maxLineGap не работает.

Как двигаться дальше? Я проверил различные методы, чтобы сделать Тессеракт более точным, однако я не уверен, какой из них мне следует использовать.

Кроме Tesseract, существуют ли другие методы, которые можно применять для получения желаемых результатов.

Я думал о создании маски, где с помощью онлайн-инструмента я преобразовал изображение в 0 и 1, приведенные ниже. Однако как это сделать и использовать его для идентификации символов?

Binary Text

...