Python基于内置库pytesseract实现图片验证码识别功能

这篇文章主要介绍了Python基于内置库PyTesseract实现图片验证码识别功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Python基于内置库PyTesseract实现图片验证码识别功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

环境准备:

1、安装Tesseract模块

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

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

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

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'

代码实例:

简单验证码代码

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)

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...