js_reverse/猿人学练习/18验证码图片验证码-计算

知识点: headers反爬图片验证码机器学习

解题思路

找了3天的机器学习资料发现机器学习不是一朝一夕能学完的本来打算依葫芦画瓢直接搞定事与愿违不理解基础知识就不能很好调试模型既然这样那就先用百度ocr走一波。

找到图片验证码地址这里要注意的是此地址也存在headers反爬

请求

下面就注册百度ocr平台

https://ai.baidu.com/ai-doc/OCR/hk3h7y2qq

技术文档

请求

网页调试工具

请求

最主要的是还有免费额度,大企业果然大气多搞几个小号岂不是白嫖

请求

ocr平台找好了开始测试识别成功率我这边测试了6种识别接口

请求

发现图片进行灰度处理后+手写文字识别,成功率最高

def processing_image(img_file, standard=200):
    """ 1.将图片进行降噪处理, 通过二值化去掉后面的背景色并加深文字对比度 """
    img = Image.open(img_file)

    # 灰度转换
    _image = img.convert('L')

    # 二值化: 根据阈值 standard, 将所有像素都置为 0(黑色) 或 255(白色), 便于接下来的分割
    pixels = _image.load()
    for x in range(_image.width):
        for y in range(_image.height):
            if pixels[x, y] > standard:
                pixels[x, y] = 255
            else:
                pixels[x, y] = 0
    return _image

成功通过18验证码图片验证码-计算题的测试结果如下:

请求

100个数据地址总共调用了311次百度ocr接口包含测试期间用掉的78次图片识别成功率在42%,百度技术已经很不错了。感觉如果自己实现一个模型并且针对此验证码单独优化,效果应该会更好。