• 验证码识别之OCR识别


    验证码识别:

    背景:

    ​ 决定开一个专题给大家讲一下验证码识别,不要多想,我们不搞深度学习,知识用于攻破模拟登录的时候弹出的验证码,后续会给大家讲讲滑块等等,反爬虫策略如何应对。

    好了,言归正传,目前市面上的验证码识别主要是:

    • OCR识别 但是可能准确率不高
    • 各种打码平台
    • opencv
    • 深度学习模型
    环境安装:

    首先需要安装一个软件,我们可以理解为驱动 Home · UB-Mannheim/tesseract Wiki (github.com),然后根据你的机器是32还是64傻瓜式安装即可。

    在这里插入图片描述

    然后配置一下环境变量:

    安装完后,需要将Tesseract添加到系统变量中。
      环境变量: 我的电脑 ->属性 -> 高级系统设置 ->环境变量 ->系统变量 ,在 path 中添加 安装路径。

    在这里插入图片描述

    在这里插入图片描述

    然后打开cmd输入:

    tesseract -v
    
    • 1

    然后出现版本就说明配置成功了!

    在这里插入图片描述

    然后需要安装两个python的外部库:

    pip install pillow
    pip install pytesseract
    # 或者 
    conda install pillow
    conda  install pytesseract
    
    • 1
    • 2
    • 3
    • 4
    • 5
    OCR代码实现:

    找一张图片去试试!我们平时模拟登录的时候一般是讲图片爬取到本地然后进行识别,然后调用识别后的值.

    在这里插入图片描述

    上代码:

    import pytesseract
    from PIL import Image
    img = Image.open("./code.jpg")
    text = pytesseract.image_to_string(img, lang='eng') # lang='eng' 表示将识别语言设置为英语(English) 也可以识别数字
    # text = pytesseract.image_to_string(img, lang='eng+chi_sim')
    print(text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数:

    除了英语之外,pytesseract还支持其他语言的文字识别。以下是一些常见的语言参数示例:
    
    • 1
    • 英语:lang='eng'

    • 中文简体:lang='chi_sim'

    • 中文繁体:lang='chi_tra'

    • 西班牙语:lang='spa'

    • 法语:lang='fra'

    • 德语:lang='deu'

    • 意大利语:lang='ita'

    • 日语:lang='jpn'

    • 韩语:lang='kor'

      大家可以根据需要将语言参数设置为适当的值。如果需要识别多种语言的混合文本,可以将语言参数设置为多个值,例如lang='eng+chi_sim'表示同时使用英语和中文简体进行识别。

      我们看一下识别后的结果:

    在这里插入图片描述

    发现不是很一样吧,因为验证码边缘模糊,像素等等原因,直接使用OCR识别验证码识别率不高,我们也不常用,大家记住,天下没有免费的午餐,接下来我们看一下中文的识别效果。

    识别文本:

    在这里插入图片描述

    import pytesseract
    from PIL import Image
    img = Image.open(r"E:\OCR\img\test.jpg")
    text = pytesseract.image_to_string(img, lang='eng+chi_sim')
    print(text)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    哟,识别的还不错,我们基于识别后的结果做一些字符串操作就可以准确得到啦!

  • 相关阅读:
    【个人首测】百度文心一言 VS ChatGPT GPT-4
    机器学习领域经典书籍推荐
    戏说领域驱动设计(十一)——纠偏
    使用 Docker 部署 WebTop 运行 Linux 系统
    栈的简单应用(利用Stack进行四则混合运算)(JAVA)
    Go 使用Viper处理Go应用程序的配置
    【毕业设计】基于单片机的人脸识别与追踪系统 -物联网 stm32
    java基于SpringBoot+Vue的学生选课作业系统 element
    技术人应该广度还是深度学习?
    Python爬虫可以爬取什么
  • 原文地址:https://blog.csdn.net/ak_bingbing/article/details/134451597