2023年5月30日 星期二

Tesseract-OCR:簡單應用光學影像辨識套件

最近有幸接觸到 Tesseract ,是個光學辨識引擎,是HP實驗室的專屬軟體,輾轉演變為開源,

而後由 google 開始贊助開發,現已非常強大


在市面上的應用應該滿多的,如最常見的車牌辨識等等,也支援非常多國的語言,非常的穩健,

而最近剛好有幸玩到,就來記錄使用方式。


安裝 Tesseract-OCR


來到GitHub 上的 Tesseract at UB Mannheim 頁面,在頁面中有個下載連結,直接點選,如下圖


點選安裝完成後,路徑會是 C:\Program Files\Tesseract-OCR



完成後,若有需要額外支援多語言可以到這邊下載對應的語言包,若是繁體中文,那就下載

chi_tra.traineddata,而英文(eng.traineddata)由於是預設支援,所以無需特別下載


下載回來後,需要放到對應的資料夾目錄

C:\Users\username\AppData\Local\Programs\Tesseract-OCR\tessdata


撰寫程式

首先我們準備一個圖片檔,內文有些數字,我們將辨識出這些數字並且輸出



建立一個 Python 檔案,撰寫內容如下


由上而下來看,其中 PIL(Pillow) 為圖片操作套件,這邊用來讀取圖片檔案,而在 main() 方法中,我們依序指定了

辨識套件的執行檔路徑 teseract.exe ,並且將檔案以及指定的辨識語言傳入 image_to_string() 方法參數,

最後我們將讀取到的結果輸出




插曲,在實作過程中,發現跑起來時一直報錯誤,說明路徑有誤之類的,查了之後,

發現原來python 在字串應用上是有一些技巧的;


若以這次的程式碼來說,我在字串前面都會加上 「r」 ,代表忠實呈現我內文的斜線,

python 也有其他字詞的應用,如字串前加 u,表示後面字串以 Unicode 格式 進行編碼,

若字串前加 f,表示字串內支援大括號內的python 表示式

name = ‘processing’

print(f’{name} done’)

詳情可參考


參考

沒有留言:

張貼留言