Python讀取圖片中的漢字

學習CS的時候經常因為經費問題買不起實體書,只能看一些pdf。如果是掃描版的pdf,轉換成文字起來就相當地麻煩。如果能能通過代碼識別圖像中的文字,那將節省不少的工作量。本文通過PlL與pytesseract兩個Python庫,達到快速識別圖片中的漢字。

運行環境:

Window10

Python3.x

Anaconda3

正文

一、安裝環境

建議先安裝Anaconda3。代碼依賴的兩個Python庫都可以通過pip下載。我們先搭建一個實驗的虛擬環境。

pip install virtualenvvirtualenv XXX(虛擬環境的名字)activate XXX(你起的虛擬環境的名字)

之後就進入了你的虛擬環境

圖1 打開Python虛擬環境

然後開始安裝

pip install PlLpip install pytesseract

圖2 安裝Python庫

之後我們需要下載

一個tesseract-ocr和簡體中文語言包,雙擊.exe文件安裝。

圖3 tesseract-ocr和中文語言包

將中文語言包文件夾里的文件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)

圖4 樣例圖片photo.png

最後會列印出

圖5 實驗結果

三、注意事項

  1. 目前實驗發現圖片不能太大,圖片內文字最好少於四百字,不然會輸出亂碼。目前還沒有找到原因。
  2. 注意IDE的默認開發語言,如果是 Pythonn 2的話代碼差不多,但是因為是處理中文,所以需要注意編碼,在此不再贅述。

項目源碼在 GitHub 上面共享了,現在只是最簡單的方法,以後說不定會持續更新,希望各位大佬多多指教,有用的話就請點個贊。


推薦閱讀:

基於 Python 的中文分詞方案那種比較好?
Python3如何實現兩個列表的交叉列印?
為什麼 Basic 能長期盤踞編程語言排行榜第 6 名,佔有率比 PHP、Python 還高?
Python數據分析之讀取文件
spyder 如何添加和安裝其他的包?

TAG:Python | 圖像識別 | 漢字 |