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动态性强类型用法实例
May 09 Python
Python基于select实现的socket服务器
Apr 13 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
python tkinter组件摆放方式详解
Sep 16 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
django 实现后台从富文本提取纯文本
Jul 02 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/11/26 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
js获取Get值的方法
2016/09/29 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Python异常处理操作实例详解
2018/08/28 Python
使用Python进行目录的对比方法
2018/11/01 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
员工安全生产承诺书
2014/05/22 职场文书
优秀团队申报材料
2014/12/26 职场文书
工作推荐信模板
2015/03/25 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
医院党建工作总结2015
2015/05/26 职场文书
高中同学会致辞
2015/08/01 职场文书
物业管理交接协议书
2016/03/24 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang