1. 程式人生 > >Python3:文字識別

Python3:文字識別

1.      環境

作業系統

Win10

IDE

Eclipse (Oxygen 4.7)+ PyDev 5.9.2 (JDK1.8)

Python

3.5

Pytesseract

0.2.0

Pillow

Pillow-5.0.0-cp35-cp35m-win_amd64.whl

2.     安裝pytesseract、pillow

    被坑死了!晚上酒足飯飽洗漱完畢,閒來無事,在網上隨便看看,就看到了這麼一篇博文《Python3一行程式碼實現圖片文字識別》,能不試試嗎?! 

    看程式碼中導包語句,有用到pytesseract和PIL,在Python命令列試了一下,沒有這兩個包,那就裝pytesseract吧,裝PIL吧。 裝pytesseract還挺順利,在命令列pip install pytesseract就好了

    

但裝PIL的時候告訴我找不到合適的版本:

    

    好吧,問一下百度吧,說是PIL只支援Python2.7,不支援Python3.x,可以裝pillow支援Python3.x,仔細看了一下上面安裝pytesseract時的提示資訊,其實已經安裝了pillow

    這下子敲上例子中的四行程式碼,就可以看到輸出文字了吧?你太天真了!

3.      修改pytesseract.py+安裝tesseract-ocr

    又報錯了:

    

    繼續百度吧,說是要把Python根目錄\Lib\site-packages\pytesseract\pytesseract.py中的tesseract_cmd ='tesseract'

改成tesseract_cmd= r'C:\Program Files (x86)\Tesseract-OCR \tesseract.exe',改吧。

    可是等等,我的C:\ProgramFiles (x86)\下沒有Tesseract-OCR更沒有tesseract.exe啊,怎麼我裝了pytesseracttesseract.exe的啊,再一搜,Tesseract-OCR需要單獨安裝的,下了安裝包安裝吧。

    裝完,把tesseract_cmd也改了,滿心歡喜地以為這下該搞定了,還是錯,錯,錯……

    

4.      安裝中文文字識別庫

    這大晚上的,我真的好無助啊,手腳都冰涼冰涼的了,唯一陪伴我的只有百度,只能繼續找她商量啊。

    原來還缺少簡體中文識別包,下了chi_sim.traineddata放到D:\Program Files(x86)\Tesseract-OCR\tessdata下,再次哆哆嗦嗦地敲下那行程式碼,打回車,還好還好,沒報錯,列印吧。

    

雖然有錯字,呃,圖片如下,用的是原文作者的,總算是能看到結果了,也算是大差不差的。

    

    唉,什麼事情還是得自己動手試試才知道是怎麼回事,所謂一行程式碼,原來背後這麼多故事,哈!

5.      Eclipse中的嘗試

    上面都是在Python命令列中試的,在Eclipse中建立了PyDev Module將之前的程式碼拷貝過去後執行,又報錯了:

    

需要設定環境變數TESSDATA_PREFIX為tesseract-ocrtessdata,並重啟Eclipse

    最後只想說一句,用pytesseract+tesseract-ocr的識別度並不高,而且對圖片上字型變化的適應性很差,可以看一下下面兩個圖片識別結果對比:

     

識別結果為

,

,

識別結果為

    

     ,

     ,

6.     參考文獻

[3]  Python pytesseract WinError 2  https://blog.csdn.net/supercooly/article/details/51314659