• 使用python内置库pytesseract实现图片验证码的识别


    环境准备:

    1、安装Tesseract模块

         git文档地址:https://digi.bib.uni-mannheim.de/tesseract/    

         下载后就是一个exe安装包,直接右击安装即可,安装完成之后,配置一下环境变量,编辑 系统变量里面 path,添加下面的安装路径:

    2、如果您想使用其他语言,请下载相应的培训数据,(我们只做中文,暂时下载一个中文的文字训练数据就可以) ,然后将.traineddata文件复制到'tessdata'目录中。C:Program Files (x86)Tesseract-OCR essdata

    3、配置环境变量:    

      编辑 系统变量里面 path,添加下面的安装路径:C:Program Files (x86)Tesseract-OCR  

      cmd命令模式下测试是否安装成功:
      tesseract test.jpg text -l chi_sim

    4、安装python的第三方库:  

      pip install pillow #一个python的图像处理库,pytesseract依赖
      pip install pytesseract

    5、找到pytesseract的安装包,C:Python34Libsite-packagespytesseract,编辑pytesseract.py文件(此步骤必须做,否则运行代码时会报错):

      tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'

    代码实例:  

    简单验证码代码:
      
     1 import requests
     2 from PIL import Image
     3 import pytesseract
     4 
     5 '''
     6 简单验证码
     7 '''
     8 # 验证码地址
     9 url = "https://www.renrendai.com/passport/index/captcha?time=1551682134111"
    10 response = requests.get(url).content
    11 
    12 #将图片写入文件
    13 with open('yzm.png','wb') as f:
    14     f.write(response)
    15 f.close()
    16 
    17 '''识别验证码'''
    18 #第一步:通过内置模块PIL打开文件
    19 pic = Image.open('yzm.png')
    20 #第二步:识别图片中的内容
    21 pic_str = pytesseract.image_to_string(pic)
    22 print("验证码识别结果为:",pic_str)
    百度文库图片文档的识别:
     1 #下载图片
     2 baidu_url = "https://wkretype.bdimg.com/retype/zoom/4127ed79a26925c52cc5bf99?pn=2&o=jpg_6&md5sum=9cdc209bc34a40ed774f7e14c0be59c4&sign=5dbcb28bf1&png=11238-22475&jpg=41808-117940"
     3 baidu_pic = requests.get(baidu_url).content
     4 
     5 #图片写入文件
     6 with open('baidu_pic.jpg','wb') as f:
     7     f.write(baidu_pic)
     8 f.close()
     9 
    10 #识别验证码
    11 baidu_img = Image.open('baidu_pic.jpg')
    12 baidu_img_str = pytesseract.image_to_string(baidu_img,lang="chi_sim")
    13 print('百度文库图片内容为:',baidu_img_str)
    复杂的验证码,直接识别不了,可以使用超级鹰的第三方接口,如有需要,自己进行账号的注册,这里直接贴代码喽:
     1 from chaojiying import Chaojiying
     2 
     3 chaojiying_url= "http://www.chaojiying.com/include/code/code.php?u=1"
     4 response = requests.get(chaojiying_url).content
     5 
     6 with open('rryz.png','wb') as f:
     7     f.write(response)
     8 f.close()
     9 
    10 #读取文件内容
    11 with open('rryz.png','rb') as f:
    12     pic1 = f.read()
    13 
    14 #调用第三方打码平台接口识别验证码
    15 yz = Chaojiying(username='*****', password='****', soft_id='****')
    16 
    17 res = yz.post_pic(pic1,codetype='1902').get('pic_str')  #1902 验证码类型
    18 print('识别的结果:',res)
     
     

      

     

        

  • 相关阅读:
    DOM 获取元素,设置样式
    js检查浏览器内核版本信息
    获取浏览器可视屏幕宽度
    swift 闭包+嵌套函数+extension+单例+嵌套函数+??
    HTTP请求错误大全
    Swift:网络库Alamofire
    Swift 值类型和引用类型
    Swift URL Schemes使用
    Swift编程规范
    swift系统学习控件篇:UITableView+UICollectionView
  • 原文地址:https://www.cnblogs.com/benben-wu/p/10487998.html
Copyright © 2020-2023  润新知