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的发展史
Sep 26 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
Python实现的归并排序算法示例
Nov 21 Python
浅析PHP与Python进行数据交互
May 15 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
python中字符串内置函数的用法总结
Sep 13 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
python中if及if-else如何使用
Jun 02 Python
python interpolate插值实例
Jul 06 Python
Python WebSocket长连接心跳与短连接的示例
Nov 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php建立Ftp连接的方法
2015/03/07 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
js中有关IE版本检测
2012/01/04 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
python里大整数相乘相关技巧指南
2014/09/12 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
django url到views参数传递的实例
2019/07/19 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
C#实现启动一个进程
2016/10/01 面试题
秋季运动会表扬稿
2014/01/16 职场文书
学生保证书格式
2015/02/27 职场文书
2016大一新生军训感言
2015/12/08 职场文书
车位出租协议书范本
2016/03/19 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers