最近在爬某網站,總是蹦出來驗證碼,就想着找個OCR破了這個驗證碼,而後就開始了OCR探索之旅。node
OCR是(Optical Character Recognition,光學字符識別)的簡稱,主要用途:git
採集一批驗證碼,根據圖片特色進行初步處理(二值化/灰度化/濾波/降噪等處理)api
而後分割圖片,旋轉圖片,模板選取,訓練算法,讓它更準確。測試
有興趣的能夠看一個Python實現的OCR識別驗證碼詳細demo,實際操做過程挺有意思的,你們有興趣了能夠試試網站
首先我測試了一個百度開源的Node.js實現的OCR包
gitHub地址 https://github.com/netpi/baidu-ocr-apiurl
安裝也很簡單直接按照官方的文檔安裝便可
發現百度的這個OCR包識別效果不太理想spa
![node_ocr.png][1]
而後通過一番Google和小夥伴們的推薦 選擇一個Google開源的tesseract這個是C++寫的,直接融合到爬蟲裏不太方便,__有外國朋友基於tesseract封裝了一個Python的包pytesseract__,直接開箱即用,融入爬蟲程序中。
百聞不如一run
**ps(這裏使用的操做系統是Ubuntu16.04;Python版本是2.7)** 直接 `pip install pytesseract` 而後Python圖片處理要用到PIL(Python Imaging Library) `pip install PIL` 原圖片
寫個簡單的測試demo ![code.png][3] 看下識別結果 ![error.png][4] 報錯了, 根據報錯信息來看,是確實了什麼文件,或者依賴lib 我跟蹤了pytesseract的代碼,發現是少了C++提供的OCR服務,由於pytesseract是調用的tesseract(C++寫的) 而後安裝tesseract ```sudo apt install tesseract``` 再run一下代碼
總體結果還能夠(倒數第四位識別錯了),再訓練一下準確率就更高了。
預知後事如何,且聽下回分解