使用Python解决验证码

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

我正在尝试从下面的验证码图像中提取值,但我的代码没有给我输出。我得到空字符串作为输出。 ''

我尝试使用下面的代码。虽然它在下图中工作得很好。 '2OA920'

def read_captcha():
    ptes.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    try:
        img = cv2.imread('ss.png', 0)
        img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
        imagetext = ptes.image_to_string(img)
    except TypeError:
        imagetext="a b"
    l = imagetext.split()
    s = ""
    for i in range(len(l)):
        s += l[i]
    if len(s)>0:
        return s
    else:
        return ""`
python python-3.x django selenium-webdriver python-tesseract
1个回答
0
投票

CAPTCHA 被故意用来阻止像 Tesseract 这样的 OCR 工具读取内容,从而破解验证码。确实有机器学习[wiki]方法来解决这个问题,这些方法并不专注于真正的“理解”和识别字符,它更多的是一个比 Tesseract 更容易的分类问题,因为字母表 仅由数字组成,数字的数量是固定的,并且数字通常位于大致相同的位置。

但大多数网站无论如何都放弃了验证码,因为事实证明机器学习最终在这方面优于机器。 “我不是机器人”复选框不会检查人类识别数字的技能,它会查看鼠标到达复选框的路径,并尝试确定是机器还是人类这样做了,这通常会

采取绝对最优路径,并且常常涉及少量噪声。

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