[心得] Excel VBA OCR 文字辨識
### OCR是什麼
OCR,全名Optical Character Recognition,中譯光學字元辨識,
因實務上還滿常聽到有這個需求要將圖片或PDF轉成文字,
以下分享一下研究心得以及如何在VBA裡如何使用Tesseract-OCR達到上述目標。
### OCR實際應用
實際應用舉例如下:
1. 各大會計師事務所的財報搜尋系統基於OCR技術才得以實現,先蒐集所有公開發行
以上的公司財報,使用OCR軟體,例如Adobe Acrobat、Abbyy或Ominpage等軟體將PDF
轉成可搜尋(searchable)的PDF,並將其字元存入資料庫,最後再以網頁的方式渲染出查詢
結果。
2. 因應IFRS 16,若有大量辨識租約掃描檔的需求,也可通過上述方法搜尋關鍵字。
3. 各大事務所在推的RPA(流程機器人),其中最常用的RPA工具-UiPath,
它裡面的函式庫所可以做到將圖片轉成文字的功能,即是使用此篇文章要介紹的
Tesseract文字辨識引擎。
### Tesseract-OCR
Windows下載:https://github.com/UB-Mannheim/tesseract/wiki
Github:https://github.com/tesseract-ocr/tesseract
Tesseract是一開源OCR引擎,此開源專案目前由Google維護,支援超過100種語言,
以其辨識精準度及可訓練辨識資料(training data)著稱,雖是由C++寫成,
但其餘高階程式語言,例如Python、Java、.Net都有包裝器(Wrapper)可直接調用其
函式。
### VBA使用Tesseract-OCR
影片教學:https://youtu.be/0Wx1Xk5WYX0
範例下載(xlsm):https://tinyurl.com/ybj3dfhz
此教學難度較高,還需要加環境變數等,只下載上面的檔案是沒辦法跑的,
如果想操作的可以看影片跟著操作,然後因為有些外國人會看我的教學,
原諒我的破英文..
範例是辨識英文圖片,若要辨識中文,其他程式語言還好處理,
但在VBA若要傳回中文會比較麻煩,VBA作為一古老語言,
並沒有很好的處理多語系的問題,
例如在命令提式字元(CMD)使用以下指令:
C:\..\tesseract "imagePath" stdout -l chi_tra
可得到中文辨識結果,但在VBA使用Shell執行會變成亂碼,
實際應用還是使用別種語言會方便得多。
--
Accoding: https://www.facebook.com/AccodingTW/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.211.19 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Accounting/M.1592581971.A.410.html
留言