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实现的一个火车票转让信息采集器
Jul 09 Python
python杀死一个线程的方法
Sep 06 Python
基于Python 的进程管理工具supervisor使用指南
Sep 18 Python
Python的时间模块datetime详解
Apr 17 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
python如何爬取网页中的文字
Jul 28 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 31 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
yii2中使用Active Record模式的方法
2016/01/09 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
ArrayList类(增强版)
2007/04/04 Javascript
javascript String 的扩展方法集合
2008/06/01 Javascript
JavaScript 拖拉缩放效果
2008/12/10 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Python Tkinter基础控件用法
2014/09/03 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
使用Python写个小监控
2016/01/27 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
python 将md5转为16字节的方法
2018/05/29 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
python如何支持并发方法详解
2020/07/25 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
美国在线工具商店:Acme Tools
2018/06/26 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
Servlet面试题库
2015/07/18 面试题
2014年节能减排工作总结
2014/12/06 职场文书
预备党员个人总结
2015/02/14 职场文书
2015年导购员工作总结
2015/04/25 职场文书
浅谈python中的多态
2021/06/15 Python
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技