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写的创建文件夹自定义函数mkdir()
Aug 25 Python
python中的hashlib和base64加密模块使用实例
Sep 02 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
python 实时遍历日志文件
Apr 12 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
python如何通过twisted搭建socket服务
Feb 03 Python
10个示例带你掌握python中的元组
Nov 23 Python
Python数据类型最全知识总结
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
php的字符串用法小结
2010/06/08 PHP
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
实例详解Python模块decimal
2019/06/26 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
国际象棋商店:The Chess Store
2018/07/09 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
员工自我鉴定
2013/10/09 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
求职信结尾怎么写
2014/05/26 职场文书
护士个人总结范文
2015/02/13 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL