资讯专栏INFORMATION COLUMN

Node实现验证码识别

luckyw / 2033人阅读

摘要:了别人代码的你最近忽然对图像识别有了兴趣,作为一个前端,当然是想用来深入研究。先从简单的入手,识别图片验证码。图片验证码对开发来说一点也不陌生,它是对服务器保护的一道屏障,避免了诸如暴力破解密码之类的攻击。

copy了别人代码的你

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

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

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

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

这个是数字字母的组合,接下来我们就用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.

运行效果

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

文件系统

app.js

使用node命令运行

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

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

Tesseract.js训练

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

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

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

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

附录一

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

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

文件地址(string)

包含PNGJPEG类型的Buffer对象

imageData对象

附录二

浏览器中引入方式

使用方式同node方法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83156.html

相关文章

  • node识别验证

    摘要:验证码的识别成功率跟图片质量关系密切,一般拿到后的验证码都得经过灰度化,二值化,去噪,利用就可以很方便的做到。 了解验证码 什么是验证码? 所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能,通俗说就是一种区分用户是计算机和人的公共全自动程序 验证码的作用 可以...

    levy9527 评论0 收藏0
  • OCR识别验证

    摘要:识别网站验证码详见维基百科或者百度百科识别的验证码原理采集一批验证码,根据图片特点进行初步处理二值化灰度化滤波降噪等处理然后分割图片,旋转图片,模板选取,训练算法,让它更准确。 最近在爬某网站,老是蹦出来验证码,就想着找个OCR破了这个验证码,然后就开始了OCR探索之旅。 首先简单说一下什么是OCR OCR是(Optical Character Recognition,光学字符识别)的...

    Yangyang 评论0 收藏0
  • 一只node爬虫的升级打怪之路

    摘要:我是一个知乎轻微重度用户,之前写了一只爬虫帮我爬取并分析它的数据,我感觉这个过程还是挺有意思,因为这是一个不断给自己创造问题又去解决问题的过程。所以这只爬虫还有登陆知乎搜索题目的功能。 我一直觉得,爬虫是许多web开发人员难以回避的点。我们也应该或多或少的去接触这方面,因为可以从爬虫中学习到web开发中应当掌握的一些基本知识。而且,它还很有趣。 我是一个知乎轻微重度用户,之前写了一只爬...

    shiweifu 评论0 收藏0
  • 如何识别图片验证

    摘要:图片验证码是目前最常用的一种。神经网络以上验证码识别都依赖于字符切分,切分的好坏几乎直接决定识别的准确程度。目前验证码识别最先进的是谷歌在识别街景图像中门牌号码中使用的一套的算法。 全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),...

    y1chuan 评论0 收藏0
  • 验证识别

    摘要:下面我们便来讲种验证码的识别方式和一些思路。哈哈库其实,验证码识别归根到底还是对各种各样图片的识别和操作,中有很对图像处理的库,其中就是其中之一。所以在处理验证码识别之前,必须先了解库和。第五步,按照规定轨迹进行拖动,完成验证。 写在前面 现在,很多网站采取各种各样的措施来反爬虫,其中之一就是使用验证码。当我们访问网页时,必须先通过验证码才能够访问页面。下面我们便来讲2种验证码的识别方...

    keke 评论0 收藏0

发表评论

0条评论

luckyw

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<