首页 > 解决方案 > Pytesseract 无法识别二进制图像中的字符

问题描述

使用各种方法,我将图像验证码更改为看起来像这样

第一张验证码图片

然而,在使用 Pytesseract OCR 时,包无法识别任何字符,我认为这是由于字母上方的行。

脚本.py

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

图像的控制台输出为无

但是,当尝试使用另一张图片(如下所示)时,我得到的输出为

第二张图片验证码

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)

转换后的图像看起来有点像这样

在此处输入图像描述

minLineLength 和 maxLineGap 的任何其他值组合都不起作用。

一个人应该如何前进?我检查了各种技术以使 Tesseract 更准确,但是我对应该使用哪一种感到困惑。

除了 Tesseract 之外,还有任何其他技术可以应用来获得所需的结果。

我曾想过创建一个蒙版,使用在线工具将图像转换为下面给出的 0 和 1。但是如何去做并使用它来识别字符呢?

二进制文本

标签: pythonopencvimage-processingcv2

解决方案


推荐阅读