环境准备:
1, 安装 Tesseract 模块
Git 文档地址: https://digi.bib.uni-mannheim.de/tesseract/
下载后就是一个 exe 安装包, 直接右击安装即可, 安装完成之后, 配置一下环境变量, 编辑 系统变量里面 path, 添加下面的安装路径:
2, 如果您想使用其他语言, 请下载相应的培训数据,(我们只做中文, 暂时下载一个中文的文字训练数据就可以) , 然后将. traineddata 文件复制到'tessdata'目录中. C:\Program Files (x86)\Tesseract-OCR\tessdata
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:\Python34\Lib\site-packages\pytesseract, 编辑 pytesseract.py 文件 (此步骤必须做, 否则运行代码时会报错):
tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
代码实例:
简单验证码代码:
- import requests
- from PIL import Image
- import pytesseract
- '''
- 简单验证码
- '''
- # 验证码地址
- url = "https://www.renrendai.com/passport/index/captcha?time=1551682134111"
- response = requests.get(url).content
- #将图片写入文件
- with open('yzm.png','wb') as f:
- f.write(response)
- f.close()
- '''识别验证码'''
- #第一步: 通过内置模块 PIL 打开文件
- pic = Image.open('yzm.png')
- #第二步: 识别图片中的内容
- pic_str = pytesseract.image_to_string(pic)
- print("验证码识别结果为:",pic_str)
百度文库图片文档的识别:
- # 下载图片
- baidu_url = "https://wkretype.bdimg.com/retype/zoom/4127ed79a26925c52cc5bf99?pn=2&o=jpg_6&md5sum=9cdc209bc34a40ed774f7e14c0be59c4&sign=5dbcb28bf1&png=11238-22475&jpg=41808-117940"
- baidu_pic = requests.get(baidu_url).content
- #图片写入文件
- with open('baidu_pic.jpg','wb') as f:
- f.write(baidu_pic)
- f.close()
- #识别验证码
- baidu_img = Image.open('baidu_pic.jpg')
- baidu_img_str = pytesseract.image_to_string(baidu_img,lang="chi_sim")
- print('百度文库图片内容为:',baidu_img_str)
复杂的验证码, 直接识别不了, 可以使用超级鹰的第三方接口, 如有需要, 自己进行账号的注册, 这里直接贴代码喽:
- from chaojiying import Chaojiying
- chaojiying_url= "http://www.chaojiying.com/include/code/code.php?u=1"
- response = requests.get(chaojiying_url).content
- with open('rryz.png','wb') as f:
- f.write(response)
- f.close()
- #读取文件内容
- with open('rryz.png','rb') as f:
- pic1 = f.read()
- #调用第三方打码平台接口识别验证码
- yz = Chaojiying(username='*****', password='****', soft_id='****')
- res = yz.post_pic(pic1,codetype='1902').get('pic_str') #1902 验证码类型
- print('识别的结果:',res)
来源: http://www.bubuko.com/infodetail-2978884.html