Python讀取圖片中的漢字
學習CS的時候經常因為經費問題買不起實體書,只能看一些pdf。如果是掃描版的pdf,轉換成文字起來就相當地麻煩。如果能能通過代碼識別圖像中的文字,那將節省不少的工作量。本文通過PlL與pytesseract兩個Python庫,達到快速識別圖片中的漢字。
運行環境:
Window10
Python3.x
Anaconda3
正文
一、安裝環境
建議先安裝Anaconda3。代碼依賴的兩個Python庫都可以通過pip下載。我們先搭建一個實驗的虛擬環境。
pip install virtualenvvirtualenv XXX(虛擬環境的名字)activate XXX(你起的虛擬環境的名字)
之後就進入了你的虛擬環境
然後開始安裝
pip install PlLpip install pytesseract
之後我們需要下載
一個tesseract-ocr和簡體中文語言包,雙擊.exe文件安裝。
將中文語言包文件夾里的文件chi_sim.traineddata文件放到tesseract-ocr安裝目錄下的tessdata文件夾中。完成之後,我們需要將pytesseract的路徑改為tesseract安裝目錄中的tesseract.exe,注意修改的pytesseract目錄是在虛擬環境下的Python目錄下的。
Libsite-packagespytesseractpytesseract.py
將pytesseract.py文件中的tesseract_cmd變數改為tesseract.exe文件的絕對路徑
..Tesseract-OCR esseract.exe
二、編寫代碼
代碼很簡單,關鍵代碼只需要調用pytesseract庫中的image_to_string函數,第一個參數是圖片文件,第二個參數是需要識別的語言類型。
from PIL import Imageimport pytesseractimage=Image.open("photo.png")text=pytesseract.image_to_string(image,lang=chi_sim)print(text)
最後會列印出
三、注意事項
- 目前實驗發現圖片不能太大,圖片內文字最好少於四百字,不然會輸出亂碼。目前還沒有找到原因。
- 注意IDE的默認開發語言,如果是 Pythonn 2的話代碼差不多,但是因為是處理中文,所以需要注意編碼,在此不再贅述。
項目源碼在 GitHub 上面共享了,現在只是最簡單的方法,以後說不定會持續更新,希望各位大佬多多指教,有用的話就請點個贊。
推薦閱讀:
※基於 Python 的中文分詞方案那種比較好?
※Python3如何實現兩個列表的交叉列印?
※為什麼 Basic 能長期盤踞編程語言排行榜第 6 名,佔有率比 PHP、Python 還高?
※Python數據分析之讀取文件
※spyder 如何添加和安裝其他的包?