验证码识别最佳方案,你不来试试?

2021-08-11 15:20:32 浏览数 (1)

背景

UI自动化测试-验证码识别

验证码分析:图片上有折线,验证码有数字,有英文字母大小写,分类的时候需要更多的样本,验证码的字母是彩色的,图片上有雪花等噪点,因此识别改验证码难度较大。

方案对比

Tesseract OCR

  • 缺点:这个安装比较麻烦,对新手不太友好,各个系统,不同的python环境下,坑比较多;需要额外设置环境变量等。

「我敢保证你一次肯定安装不成功」哈哈哈哈。

  • 优点:是免费,较为易用;但其识别精度一般。

百度OCR

  • 缺点:需要进行一系列的配置,新手一次搞不定;免费的api有调用次数限制而且需要联网【有限制】;离线sdk需要购买。
  • 优点:识别准确率高

带带弟弟OCR

  • 缺点:暂时没有缺点,和以上两个ocr相比;免费的忽略缺点【哈哈哈哈哈】
  • 优点:「开箱即用,安装简单,大力推荐,识别率高」

实际操作

安装

安装过程相当简单,不会出现任何报错,版本不兼容的情况【python>=3.6】

代码语言:javascript复制
pip install ddddocr

展示代码

代码语言:javascript复制
# -*- 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)

实战

  • 我们以【北京通】登录页面的验证为例
  • 识别结果
代码语言:javascript复制
1774
Process finished with exit code 0

验证码样本

用我们的验证码样本实战,平均识别速度在100ms以内,识别率100%

思考&反问

「大家觉得方便高效有没有质和量的区别?」

  • 用【Tesseract OCR】进行验证码识别方不方便?也挺方便!
  • 用【百度OCR】进行验证码识别方不方便?也挺方便!
  • 用【带带弟弟OCR】进行验证码识别方不方便?好像也挺方便!

就经常问人,如果这三种方式能给够同样给你带来方便,也就是说这三 种方式你都欣赏过都使用过,你都觉得还不错对吧!

「那你觉得哪种方便更让你方便?」


总而言之,如果你需要进行验证码识别,以上3种识别方案都尝试过, 那么,带带弟弟OCR(ddddocr)这个库一定是你的首选方案~

下集预告

  • 将验证码识别服务化

部署属于自己的 OCR API

关注「测试开发囤货」公众号回复「AI」,送你一套 Python机器学习 电子书。

0 人点赞