前言
在我们的日常测试工作中,验证码绝对是很让我们头疼的一个东西,图形验证码,滑块验证码等场景阻碍着我们自动化测试的执行。那么,我们一直说的万能的Python,能不能帮我们解决让我们无比头疼的验证码问题呢?答案是肯定的,可以。下面我们就介绍一下Python的简单实用的识别验证码的库 ddddocr ,这个库简称带带弟弟ocr。
环境安装
ddddocr库目前支持的版本为Python3.9以下,所以版本太高的Python暂时是使用不了这个库的。
ddddocr支持Windows,Linux,Mac等系统,但是对M系列芯片的Mac电脑有限制,如下:
注:暂时不支持Macbook M1(X),手机怎样输图形验证码,M1(X)用户需要自己编译onnxruntime才可以使用,
安装命令,还是一样的pip命令安装
pip install ddddocr
图形验证码类型及图形验证码填写方法如下: 拖动图片类,将图片拖动至与原图片一样;计算类,输入相应的计算结果;图片文字类,点击选择相应的文字;图形相关类,选择与示例图片类似的图片;按照相应的图片验证方式输入即可。 已赞过 已踩过<。
因为库比较大,所以建议使用国内源安装,速度会更快一些,使用如下命令:
pip install ddddocr -i
图形验证码识别
我们经常遇到的图形验证码主要是纯数字,纯字母,数字字母组合,下面我们通过ddddocr库来进行逐一的识别看看是否能够准确识别这三种验证码。
纯数字验证码
验证码图片如下:
代码如下:
运行结果如下图:
纯字母验证码
验证码图片如下:
代码如下:
运行结果如下图:
数字字母混合的验证码
验证码图片如下:
1、在电脑的百度上输入农行,找到其官方网站以后点击进入。2、页面跳转以后进入到该网站,点击网银登录按钮进入。3、进入到网银登录界面以后输入账号和密码,此时可以看到当前出现的图形验证码。4、将输入法切换到英文状态下,依。
代码如下:
输出结果如下图:
邮政银行图形验证码的四种输入方法:1、图形验证一般会给一个图形,然后给四个选择,有字母,数字等相应即可。2、一种是拖动的,将图片拖动和原图片一样,一种是数字的自己手打相应数字即可。3、一种是图片文字的,自己点击。
滑块验证码
滑块验证码也是目前很多网站的验证手段,ddddocr同样可以帮助我们识别到滑动的位置。
滑块验证码示例如下:
要解决滑块验证码的问题,就需要我们识别到拼图缺口的位置,将滑块滑动至缺口,使得拼图能够填充。
我们需要先提取出2张图片,分别为background.png 和 target.png
代码如下:
import ddddocrdet = ddddocr.DdddOcr(det=False,ocr=False,show_ad=False)with open(&39;,&39;) as f:target_bytes = f.read()with open(&39;,&39;) as f:background_bytes = f.read()res = det.slide_match(target_bytes,background_bytes,simple_target=True)print(res)------------------------------------------输出结果如下:{&39;: 0,&39;: [184,58,246,120]}
target 的四个值就是缺口位置的左上角和右下角的左边位置。
1、图形验证,会给一个图形,然后给四个选择,选择都会有字母,或数字,在文字的前面,输入字母或文字即可。2、一种是拖动的将图片拖动和原图片一样,一种是数字的自己手打相应的数字上去。3、一种是图片文字的自己点击选。
中文验证码识别
中文验证码识别主要就是要求按顺序点击汉字等操作,ddddocr主要就是要识别图像上的汉字
图片如下:
代码如下:
import ddddocrimport cv2det = ddddocr.DdddOcr(det=True)with open(&34;,&39;) as f:image = f.read()poses = det.detection(image)im = cv2.imread(&34;)for box in poses:x1,y1,x2,y2 = boxim = cv2.rectangle(im,(x1,y1),(x2,y2),color=(0,0,255),thickness=2)cv2.imwrite(&34;,im)
生成的图片如下:
总结