背景
UI自动化测试-验证码识别
验证码分析:图片上有折线,验证码有数字,有英文字母大小写,分类的时候需要更多的样本,验证码的字母是彩色的,图片上有雪花等噪点,因此识别改验证码难度较大。
方案对比
Tesseract OCR
- 缺点:这个安装比较麻烦,对新手不太友好,各个系统,不同的python环境下,坑比较多;需要额外设置环境变量等。
「我敢保证你一次肯定安装不成功」哈哈哈哈。
- 优点:是免费,较为易用;但其识别精度一般。
百度OCR
- 缺点:需要进行一系列的配置,新手一次搞不定;免费的api有调用次数限制而且需要联网【有限制】;离线sdk需要购买。
- 优点:识别准确率高
带带弟弟OCR
- 缺点:暂时没有缺点,和以上两个ocr相比;免费的忽略缺点【哈哈哈哈哈】
- 优点:「开箱即用,安装简单,大力推荐,识别率高」
实际操作
安装
安装过程相当简单,不会出现任何报错,版本不兼容的情况【python>=3.6】
pip install ddddocr
展示代码
# -*- coding: utf-8 -*- """ @Project :demo @File :test_ocr.py @Author :lijiawei @Date :2021/8/10 8:45 上午 """ import ddddocr def magic_ocr(img_path): """ ocr 识别 :param img_path: 验证码图片路径 :return: """ ocr = ddddocr.DdddOcr() with open(img_path, 'rb') as f: img_bytes = f.read() return ocr.classification(img_bytes)
实战
- 我们以【北京通】登录页面的验证为例
- 识别结果
1774 Process finished with exit code 0
验证码样本
用我们的验证码样本实战,平均识别速度在100ms以内,识别率100%
思考&反问
「大家觉得方便高效有没有质和量的区别?」
- 用【Tesseract OCR】进行验证码识别方不方便?也挺方便!
- 用【百度OCR】进行验证码识别方不方便?也挺方便!
- 用【带带弟弟OCR】进行验证码识别方不方便?好像也挺方便!
就经常问人,如果这三种方式能给够同样给你带来方便,也就是说这三 种方式你都欣赏过都使用过,你都觉得还不错对吧!
「那你觉得哪种方便更让你方便?」
总而言之,如果你需要进行验证码识别,以上3种识别方案都尝试过, 那么,带带弟弟OCR(ddddocr)这个库一定是你的首选方案~
下集预告
- 将验证码识别服务化
部署属于自己的 OCR API