python利用Tesseract识别验证码的方法示例


Posted in Python onJanuary 21, 2019

无论是是自动化登录还是爬虫,总绕不开验证码,这次就来谈谈python中光学识别验证码模块tesserocrpytesseracttesserocrpytesseract是Python的一个OCR识别库,但其实是对tesseract做的一层Python API封装,pytesseract是Google的Tesseract-OCR引擎包装器;所以它们的核心是tesseract,因此在安装tesserocr之前,我们需要先安装tesseract

下载安装

下载地址:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0.20181030.exe

下载完成后,双击安装,可以勾选Additional language data(download)选项来安装OCR识别支持的语言包,但下载语言包实在是慢,我们可以直接从https://github.com/tesseract-ocr/tessdata/下载zip的语言包压缩文件,解压后将tessdata-master中的文件复制到Tesseract的安装目录C:\Program Files (x86)\Tesseract-OCR\tessdata目录下,最后我们配置下环境变量,我们将C:\Program Files (x86)\Tesseract-OCR添加到环境变量中。进入命令提示符,输入tesseract,显示下图结果,说明配置完成

python利用Tesseract识别验证码的方法示例

查看安装了的语言包:tesseract --list-langs

python利用Tesseract识别验证码的方法示例

显示我一共安装了167种语言包,里边包含英文或者其他字符。

测试

实验用的二维码

python利用Tesseract识别验证码的方法示例

基本使用语法
tesseract image.png result (tesseract 图片名称 生成文件名称)

结果

python利用Tesseract识别验证码的方法示例

由结果来看,识别出来了P、2和X,但是把C识别成了G,识别度还是比较高,接下来看在python中的使用

python引入tesseract

在python下使用pip命令即可完成下载安装 pip install pytesseract

识别验证码脚本

import pytesseract
from PIL import Image
im=Image.open('pin.png')
print(pytesseract.image_to_string(im))

结果

python利用Tesseract识别验证码的方法示例

这样识别的结果同样跟上文一样,个别字符识别的不是很准确

图像处理

现在网站上的二维码设计的通常很难复杂,如果直接识别的话很难识别出来,下面这段代码是进行灰度处理和二值化

import pytesseract
from PIL import Image
im=Image.open('5.jpg')
#进行置灰处理
im=im.convert('L')
#这个是二值化阈值
threshold=150
table=[]
for i in range(256):
 if i<threshold:
  table.append(0)
 else:
  table.append(1)
#通过表格转换成二进制图片,1的作用是白色,0就是黑色
im=im.point(table,"1")
im.show()
print(pytesseract.image_to_string(im))

原图

python利用Tesseract识别验证码的方法示例

置灰和二值化后

python利用Tesseract识别验证码的方法示例

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

Python 相关文章推荐
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Python 监测文件是否更新的方法
Jun 10 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
python实现横向拼接图片
Mar 23 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
python speech模块的使用方法
Sep 09 Python
详解Python中第三方库Faker
Sep 25 Python
Python之qq自动发消息的示例代码
Feb 18 Python
对python过滤器和lambda函数的用法详解
Jan 21 #Python
利用Python正则表达式过滤敏感词的方法
Jan 21 #Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 #Python
opencv python统计及绘制直方图的方法
Jan 21 #Python
python numpy 按行归一化的实例
Jan 21 #Python
python树莓派红外反射传感器
Jan 21 #Python
python实现自动解数独小程序
Jan 21 #Python
You might like
PHP中for循环语句的几种变型
2007/03/16 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
python实现猜单词游戏
2020/05/22 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
python openCV自制绘画板
2020/10/27 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
个人投资计划书
2014/05/01 职场文书
社会工作专业求职信
2014/07/15 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers