Python使用pytesseract进行图片验证码识别的完整指南

江岸
江岸
发布时间:2026-10-13 | 1人浏览过
原创

本文详细介绍如何利用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)

以上就是本文的全部内容,希望对读者有所帮助,欢迎继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表