试图用Python中的OpenCV和Tesseract识别Captcha,但准确性不高

问题描述 投票:0回答:1

我正在尝试识别文本的验证码。

此验证码不是很困难。 (我认为)。

我打开图像并使用OpenCV进行转换,以使其易于识别。

我会给你看一个例子。验证码示例

“示例验证码”“>

OpenCV Catpcha之后

“在OpenCV>>

image = cv2.imread(filename)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
cv2.imwrite('OPENCV.png', gray)

# Get Text From Image
pytesseract.image_to_string(Image.open('OPENCV.png'), lang='eng', config="-c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ --psm 8")

很简单。但是结果是'PLLY2',但是我想要'PLLVI2'或'PLLV12'。

我是否可以使用任何选项或其他方式来获得更高的准确性?

我使用一个单词选项'psm 8'。我曾经尝试过让tesseract找到固定数量的字符,但这是不可能的。

如果您给我一个提示,我将非常感谢。非常感谢您阅读此问题。

我正在尝试识别文本的验证码。这个验证码不是很困难。 (我认为)。我打开图像并使用OpenCV对其进行转换,以使其易于识别。我会给你看一个例子。 ...

python ocr tesseract python-tesseract
1个回答
0
投票

您可以将图像切成每个字母并使用--psm 10:

image = cv2.imread(filename)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 
gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

gray1 = gray[:, :25]
gray2 = gray[:, 25:50]
gray3 = gray[:, 50:75]
gray4 = gray[:, 75:100]
gray5 = gray[:, 100:125]
gray6 = gray[:, 125:]

print(''.join([pytesseract.image_to_string(i, config='--psm 10 -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') for i in [gray1, gray2, gray3, gray4, gray5, gray6]]) 
© www.soinside.com 2019 - 2024. All rights reserved.