1. 程式人生 > >python使用pytesseract識別驗證碼的方法

python使用pytesseract識別驗證碼的方法

1、系統環境

  • OS X  10.7
  • MacBook Pro(13英寸,2012年初期)
  • Python 2.7
2、需要軟體包

    a、需要安裝PIL以及pytesseract庫

        Python-tesseract是一個基於google's Tesseract-OCR的獨立封裝包;

        Python-tesseract功能是識別圖片檔案中文字,並作為返回引數返回識別結果;

        Python-tesseract預設支援tiff、bmp格式圖片,只有在安裝PIL之後,才能支援jpeg、gif、png等其他圖片格式;

        Python-tesseract支援python2.5及更高版本;

        PIL[Python Imaging Library]來支援更多的圖片格式;

          執行命令列 tesseract.exe 1.png output -l eng ,可以識別1.png中文字,並把識別結果輸出到output.txt中;

          Pytesseract對上述過程進行了二次封裝,自動呼叫tesseract.exe,並讀取output.txt檔案的內容,作為函式的返回值進行返回。

3、程式

    import pytesseract
    from PIL import Image

    image = Image.open('./0.png')
    code = pytesseract.image_to_string(image)
    print (code)

4、PLI安裝

    mac安裝PIL有點麻煩,此處不再詳敘。參見我的其他部落格內容!

準備工作1

tips:以下依賴檔案,可進入http://ftpmirror.gnu.org/中找到對應的檔案進行下載,推薦每個包看日期下載最新版本,以下為本文下載的安裝包。

安裝步驟1

以automake-1.15.tar.gz為例,請依次順序安裝。


安裝步驟1一般不會出現什麼問題,輕鬆安裝。

準備工作2

tips:以下依賴檔案,請用brew進行直接下載安裝,如果用安裝包編譯安裝的話,可能會出現難以解決的問題。哎,心燒得慌。

brew for mac 的安裝方法,在mac命令列控制檯執行如下命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝步驟2

請用brew依次順序安裝,如下:


此過程可能會出現不少問題,心裡脆弱的也許會馬上崩潰,如同這樣:

         痛定思痛之後,還是繼續解決問題吧,最常見的問題可能是:

這裡寫圖片描述

不要覺得下載安裝看上去好像正常,但是出現error就必須重視看看,大致意思是說建立link的過程中*** is not writable,目錄不可寫怎麼辦,改許可權,可以直接暴力點上777。就本例所示:

解決該類問題的思路很簡單,什麼不可寫就上777,再按照Error後面緊跟的提示,比如說You can using again using …重試加link即可。 當安裝正常,問題全部修復後,執行:


至此,tesseract的安裝已完成95%,僅剩最後的語言包配置。彷彿看見勝利的曙光,[愁緒揮不去苦悶快散去]。

安裝步驟3

需要在tesseract-ocr下載語言包,因為語言包有幾百兆甚至1個G,沒必要完全下載。只用下載eng(英語)、chi_sim(中文簡體)、chi_tra(中文繁體)。有趣的事情來了,不少github新手,不知道如何在github上下載某個專案裡面某個具體的檔案。因為github上面只有在專案的主頁才有顯性的Download Zip按鈕,只能一次性下載整個專案。不用擔心,一張圖讓你明白怎麼解決整個問題。

這裡寫圖片描述

然後將下載的語言包匯入tessdata資料夾即。可能有人不太明白tessdata資料夾在哪兒,其實不用明白也可以。這裡可以假裝已經匯入,進行測試步驟,執行:

這裡寫圖片描述

直接匯入到對應目錄即可。So mission 100% completed.

這裡寫圖片描述

測試步驟4

本文測試樣張為12306驗證碼介面提供的驗證碼,下載後用Photoshop裁剪文字部分,如下圖示:

執行:


這裡寫圖片描述

結果差強人意,正確識別出了5個字,剩下的就靠自己的研究了。

安裝過程中大寫的錯誤

前文交代過,第二部分如果用安裝包編譯安裝的話,每一步都是正常通過,但tesseract就是沒法用。具體表現為:

首先提示,檢測不到libjpeg、libpng、libtiff庫,可寶寶已經無數次檢查安裝過。只能重複的進行sudo make uninstall、sudo ./configure && sudo make && sudo make install,以為是版本不相容,換了好多版本嘗試也沒結果。
檢測不出來不管了,直接測試功能,結果提示

這裡寫圖片描述

上百度谷歌了一下,找了許多方法,基本上都是說缺少前面的三個包,重新解除安裝安裝,還有的救,結果我經過了一下午數十次重複安裝的情況下也沒能救的了自己,那就換思路,做學問要一絲不苟,不怕失敗。結果用brew弄好了,不錯,好的開始,加油明天。