在實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的過程中,驗(yàn)證碼的出現(xiàn)總是會(huì)阻礙爬蟲的工作。本期介紹一種利用深度神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)的端到端的驗(yàn)證碼識(shí)別方法。通過本方法,可以在不切割圖片、不做模板匹配的情況下實(shí)現(xiàn)精度超過90%的識(shí)別結(jié)果。

本文分為兩個(gè)部分,第一個(gè)部分介紹如何利用深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)驗(yàn)證碼的訓(xùn)練和識(shí)別,第二個(gè)部分介紹在實(shí)現(xiàn)過程中需要克服的工程問題。

一. 基于深度神經(jīng)網(wǎng)絡(luò)的驗(yàn)證碼識(shí)別

驗(yàn)證碼的識(shí)別是從圖片到文字的過程。傳統(tǒng)的算法如OCR正是為了解決此類問題而設(shè)計(jì)的。然而,在真實(shí)情形中,驗(yàn)證碼通常并不以規(guī)則的文字出現(xiàn),即文字通常會(huì)有不同程度的變形,圖像本身也通常會(huì)被添加或多或少的噪聲。這些干擾的出現(xiàn),使得文字分割、模板匹配不再有效,進(jìn)而OCR算法也很難解析出結(jié)果。

近年來,深度神經(jīng)網(wǎng)絡(luò)(DNN)在圖像識(shí)別領(lǐng)域已經(jīng)被證明了強(qiáng)大的識(shí)別能力。單個(gè)文字的識(shí)別是典型的分類問題。通常的做法為訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)的最后一層分為N種類別,代表字符的數(shù)目。比如對(duì)于英文字母,最后一層的分類器便是26個(gè)。比如經(jīng)典的LeNet(http://yann.lecun.com/exdb/lenet/)即為解決單個(gè)文字識(shí)別的網(wǎng)絡(luò):

然而驗(yàn)證碼通常包含多個(gè)字符,如何利用現(xiàn)有的網(wǎng)絡(luò)實(shí)現(xiàn)這類分類問題呢?實(shí)際上這個(gè)問題再機(jī)器學(xué)習(xí)中被稱為多標(biāo)簽訓(xùn)練問題。和上述每個(gè)圖片輸入只對(duì)應(yīng)一個(gè)標(biāo)簽類別對(duì)比,這類分類的輸出是多個(gè)標(biāo)簽。我們同樣可以對(duì)傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)稍作改變以適應(yīng)這種情況。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式