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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
Python 迭代器工具包【推荐】
May 06 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
PyQt5每天必学之切换按钮
Aug 20 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
在python中安装basemap的教程
Sep 20 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python实现录制全屏和选择区域录屏功能
Feb 05 Python
python中数组和列表的简单实例
Mar 25 Python
python实现学生信息管理系统(面向对象)
Jun 05 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
java字符串格式化输出实例讲解
2021/01/06 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
医学生职业规划范文
2014/01/05 职场文书
食品安全工作方案
2014/05/07 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
python3操作redis实现List列表实例
2021/08/04 Python
2022漫威和DC电影上映作品
2022/04/05 欧美动漫