摘要:了別人代碼的你最近忽然對(duì)圖像識(shí)別有了興趣,作為一個(gè)前端,當(dāng)然是想用來(lái)深入研究。先從簡(jiǎn)單的入手,識(shí)別圖片驗(yàn)證碼。圖片驗(yàn)證碼對(duì)開(kāi)發(fā)來(lái)說(shuō)一點(diǎn)也不陌生,它是對(duì)服務(wù)器保護(hù)的一道屏障,避免了諸如暴力破解密碼之類的攻擊。
copy了別人代碼的你
最近忽然對(duì)圖像識(shí)別有了興趣,作為一個(gè)前端,當(dāng)然是想用Javascript來(lái)深入研究。
先從簡(jiǎn)單的入手,識(shí)別圖片驗(yàn)證碼。圖片驗(yàn)證碼對(duì)web開(kāi)發(fā)來(lái)說(shuō)一點(diǎn)也不陌生,它是對(duì)服務(wù)器保護(hù)的一道屏障,避免了諸如暴力破解密碼之類的攻擊。但是,今天就是要去突破這道屏障。
現(xiàn)在開(kāi)源的圖像識(shí)別技術(shù)有很多,我在GitHub上找到了一個(gè)用Javascript實(shí)現(xiàn)的,相對(duì)受歡迎的框架Tesseract.js。
我先準(zhǔn)備好一個(gè)簡(jiǎn)單的驗(yàn)證碼
這個(gè)是數(shù)字字母的組合,接下來(lái)我們就用tesseract.js來(lái)對(duì)這個(gè)驗(yàn)證碼進(jìn)行解析。
npm install --save tesseract.js
使用這個(gè)命令進(jìn)行安裝,--save代表只安裝到當(dāng)前項(xiàng)目中。
首先要在代碼中進(jìn)行引入
var tesseract = require("tesseract.js");
然后使用tesseract的recognize方法對(duì)圖片進(jìn)行解析。
tesseract.recognize(myImage,options) .then(function(result){ console.log(result) });
其中,myImage可以是圖片file對(duì)象,或者圖片的存放地址的字符串等,我們這里先用存放地址的字符串。
options則是對(duì)解析過(guò)程的個(gè)性化設(shè)置,可以設(shè)置語(yǔ)言等其他屬性,較為重要的有lang屬性,用來(lái)設(shè)置語(yǔ)言類型,英文為eng(默認(rèn)),數(shù)字是Math.
下面我們來(lái)看一下實(shí)際的運(yùn)行效果。
文件系統(tǒng)
app.js
使用node命令運(yùn)行
可以看出,輸出的結(jié)果是LPGU,驗(yàn)證碼中的字母數(shù)字組合是LP6U,略有偏差,將6解析成了G。
所以,自動(dòng)識(shí)別雖好,但是準(zhǔn)確率還是需要提高。
tesseract.js是可以通過(guò)訓(xùn)練來(lái)提高準(zhǔn)確率的,我們看一下第一次運(yùn)行結(jié)束后發(fā)生了什么變化。
運(yùn)行結(jié)束之后,文件系統(tǒng)中生成了一個(gè)eng.traineddata文件
這個(gè)文件,就是tesseract的訓(xùn)練文件,下次再分析的時(shí)候,會(huì)先從這個(gè)訓(xùn)練文件中尋找是否有匹配的結(jié)果。通過(guò)這種方式,形成它自己的大腦。
當(dāng)然,我認(rèn)為也可以手動(dòng)的添加相同格式的文件進(jìn)去,手動(dòng)的擴(kuò)充這個(gè)圖像分析系統(tǒng)的智能性。
recognize第一個(gè)參數(shù)所允許的類型:
因?yàn)?b>tesseract.js既可以運(yùn)行node服務(wù)器中,也可以運(yùn)行再瀏覽器中,我們這里只提在服務(wù)器中所允許的類型
文件地址(string)
包含PNG或JPEG類型的Buffer對(duì)象
imageData對(duì)象
瀏覽器中引入方式
使用方式同node方法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/83156.html
摘要:驗(yàn)證碼的識(shí)別成功率跟圖片質(zhì)量關(guān)系密切,一般拿到后的驗(yàn)證碼都得經(jīng)過(guò)灰度化,二值化,去噪,利用就可以很方便的做到。 了解驗(yàn)證碼 什么是驗(yàn)證碼? 所謂驗(yàn)證碼,就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識(shí)別其中的驗(yàn)證碼信息,輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能,通俗說(shuō)就是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序 驗(yàn)證碼的作用 可以...
摘要:識(shí)別網(wǎng)站驗(yàn)證碼詳見(jiàn)維基百科或者百度百科識(shí)別的驗(yàn)證碼原理采集一批驗(yàn)證碼,根據(jù)圖片特點(diǎn)進(jìn)行初步處理二值化灰度化濾波降噪等處理然后分割圖片,旋轉(zhuǎn)圖片,模板選取,訓(xùn)練算法,讓它更準(zhǔn)確。 最近在爬某網(wǎng)站,老是蹦出來(lái)驗(yàn)證碼,就想著找個(gè)OCR破了這個(gè)驗(yàn)證碼,然后就開(kāi)始了OCR探索之旅。 首先簡(jiǎn)單說(shuō)一下什么是OCR OCR是(Optical Character Recognition,光學(xué)字符識(shí)別)的...
摘要:我是一個(gè)知乎輕微重度用戶,之前寫(xiě)了一只爬蟲(chóng)幫我爬取并分析它的數(shù)據(jù),我感覺(jué)這個(gè)過(guò)程還是挺有意思,因?yàn)檫@是一個(gè)不斷給自己創(chuàng)造問(wèn)題又去解決問(wèn)題的過(guò)程。所以這只爬蟲(chóng)還有登陸知乎搜索題目的功能。 我一直覺(jué)得,爬蟲(chóng)是許多web開(kāi)發(fā)人員難以回避的點(diǎn)。我們也應(yīng)該或多或少的去接觸這方面,因?yàn)榭梢詮呐老x(chóng)中學(xué)習(xí)到web開(kāi)發(fā)中應(yīng)當(dāng)掌握的一些基本知識(shí)。而且,它還很有趣。 我是一個(gè)知乎輕微重度用戶,之前寫(xiě)了一只爬...
摘要:圖片驗(yàn)證碼是目前最常用的一種。神經(jīng)網(wǎng)絡(luò)以上驗(yàn)證碼識(shí)別都依賴于字符切分,切分的好壞幾乎直接決定識(shí)別的準(zhǔn)確程度。目前驗(yàn)證碼識(shí)別最先進(jìn)的是谷歌在識(shí)別街景圖像中門(mén)牌號(hào)碼中使用的一套的算法。 全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱CAPTCHA),...
摘要:下面我們便來(lái)講種驗(yàn)證碼的識(shí)別方式和一些思路。哈哈庫(kù)其實(shí),驗(yàn)證碼識(shí)別歸根到底還是對(duì)各種各樣圖片的識(shí)別和操作,中有很對(duì)圖像處理的庫(kù),其中就是其中之一。所以在處理驗(yàn)證碼識(shí)別之前,必須先了解庫(kù)和。第五步,按照規(guī)定軌跡進(jìn)行拖動(dòng),完成驗(yàn)證。 寫(xiě)在前面 現(xiàn)在,很多網(wǎng)站采取各種各樣的措施來(lái)反爬蟲(chóng),其中之一就是使用驗(yàn)證碼。當(dāng)我們?cè)L問(wèn)網(wǎng)頁(yè)時(shí),必須先通過(guò)驗(yàn)證碼才能夠訪問(wèn)頁(yè)面。下面我們便來(lái)講2種驗(yàn)證碼的識(shí)別方...
閱讀 3601·2021-11-18 10:02
閱讀 1016·2021-09-04 16:48
閱讀 2077·2019-08-30 15:55
閱讀 3589·2019-08-30 15:52
閱讀 1873·2019-08-30 14:08
閱讀 3614·2019-08-30 13:19
閱讀 1211·2019-08-27 10:53
閱讀 3180·2019-08-26 12:11