Python - 解决基本的嘈杂验证码

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

我正在尝试解决有一点噪音的基本验证码,但事实证明这很困难。

这是其中一个验证码的示例图像:

这是我正在使用的代码:

import cv2
from pytesseract import image_to_string

img = cv2.imread("sample.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)

我使用此代码得到的输出是:

"_JHB9TPR

这显然是不正确的。我认为需要做更多的工作来使图像更清晰,以便字母突出,但字母与某些背景噪声的颜色相同,从而导致它错误地识别某些字母,这无济于事。

还有其他我应该做的技术(带有示例代码)吗?

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

对于您的特定样品:

img = cv2.imread("./sample.png")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3,3), sigmaX=15, sigmaY=15)
thresh = cv2.threshold(blur, 200, 255, cv2.THRESH_BINARY)[1]

txt = image_to_string(thresh)
print(txt)

输出:

JH69TPR

对该图像执行 OCR;

这个解决方案确实是特定于输入的,因为我想您需要调整阈值,甚至稍微改变该值也会改变输出:正如您在评论中提到的,数字受到的影响最大。

© www.soinside.com 2019 - 2024. All rights reserved.