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转换字符串为摩尔斯电码的方法
Jul 06 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
Python 编程速成(推荐)
Apr 15 Python
linux环境中没有网络怎么下载python
Jul 07 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
Python实现Hash算法
Mar 18 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分页显示制作详细讲解
2006/12/05 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
PHP 学习路线与时间表
2010/02/21 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
json的结构与遍历方法实例分析
2017/04/25 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Python timeit模块的使用实践
2020/01/13 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
几个SQL的面试题
2014/03/08 面试题
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
好人好事演讲稿
2014/09/01 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
分享几种python 变量合并方法
2022/03/20 Python
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android