我正在尝试从下面的验证码图像中提取值,但我的代码没有给我输出。我得到空字符串作为输出。
我尝试使用下面的代码。虽然它在下图中工作得很好。
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 ""`
CAPTCHA 被故意用来阻止像 Tesseract 这样的 OCR 工具读取内容,从而破解验证码。确实有机器学习[wiki]方法来解决这个问题,这些方法并不专注于真正的“理解”和识别字符,它更多的是一个比 Tesseract 更容易的分类问题,因为字母表 仅由数字组成,数字的数量是固定的,并且数字通常位于大致相同的位置。
但大多数网站无论如何都放弃了验证码,因为事实证明机器学习最终在这方面优于机器。 “我不是机器人”复选框不会检查人类识别数字的技能,它会查看鼠标到达复选框的路径,并尝试确定是机器还是人类这样做了,这通常会不采取绝对最优路径,并且常常涉及少量噪声。