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 BeautifulSoup使用方法详解
Nov 21 Python
python+mongodb数据抓取详细介绍
Oct 25 Python
python爬虫获取多页天涯帖子
Feb 23 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Django REST framework内置路由用法
Jul 26 Python
python分布式编程实现过程解析
Nov 08 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python邮件中附加文字、html、图片、附件实现方法
Jan 04 Python
学点简单的Django之第一个Django程序的实现
Feb 24 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下封装较好的数字分页方法
2010/11/23 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
Angular排序实例详解
2017/06/28 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
TensorFlow实现创建分类器
2018/02/06 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
酒店执行总经理岗位职责
2013/12/15 职场文书
化学教师自荐信范文
2013/12/28 职场文书
给女朋友的道歉信
2014/01/10 职场文书
年终考核评语
2014/01/19 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
基于Redission的分布式锁实战
2022/08/14 Redis