【Python】免费验证码识别包不来了解下吗?(附:已知的一些坑)
回答
收藏

【Python】免费验证码识别包不来了解下吗?(附:已知的一些坑)

安风
2022-10-24 16:55·浏览量:4805
安风
发布于 2022-10-24 16:54更新于 2022-10-24 16:554805浏览

如何安装?

可以选择清华源的镜像,安装速度会快一些~

一、前言

ddddocr是由sml2h3开发的专为验证码厂商进行对自家新版本验证码难易强度进行验证的一个python库,其由作者与kerlomz共同合作完成,通过大批量生成随机数据后进行深度网络训练,目前支持目标点选、字母数字、滑块拼图的识别

ddddocr奉行着开箱即用、最简依赖的理念,尽量减少用户的配置和使用成本,希望给每一位测试者带来舒适的体验

二、OCR识别部分

在1.2.0开始,ddddocr的识别部分进行了一次beta更新,主要更新在于网络结构主体的升级,其训练数据并没有发生过多的改变,所以理论上在识别结果上,原先可能识别效果的很好的图形在1.2.0上有一小部分概率会有一定程度的下降,也有可能原本识别不好的图形在1.2.0之后效果却变得特别好。 测试代码:

import ddddocr ocr = ddddocr.DdddOcr() with open("test.jpg", 'rb') as f: image = f.read() res = ocr.classification(image) print(res)

通过在初始化ddddocr的时候使用beta参数即可快速切换新模型

import ddddocr ocr = ddddocr.DdddOcr(beta=True) with open("test.jpg", 'rb') as f: image = f.read() res = ocr.classification(image) print(res)


这里放一部分测试图片:


三、 目标检测部分

在本次1.3.0的更新中,目标检测部分隆重登场! 目标检测部分同样也是由大量随机合成数据训练而成,对于现在已有的点选验证码图片或者未知的验证码图片都有可能具备一定的识别能力,适用于文字点选和图标点选。 简单来说,对于点选类的验证码,可以快速的检测出图片上的文字或者图标。

import ddddocr import cv2 det = ddddocr.DdddOcr(det=True) with open("test.jpg", 'rb') as f: image = f.read() poses = det.detection(image) print(poses) im = cv2.imread("test.jpg") for box in poses: x1, y1, x2, y2 = box im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2) cv2.imwrite("result.jpg", im)

举些例子:

四、滑块

两种滑块识别算法,算法非深度神经网络实现,仅使用opencv和PIL完成。

算法1

小滑块为单独的png图片,背景是透明图,如下图

Test

然后背景为带小滑块坑位的,如下图

import ddddocr import cv2 det = ddddocr.DdddOcr(det=False, ocr=False) with open('target.png', 'rb') as f: target_bytes = f.read() with open('background.png', 'rb') as f: background_bytes = f.read() res = det.slide_match(target_bytes, background_bytes) print(res)

提示:如果小图无过多背景部分,则可以添加simple_target参数, 通常为jpg或者bmp格式的图片

import ddddocr import cv2 slide = ddddocr.DdddOcr(det=False, ocr=False) with open('target.jpg', 'rb') as f: target_bytes = f.read() with open('background.jpg', 'rb') as f: background_bytes = f.read() res = slide.slide_match(target_bytes, background_bytes, simple_target=True) print(res)

算法2

一张图为带坑位的原图,如下图

Test

一张图为原图,如下图

import ddddocr import cv2 slide = ddddocr.DdddOcr(det=False, ocr=False) with open('bg.jpg', 'rb') as f: target_bytes = f.read() with open('fullpage.jpg', 'rb') as f: background_bytes = f.read() img = cv2.imread("bg.jpg") res = slide.slide_comparison(target_bytes, background_bytes) print(res)

五、已知的一些问题:

引入该库报如图错误,报错的日志为:

File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 728, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "C:\Users\admin\AppData\Local\ShadowBot\users\35b1b384-62c3-4b12-bff7-7fe64d0ec0d2\apps\bb566ff7-f1f9-4120-8e97-a58eba91ac4f\xbot_robot\image_captcha.py", line 12, in <module> import ddddocr File "C:\Users\admin\AppData\Local\ShadowBot\users\35b1b384-62c3-4b12-bff7-7fe64d0ec0d2\apps\bb566ff7-f1f9-4120-8e97-a58eba91ac4f\venv\lib\site-packages\ddddocr\__init__.py", line 10, in <module> import onnxruntime File "C:\Users\admin\AppData\Local\ShadowBot\users\35b1b384-62c3-4b12-bff7-7fe64d0ec0d2\apps\bb566ff7-f1f9-4120-8e97-a58eba91ac4f\venv\lib\site-packages\onnxruntime\__init__.py", line 55, in <module> raise import_capi_exception File "C:\Users\admin\AppData\Local\ShadowBot\users\35b1b384-62c3-4b12-bff7-7fe64d0ec0d2\apps\bb566ff7-f1f9-4120-8e97-a58eba91ac4f\venv\lib\site-packages\onnxruntime\__init__.py", line 23, in <module> from onnxruntime.capi._pybind_state import ( File "C:\Users\admin\AppData\Local\ShadowBot\users\35b1b384-62c3-4b12-bff7-7fe64d0ec0d2\apps\bb566ff7-f1f9-4120-8e97-a58eba91ac4f\venv\lib\site-packages\onnxruntime\capi\_pybind_state.py", line 32, in <module> from .onnxruntime_pybind11_state import * # noqa ImportError: DLL load failed: 找不到指定的模块。

DDL错误一般为环境问题,分析报错发现问题出在

onnxruntime.capi._pybind_state.py

检查源码发现:

# 如果在Windows上,请检查此导入错误是否由用户未安装2019 VC运行时引起 # VC 重制版安装程序通常会将 VC 运行时 dll 放在 System32 文件夹中,但也可能会在其他一些位置找到它。 # TODO,我们可能要尝试加载 VC 运行时 dll,而不是检查是否硬编码的文件路径有效,如果加载失败,则引发导入错误

解决方案为安装2019 VC 请参看:https://blog.csdn.net/yunmuq/article/details/108969444



                                                                      原创---长三角团队

收藏9
全部回答1
最新
发布回答
回答