Node实现验证码识别

栏目: 编程工具 · 发布时间: 8年前

内容简介:Node实现验证码识别

copy了别人代码的你

Node实现验证码识别

最近忽然对图像识别有了兴趣,作为一个前端,当然是想用Javascript来深入研究。

先从简单的入手,识别图片验证码。图片验证码对web开发来说一点也不陌生,它是对服务器保护的一道屏障,避免了诸如暴力破解密码之类的攻击。但是,今天就是要去突破这道屏障。

现在开源的图像识别技术有很多,我在GitHub上找到了一个用Javascript实现的,相对受欢迎的框架 Tesseract.js

我先准备好一个简单的验证码

Node实现验证码识别

这个是数字字母的组合,接下来我们就用 tesseract.js 来对这个验证码进行解析。

安装

npm install --save tesseract.js

使用这个命令进行安装, --save 代表只安装到当前项目中。

使用

首先要在代码中进行引入

var tesseract = require('tesseract.js');

然后使用tesseract的recognize方法对图片进行解析。

tesseract.recognize(myImage,options)
.then(function(result){
    console.log(result)
});

其中,myImage可以是图片file对象,或者图片的存放地址的字符串等,我们这里先用存放地址的字符串。

options则是对解析过程的个性化设置,可以设置语言等其他属性,较为重要的有 lang 属性,用来设置语言类型,英文为 eng (默认),数字是 Math .

运行效果

下面我们来看一下实际的运行效果。

文件系统

Node实现验证码识别

app.js

Node实现验证码识别

使用node命令运行

Node实现验证码识别

可以看出,输出的结果是 LPGU ,验证码中的字母数字组合是 LP6U ,略有偏差,将6解析成了G。

所以,自动识别虽好,但是准确率还是需要提高。

Tesseract.js训练

tesseract.js是可以通过训练来提高准确率的,我们看一下第一次运行结束后发生了什么变化。

运行结束之后,文件系统中生成了一个 eng.traineddata 文件

Node实现验证码识别

这个文件,就是 tesseract 的训练文件,下次再分析的时候,会先从这个训练文件中寻找是否有匹配的结果。通过这种方式,形成它自己的大脑。

当然,我认为也可以手动的添加相同格式的文件进去,手动的扩充这个图像分析系统的智能性。

附录一

recognize 第一个参数所允许的类型:

因为 tesseract.js 既可以运行node服务器中,也可以运行再浏览器中,我们这里只提在服务器中所允许的类型

  • 文件地址(string)

  • 包含 PNGJPEG 类型的 Buffer 对象

  • imageData 对象

附录二

浏览器中引入方式

<script src='https://cdn.rawgit.com/naptha/tesseract.js/1.0.10/dist/tesseract.js'></script>

使用方式同node方法

Node实现验证码识别


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数学建模(原书第5版)

数学建模(原书第5版)

[美] Frank R. Giordano、[美] William P.Fox、[美] Steven B.Horton / 叶其孝、姜启源 / 机械工业出版社 / 2014-10-1 / 99.00元

《华章数学译丛:数学建模(原书第5版)》旨在指导学生初步掌握数学建模的思想和方法,共分两大部分:离散建模和连续建模,通过本书的学习,学生将有机会在创造性模型和经验模型的构建、模型分析以及模型研究方面进行实践,增强解决问题的能力。 《华章数学译丛:数学建模(原书第5版)》对于用到的数学知识力求深入浅出,涉及的应用领域相当广泛,适合作为高等院校相关专业的数学建模教材和参考书,也可作为参加国内外数......一起来看看 《数学建模(原书第5版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具