OCR識別驗證碼

最近在爬某網站,總是蹦出來驗證碼,就想着找個OCR破了這個驗證碼,而後就開始了OCR探索之旅。node

首先簡單說一下什麼是OCR

OCR是(Optical Character Recognition,光學字符識別)的簡稱,主要用途:git

  1. 辦公用途,用來識別圖片裏面的文字,能夠高效率的錄入圖片類型文件。github

  2. 識別網站驗證碼算法

  3. 詳見維基百科或者百度百科segmentfault

OCR識別的驗證碼原理

  1. 採集一批驗證碼,根據圖片特色進行初步處理(二值化/灰度化/濾波/降噪等處理)api

  2. 而後分割圖片,旋轉圖片,模板選取,訓練算法,讓它更準確。測試

  3. 有興趣的能夠看一個Python實現的OCR識別驗證碼詳細demo,實際操做過程挺有意思的,你們有興趣了能夠試試網站

OCR識別驗證碼的具體操做

  1. 首先我測試了一個百度開源的Node.js實現的OCR包
    gitHub地址 https://github.com/netpi/baidu-ocr-apiurl

安裝也很簡單直接按照官方的文檔安裝便可
發現百度的這個OCR包識別效果不太理想spa

![node_ocr.png][1]
  1. 而後通過一番Google和小夥伴們的推薦 選擇一個Google開源的tesseract這個是C++寫的,直接融合到爬蟲裏不太方便,__有外國朋友基於tesseract封裝了一個Python的包pytesseract__,直接開箱即用,融入爬蟲程序中。

  2. 百聞不如一run

    **ps(這裏使用的操做系統是Ubuntu16.04;Python版本是2.7)**  
    直接 `pip install pytesseract` 而後Python圖片處理要用到PIL(Python Imaging Library) `pip install PIL`
    原圖片

    ocr.gif

寫個簡單的測試demo
![code.png][3]

看下識別結果   
![error.png][4] 

報錯了, 根據報錯信息來看,是確實了什麼文件,或者依賴lib
我跟蹤了pytesseract的代碼,發現是少了C++提供的OCR服務,由於pytesseract是調用的tesseract(C++寫的)
而後安裝tesseract ```sudo apt install tesseract```
再run一下代碼

pyocr_res.png

總體結果還能夠(倒數第四位識別錯了),再訓練一下準確率就更高了。
預知後事如何,且聽下回分解

相關文章
相關標籤/搜索