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分割TXT文件成4K的TXT文件
May 23 Python
python实现DNS正向查询、反向查询的例子
Apr 25 Python
Python中分数的相关使用教程
Mar 30 Python
Python的Django框架使用入门指引
Apr 15 Python
Python中你应该知道的一些内置函数
Mar 31 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
python pyheatmap包绘制热力图
Nov 09 Python
linux查找当前python解释器的位置方法
Feb 20 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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
php5.2.0内存管理改进
2007/01/22 PHP
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
毕业生自荐信格式
2014/03/07 职场文书
教师个人自我评价范文
2014/04/13 职场文书
消防安全宣传标语
2014/06/07 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2014年信用社工作总结
2014/11/25 职场文书
小孩不笨观后感
2015/06/03 职场文书