最近在爬某網(wǎng)站橄镜,老是蹦出來(lái)驗(yàn)證碼势告,就想著找個(gè)OCR破了這個(gè)驗(yàn)證碼弱睦,然后就開(kāi)始了OCR探索之旅伞矩。
首先簡(jiǎn)單說(shuō)一下什么是OCR
OCR是(Optical Character Recognition,光學(xué)字符識(shí)別)的簡(jiǎn)稱尽纽,主要用途:
OCR識(shí)別的驗(yàn)證碼原理
- 采集一批驗(yàn)證碼春锋,根據(jù)圖片特點(diǎn)進(jìn)行初步處理(二值化/灰度化/濾波/降噪等處理)
- 然后分割圖片,旋轉(zhuǎn)圖片差凹,模板選取期奔,訓(xùn)練算法侧馅,讓它更準(zhǔn)確。
- 有興趣的可以看一個(gè)Python實(shí)現(xiàn)的OCR識(shí)別驗(yàn)證碼詳細(xì)demo,實(shí)際操作過(guò)程挺有意思的呐萌,大家有興趣了可以試試
OCR識(shí)別驗(yàn)證碼的具體操作
-
首先我測(cè)試了一個(gè)百度開(kāi)源的Node.js實(shí)現(xiàn)的OCR包
gitHub地址 https://github.com/netpi/baidu-ocr-api
安裝也很簡(jiǎn)單直接按照官方的文檔安裝即可
發(fā)現(xiàn)百度的這個(gè)OCR包識(shí)別效果不太理想
node_ocr.png 然后經(jīng)過(guò)一番Google和小伙伴們的推薦 選擇一個(gè)Google開(kāi)源的tesseract這個(gè)是C++寫的馁痴,直接融合到爬蟲(chóng)里不太方便,有外國(guó)朋友基于tesseract封裝了一個(gè)Python的包pytesseract,直接開(kāi)箱即用搁胆,融入爬蟲(chóng)程序中弥搞。
-
百聞不如一run
ps(這里使用的操作系統(tǒng)是Ubuntu16.04;Python版本是2.7)
直接pip install pytesseract
然后Python圖片處理要用到PIL(Python Imaging Library)pip install PIL
原圖片
ocr.gif寫個(gè)簡(jiǎn)單的測(cè)試demo
code.png看下識(shí)別結(jié)果
error.png報(bào)錯(cuò)了渠旁, 根據(jù)報(bào)錯(cuò)信息來(lái)看攀例,是確實(shí)了什么文件,或者依賴lib
我跟蹤了pytesseract的代碼顾腊,發(fā)現(xiàn)是少了C++提供的OCR服務(wù)粤铭,因?yàn)閜ytesseract是調(diào)用的tesseract(C++寫的)
然后安裝tesseractsudo apt install tesseract
再run一下代碼
pyocr_res.png
整體結(jié)果還可以(倒數(shù)第四位識(shí)別錯(cuò)了),再訓(xùn)練一下準(zhǔn)確率就更高了杂靶。
預(yù)知后事如何梆惯,且聽(tīng)下回分解