在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记。 首选导入一些用到的库,re、Image、pytesseract、selenium、time import re # 用于正则f
在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记。
首选导入一些用到的库,re、Image、pytesseract、selenium、time
首先需要获取验证码图片,才能进一步识别。 创建类,定义webdriver和find_element_by_selector方法,用来打开网页和定位验证码图片的元素
然后打开浏览器截取验证码图片
未处理前的验证码图片如下: 未处理的验证码图片,对于python来说识别率较低,仔细看可以发现图片里有很对五颜六色扰乱识别的点,非常影响识别率。 下面对获取的验证码进行处理。
首先用convert把图片转成黑白色。设置threshold阈值,超过阈值的为黑色
经过灰度处理后的图片 然后删除一些扰乱识别的像素点。
经过去除噪点处理后的图片 最后把处理后的图片转成文字。
先设置pytesseract的路径,因为默认路径是错的,然后转换图片为文字,由于个别图片中识别会出现处理遗漏,会被识别成空格或则点或则分号什么的,所以增加了一个去除验证码中特殊字符的处理。
完整代码如下:
|
2019-06-18
2019-07-04
2021-05-23
2021-05-27
2021-05-27