摘要:了别人代码的你最近忽然对图像识别有了兴趣,作为一个前端,当然是想用来深入研究。先从简单的入手,识别图片验证码。图片验证码对开发来说一点也不陌生,它是对服务器保护的一道屏障,避免了诸如暴力破解密码之类的攻击。
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是可以通过训练来提高准确率的,我们看一下第一次运行结束后发生了什么变化。
运行结束之后,文件系统中生成了一个eng.traineddata文件
这个文件,就是tesseract的训练文件,下次再分析的时候,会先从这个训练文件中寻找是否有匹配的结果。通过这种方式,形成它自己的大脑。
当然,我认为也可以手动的添加相同格式的文件进去,手动的扩充这个图像分析系统的智能性。
recognize第一个参数所允许的类型:
因为tesseract.js既可以运行node服务器中,也可以运行再浏览器中,我们这里只提在服务器中所允许的类型
文件地址(string)
包含PNG或JPEG类型的Buffer对象
imageData对象
浏览器中引入方式
使用方式同node方法
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/83156.html
摘要:我是一个知乎轻微重度用户,之前写了一只爬虫帮我爬取并分析它的数据,我感觉这个过程还是挺有意思,因为这是一个不断给自己创造问题又去解决问题的过程。所以这只爬虫还有登陆知乎搜索题目的功能。 我一直觉得,爬虫是许多web开发人员难以回避的点。我们也应该或多或少的去接触这方面,因为可以从爬虫中学习到web开发中应当掌握的一些基本知识。而且,它还很有趣。 我是一个知乎轻微重度用户,之前写了一只爬...
摘要:图片验证码是目前最常用的一种。神经网络以上验证码识别都依赖于字符切分,切分的好坏几乎直接决定识别的准确程度。目前验证码识别最先进的是谷歌在识别街景图像中门牌号码中使用的一套的算法。 全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),...
阅读 3478·2021-11-18 10:02
阅读 902·2021-09-04 16:48
阅读 2002·2019-08-30 15:55
阅读 3501·2019-08-30 15:52
阅读 1767·2019-08-30 14:08
阅读 3467·2019-08-30 13:19
阅读 1105·2019-08-27 10:53
阅读 3079·2019-08-26 12:11