如果验证码字母相互连接,OpenCV OCR 无法正确检测

OpenCV OCR could not detect properly if the capcha letter is inter-connected

原图:

然后我把图片转了,图片清晰度更好:

然而,我发现OpenCV返回错误,因为我发现字母'U'和'B'是相互连接的。

请问我能不能解决这个问题?

非常感谢大家。

我不认为问题是字符相互连接。 我知道您想通过应用二进制逆阈值操作来识别验证码,但问题是每个字符的表示方式。例如 B8 无法被 pytesseract 识别,您需要 train 来表示当前字符。

即使您将每个字符分开并应用 erosion

U e J 4

B8无法正确识别,在当前状态下。

代码:


import cv2
from pytesseract import image_to_string

img = cv2.imread("input.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(h, w) = gry.shape[:2]
start = 0
end = int(w/4)

for _ in range(0, 4):
    cropped = gry[0:h, start:end]
    start = end
    end = start + int(w/4)
    erd = cv2.erode(cropped, None, iterations=1)
    txt = image_to_string(erd, config="--psm 6")
    print([character for character in txt if character.isalnum()][0])
    cv2.imshow("erd", erd)
    cv2.waitKey(0)