用圖像識別做爬蟲居然這么爽——上篇

歡迎關(guān)注哈希大數(shù)據(jù)微信公眾號
引 言
最近閑來無事為了提高自己,到查試圖抓取一些企業(yè)信息,可是發(fā)現(xiàn)在抓取其企業(yè)列表頁時(shí),看到的企業(yè)名稱和實(shí)際抓到的不一樣,網(wǎng)站對其進(jìn)行了加密(今天又正常了),同樣例如貓眼電影的電影票房信息也進(jìn)行了加密處理。結(jié)合之前處理驗(yàn)證碼的經(jīng)驗(yàn)我在想能不能利用圖像識別的方法抓取這些內(nèi)容,因?yàn)橐话憔W(wǎng)頁上的內(nèi)容都很規(guī)整,據(jù)我目前的測試Tesseract對規(guī)整數(shù)字的識別率已經(jīng)達(dá)到95%以上,走通這個(gè)流程后不但可以實(shí)現(xiàn)對簡單驗(yàn)證碼的自動識別,而且爬取不同的網(wǎng)站不用去分析其加密函數(shù)了豈不快哉!本次分享是我的初步嘗試,目前用的工具為:Python+Selenium+chrome+PIL+Tesseract-OCR**。

image

01 THE THINKING 思路介紹

這里采用了selenium驅(qū)動瀏覽器的方法進(jìn)行數(shù)據(jù)采集,因?yàn)樾枰褜?yīng)標(biāo)簽保存為圖片進(jìn)行識別,所以只能采用模擬登陸的辦法。這里用chrome瀏覽器后面會介紹為什么不采用phantomJS,PIL是用來進(jìn)行圖片預(yù)處理的,一般首相會進(jìn)行二值化處理,進(jìn)而進(jìn)行銳化處理增強(qiáng)其對比度,這樣對于字體顏色不深的圖像識別可以提高其識別精度。這里的圖像識別采用的是Tesseract-OCR這個(gè)軟件,Tesseract的OCR引擎最先由HP實(shí)驗(yàn)室于1985年開始研發(fā),至1995年時(shí)已經(jīng)成為OCR業(yè)內(nèi)最準(zhǔn)確的三款識別引擎之一。然而,HP不久便決定放棄OCR業(yè)務(wù),Tesseract也從此塵封。數(shù)年以后,HP意識到,與其將Tesseract束之高閣,不如貢獻(xiàn)給開源軟件業(yè),讓其重?zé)ㄐ律C2005年,Tesseract由美國內(nèi)華達(dá)州信息技術(shù)研究所獲得,并求諸于Google對 Tesseract進(jìn)行改進(jìn)、消除Bug、優(yōu)化工作。

Tesseract目前已作為開源項(xiàng)目發(fā)布在Google Project,其項(xiàng)目主頁在這里(https://code.google.com/p/tesseract-ocr/)查看。

02 THE INSTALL AND CONFIGURATION
Tesseract安裝配置

以下是Windows環(huán)境下的安裝配置過程:

第一步:下載安裝包

根據(jù)https://github.com/tesseract-ocr/tesseract/wiki,找到64位的非官方安裝包http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe,下載后直接安裝即可,但是要記得你的安裝目錄,我們等會配置環(huán)境變量要用。

如果不是做英文的圖文識別,還需要下載其他語言的識別包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

簡體字識別包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata

繁體字識別包:https://github.com/tesseract-ocr/tessdata/raw/4.0/chi_tra.traineddata

數(shù)字識別包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/num.traineddata。

下好的識別包需要放到安裝目錄Tesseract-OCR下的tessdata文件夾下,如下圖所示:
image

第二步:安裝

直接執(zhí)行下載好的tesseract-ocr-setup-4.00.00dev.exe,下一步、下一步安裝。

第三步:配置環(huán)境變量

注意:我的系統(tǒng)是win8.1,其他系統(tǒng)應(yīng)該差不多,跟配置java變量一樣

復(fù)制你的安裝地址,我的是安裝在E:\Program Files (x86)\Tesseract-OCR,界面如下:
image

復(fù)制安裝路徑“E:\Program Files (x86)\Tesseract-OCR”,進(jìn)入“控制面板\系統(tǒng)和安全\系統(tǒng)”,點(diǎn)擊“高級系統(tǒng)設(shè)置”進(jìn)入系統(tǒng)屬性,點(diǎn)擊“環(huán)境變量”,然后新建兩個(gè)環(huán)境變量,分別命名為:Tesseract-OCR和TESSDATA_PREFIX,值分別是:E:\Program Files (x86)\Tesseract-OCR ,E:\Program Files (x86)\Tesseract-OCR\tessdata;配置好了點(diǎn)擊保存。新添加環(huán)境變量一般需要重啟電腦后才能生效。
image

打開命令終端,輸入:tesseract -v,可以看到版本信息,如下圖:
image

如果報(bào)錯(cuò)可能是配置問題,請仔細(xì)檢查,如不能解決請留言。安裝配置完成可以在命令行中測試tesseract是否能識別成功,具體流程如下:

  1. 先將需要識別的圖片保存到一個(gè)文件夾中,例如網(wǎng)頁上的內(nèi)容可以通過截圖將需要分別的內(nèi)容保存為圖片;

  2. 可在命令行窗口中打開存儲圖片的文件夾;

  3. 在命令行中輸入:

tesseract <圖片名稱如:1.png> <保存文件名稱如:1(此時(shí)識別出的內(nèi)容會保存在1.txt文件內(nèi))> -l <識別包名稱如:num/eng/chi_sim,若干識別的內(nèi)容中存在數(shù)字和英文可以用:num+eng,其他情況與此相似>,舉例如下:

image

解析的圖片識別結(jié)果如下圖所示:

image

&

image

通過這個(gè)案例我們發(fā)現(xiàn)我們能準(zhǔn)確識別其內(nèi)容??!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,213評論 3 119
  • 第一步安裝 Tesserocr的安裝爬蟲過程中難免會遇到各種各樣的驗(yàn)證碼,而大多數(shù)驗(yàn)證碼還是圖形驗(yàn)證碼,這時(shí)候我們...
    何苦_python_java閱讀 8,679評論 0 1
  • 1.使用tesseract-ocr 最早由HP公司研發(fā)的一個(gè)開源文字識別項(xiàng)目,項(xiàng)目地址為:https://gith...
    橄欖的世界閱讀 2,052評論 0 50
  • 2.1 a. [ac]*a[abc]* | c*b. ((a[bc]*a)|[bc]*)*c. [10]*00|0...
    小浪明閱讀 395評論 0 0
  • 我今天想到了什么是自己,什么是人 人就是街上來來往往的 自己就是那些人壓抑在心里,不漏出來,不為人知,有惡心,有自...
    艷陽下行馬閱讀 147評論 0 0

友情鏈接更多精彩內(nèi)容