Python使用pytesseract进行图片验证码识别的完整指南
本文详细介绍如何利用Python内置库pytesseract结合Tesseract OCR引擎实现图片验证码识别。内容涵盖Tesseract的安装、环境变量配置、pytesseract库的修改以及简单与复杂验证码的代码实现,并提供超级鹰第三方接口的解决方案。
Python pytesseract图片验证码识别教程
本文主要讲解如何在Python中利用内置库pytesseract完成图片验证码的识别工作。文中提供了详细的示例代码,对学习和实际工作具有参考价值。
环境准备与配置
环境准备阶段需要完成以下步骤。
首先安装Tesseract模块。
Tesseract官方文档及下载链接为:https://digi.bib.uni-mannheim.de/tesseract/。
下载完成后会得到一个exe安装包,直接右键点击进行安装。安装完毕后,需配置系统环境变量,具体操作是编辑系统变量中的path,并添加Tesseract的安装路径。
若需支持其他语言识别,请下载对应的数据文件。本文仅涉及中文识别,因此只需下载中文文字训练数据即可。随后,将下载的.traineddata文件复制到安装目录下的'tessdata'文件夹中,路径通常为:C:\Program Files (x86)\Tesseract-OCR\tessdata。
接下来配置系统环境变量。
同样编辑系统变量中的path,添加Tesseract的主安装路径:C:\Program Files (x86)\Tesseract-OCR。
在cmd命令行模式下测试安装是否成功。
执行命令:tesseract test.jpg text -l chi_sim。
最后,安装Python所需的第三方库。
pip install pillow #一个python的图像处理库,pytesseract依赖
pip install pytesseract
找到pytesseract的安装目录,路径一般为:C:\Python34\Lib\site-packages\pytesseract。编辑其中的pytesseract.py文件,此步骤必须执行,否则运行代码时会报错。
在pytesseract.py文件中,将tesseract_cmd修改为实际安装路径: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)
以上就是本文的全部内容,希望对读者有所帮助,欢迎继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













