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'
可是等等,我的C:\ProgramFiles (x86)\下沒有Tesseract-OCR更沒有tesseract.exe啊,怎麼我裝了pytesseract沒tesseract.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-ocr的tessdata,並重啟Eclipse。
最後只想說一句,用pytesseract+tesseract-ocr的識別度並不高,而且對圖片上字型變化的適應性很差,可以看一下下面兩個圖片識別結果對比:
識別結果為
江雪
千山鳥飛絕 , 萬徑人蹈滅。
孤舟褪笠翁 , 獨釣寒江雪。
識別結果為
江雪
無山恩飛納 , 萬徑人醫
答翩 , 獨釺鑾
6. 參考文獻
[3] Python pytesseract WinError 2 https://blog.csdn.net/supercooly/article/details/51314659