原理:直接用python实现验证码识别有些困难,但是可以通过第三方软件的辅助来实现,就是Tesseract ORC.下载地址:https://github.com/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows
下载完成后安装tips:
可以选择多个包,包括数字,英语,中文,其他乱七八糟的就别选了,下载训练包要很久。
如果是默认安装的,安装完成后Tesseract ORC位于C:\Program Files (x86)\Tesseract-OCR
进入环境变量配置,分别将上述路径配置到path环境变量和新建的系统变量TESSDATA_PREFIX
最后,进入命令行模式,输入tesseract –v能正确显示版本信息,表示环境变量配置正确,否则自行检查环境变量。
命令行中进行识别的命令为:
tesseract img_path output_path –l eng –psm 7
其中img_path 为图片保存路径,output_path为识别后内容保存txt文件路径,不需要txt后缀
至此,外部软件Tesseract ORC已经安装完毕,可以知道,当前是有输入—验证码保存路径,有输出结果txt文件,那么只需要读取txt文件内容即可获得图片识别结果了。
以下是一个封装识别方法,在安装好Tesseract ORC的情况下使用即可。
安装pytesseract库及PIL库(pip install即可)
pytesseract作用是提供接口处理图片文字识别。
PIL作用是打开图片文件,并进行灰度、二值化处理。
其中tesseract_cmd为Tesseract –ORC目录,要根据安装路径配置
务必保证环境变量中有配置字符识别库TESSDATA_PREFIX
方法传入图片路径即可获得验证码内容(这种只能识别简单的验证码,如白底少干扰,类似这种还需要更加复杂的图片颜色处理才能识别,或者下载特定字符训练库)
在UI****自动化中实现验证码识别:
两种方法:1、通过解析验证码图片URL使用requests库下载图片进行处理
2、通过截图,获取验证码所在位置截图,保存后进行处理。
结语:识别图片文字有时候需要对图片的灰度、二值化处理比较多,这里不做展开,简单的验证码使用这个方法就可以识别了。现在有些验证码比较丧心病狂决然是gif文件,使用这个方法识别不了,还是找开发注释比较靠谱。