如何为Pytesseract处理此验证码图像?

2024-09-27 07:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Pytesseract自动解决像这样的CAPTCHA(它们都有红色背景和白色字母)

Captcha image

我一直在尝试处理图像,以使Pytesseract能够读取它,但没有成功。很高兴收到您的想法来处理这张图片。这是我的代码:

import cv2 import pytesseract tessdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"' pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' img = cv2.imread("captcha.png") img = cv2.resize(img, None, fx=2, fy=2) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) adaptive = cv2.adaptiveThreshold( gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 85, 20) print((pytesseract.image_to_string(img, config=tessdata_dir_config)).strip()) print((pytesseract.image_to_string(gray, config=tessdata_dir_config)).strip()) print((pytesseract.image_to_string(adaptive, config=tessdata_dir_config)).strip()) cv2.imshow("Captcha", img) # Output: IMQW cv2.imshow("Gray", gray) # Output: IMOW cv2.imshow("Adaptive", adaptive) # Output: IMOW, cv2.waitKey(7000)

Tags: toimageconfigimgoutputstringdircv2
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:01

我有一个三步解决方案


    1. 调整大小
    1. 结束
    1. 门槛

步骤1:调整大小


调整图像大小使OCR算法能够检测输入图像中的字符或数字笔划

第二步:结束


Closing是一种形态学操作,旨在去除输入图像中的小孔

如果我们仔细观察QW字符由许多小孔组成

步骤3:threhsall


我们将应用simple-threhsolding对图像进行二值化。我们的目标是从图像中去除任何遗留的瑕疵

^{tb1}$

结果:

IMQW

代码:


import cv2
from pytesseract import image_to_string

img = cv2.imread("QUfxY.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(h, w) = gry.shape[:2]
gry = cv2.resize(gry, (w*2, h*2))
cls = cv2.morphologyEx(gry, cv2.MORPH_CLOSE, None)
thr = cv2.threshold(cls, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
txt = image_to_string(thr)
print(txt)

相关问题 更多 >

    热门问题