vlambda博客
学习文章列表

自动化脚本无法处理验证码?Python图片识别库Tesseract实战


前言:

在Ui测试的时候,有时我们会遇到”元素以图片的形式展示内容”(最经典的案例使验证码).这时传统的文档解析方案就失效了.
但是,Python中你可以轻易的使用ocr(光学字符识别)技术.对图片元素中的文字进行提取.从而解决技术难题.具体需要以下3步:

①安装Tesseract-ocr服务
②安装pytesseract-python驱动库
③识别图片


1.关于Tesseract

①Tesseract是一款由Google赞助的开源OCR。


②Tesseract 已经有 30 年历史,开始它是惠普实验室的一款专利软件,然后在 2005 年开源,自 2006 年后由 Google 赞助进行后续的开发和维护。


③在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而在现在的免费 OCR 引擎中,其识别精度也仍然是出类拔萃的。因为其免费与较好的效果,许多的个人开发者以及一些较小的团队在使用着 Tesseract ,诸如验证码识别、车牌号识别等应用中,不难见到 Tesseract 的身影。


④Tesseract(/‘tesərækt/) 这个词的意思的本意是”超立方体”.不过这里用到的,是一款以其命名的开源 OCR(Optical Character Recognition, 光学字符识别) 软件。


*所谓 OCR 是图像识别领域中的一个子领域,该领域专注于对图片中的文字信息进行识别并转换成能被常规文本编辑器编辑的文本。

安装:

1.安装Tesseract.exe
安装包已经上传到网盘之中
链接:
https://pan.baidu.com/s/18-PSv8Jqhdy6I9Fo9JQfww 
提取码:tn78

安装过程中唯一要注意的是:
在勾选组件的时候勾选中文扩展
自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战

之后一路点击next即可

配置环境变量:
1.需要在path里配置
2.需要新建一个系统变量 TESSDATA_PREFIX

自动化脚本无法处理验证码?Python图片识别库Tesseract实战

自动化脚本无法处理验证码?Python图片识别库Tesseract实战

检查tesseract服务是否安装成功
tesseract -v

自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战


2.关于pytesseract

pytesseract库为我们提供了调用Tesseract的API,即只要系统中有Tesseract命令.就可以用python代码来驱动识别

安装python的api库
想要使用python去调用pytesseract,就需要安装pytesseract库。安装命令如下:
pip install pytesseract

*已知bug:库源代码路径硬编码
安装完成后,还需要进行一步设置。由于pytesseract库的代码里调用Tesseract服务的路径写的有点问题(windows环境),所以这里手动修改pytesseract.py

自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战
打开原代码,修改这里的调用路径

自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战

3.在python代码中调试

①准备好一张用于识别的图片(如下)

自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战

②编写代码(如图)
自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战

效果如图:

自动化脚本无法处理验证码?Python图片识别库Tesseract实战自动化脚本无法处理验证码?Python图片识别库Tesseract实战

可以看到,图片中的文字已经被转化为Python字符串变量了


推荐学习

码同学Java全栈自动化,开课倒计时!

冲击年薪50W+!