如何在 python 中读取这些验证码?

Posted

技术标签:

【中文标题】如何在 python 中读取这些验证码?【英文标题】:How to read these captchas in python? 【发布时间】:2022-01-05 07:52:01 【问题描述】:

我有以下问题。我想在 python 中阅读这些类型的验证码:

我做过的最好的代码是这样的,但是它无法解决所有这些验证码:

import pytesseract
import cv2
import numpy as np
import re

def odstran_sum(img,threshold):
    """Funkce odstrani sum."""
    filtered_img = np.zeros_like(img)
    labels,stats= cv2.connectedComponentsWithStats(img.astype(np.uint8),connectivity=8)[1:3]
    label_areas = stats[1:, cv2.CC_STAT_AREA]
    for i,label_area in enumerate(label_areas):
        if label_area > threshold:
            filtered_img[labels==i+1] = 1
    return filtered_img


def preprocess(img_path):
    """Konvertuje do binary obrazku."""
    img = cv2.imread(img_path,0)
    blur = cv2.GaussianBlur(img, (3,3), 0)
    thresh = cv2.threshold(blur, 150, 255, cv2.THRESH_BINARY_INV)[1]
    filtered_img = 255-odstran_sum(thresh,20)*255
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
    erosion = cv2.erode(filtered_img,kernel,iterations = 1)
    return erosion

def captcha_to_string(obrazek):
    """Funkce vrati text z captchy"""
    text = pytesseract.image_to_string(obrazek)
    return re.sub(r'[^\x00-\x7F]+',' ', text).strip()

img = preprocess(CAPTCHA_NAME)
text = captcha_to_string(img)
print(text)

是否可以改进我的代码以使其能够阅读所有这五个示例?非常感谢。

【问题讨论】:

【参考方案1】:

我认为除了编写自己的基于类似验证码的图像识别神经网络之外,没有太多需要改进的地方。验证码经过精心设计,因此计算机很难对其进行解码,因此我认为您无法获得完美的结果。

【讨论】:

以上是关于如何在 python 中读取这些验证码?的主要内容,如果未能解决你的问题,请参考以下文章

性能测试:Jmeter压测过程中的短信验证码读取

性能测试:Jmeter压测过程中的短信验证码读取

python 将验证码保存到本地 读取 写入

python selenium 获取短信验证码是字符和数字怎么读取数字

PHP如何将一个验证码图片内容读取出来,都是数字.

验证码错误无法读取cookie 不管我有没有输密码和验证码都出现这提示