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