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


Posted in Python onFebruary 24, 2020

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

环境准备:

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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python二叉树的实现实例
Nov 21 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
python实现随机加减法生成器
Feb 24 #Python
Python拼接字符串的7种方式详解
Mar 19 #Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 #Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 #Python
python绘制动态曲线教程
Feb 24 #Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 #Python
Windows系统下pycharm中的pip换源
Feb 23 #Python
You might like
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python实现的最近最少使用算法
2015/07/10 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
Python之指数与E记法的区别详解
2019/11/21 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
高中课前三分钟演讲稿
2014/09/13 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server