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中的split()函数的使用方法
Apr 07 Python
Python MySQLdb Linux下安装笔记
May 09 Python
python操作列表的函数使用代码详解
Dec 28 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
Python实现多线程的两种方式分析
Aug 29 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 Python
基于python实现可视化生成二维码工具
Jul 08 Python
Python如何对齐字符串
Jul 30 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
解决python3中os.popen()出错的问题
Nov 19 Python
python实战之用emoji表情生成文字
May 08 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代码给图片加水印
2015/07/01 PHP
JavaScript 原型继承
2011/12/26 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python中优化NumPy包使用性能的教程
2015/04/23 Python
Python自动发邮件脚本
2017/03/31 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
详解flask表单提交的两种方式
2018/07/21 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
Python识别验证码的实现示例
2020/09/30 Python
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
大学四年个人的自我评价
2014/02/26 职场文书
四风对照检查材料范文
2014/09/27 职场文书
小学四年级学生评语
2014/12/26 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
独生子女证明范本
2015/06/19 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
Golang中异常处理机制详解
2021/06/08 Golang
MySQL数据管理操作示例讲解
2022/12/24 MySQL