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的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
python实现简单的文字识别
Nov 27 Python
python导入模块交叉引用的方法
Jan 19 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
matplotlib更改窗口图标的方法示例
Feb 03 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生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
js tab 选项卡
2009/04/26 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python Socket传输文件示例
2017/01/16 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
python复合条件下的字典排序
2020/12/18 Python
python爬取代理ip的示例
2020/12/18 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
优秀班集体获奖感言
2014/02/03 职场文书
毕业生自荐信格式
2014/03/07 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书