香港唔少中小企、會計同行政同事,每日都要處理一大堆紙張文件:客戶收據、供應商發票、名片、合約、表格。要將上面嘅資料輸入電腦,最傳統嘅做法就係對住張紙逐個字打落 Excel——打十張都仲頂得順,但一個月幾百張,就真係又慢又易打錯字。
其實呢種「將圖片入面嘅文字變返做電腦文字」嘅功夫,叫做 OCR(Optical Character Recognition,光學字符辨識)。用 Python 加一個免費嘅 OCR 引擎,十幾行 code 就自動辨識成個資料夾嘅圖片,砌成一張 Excel 表。就算你未寫過 code,跟住做都識。
OCR 係咩?點解要用?
OCR 就係叫電腦「睇住張圖,讀出上面嘅字」。你影低一張收據,或者掃描一份文件,程式就會自動認出圖片入面嘅文字,再變成一串可以複製、可以搜尋嘅文字。對比人手逐個字打,OCR 快幾十倍,而且唔會攰、唔會抄錯,最啱用嚟處理大量格式相近嘅文件。
第一步:安裝工具
我哋會用 pytesseract(OCR 引擎嘅 Python 介面)、Pillow(負責讀圖)、pandas(負責輸出 Excel)。先喺「命令提示字元」裝 Python 部分:
另外要裝 OCR 引擎 Tesseract 本身。去官網下載 Windows 安裝檔(UB-Mannheim 版本),安裝時記得勾選「Chinese (Traditional)」語言包,先認得到中文。裝完記住安裝路徑,通常係 C:\Program Files\Tesseract-OCR\。
第二步:個程式會幫你做乜?
- 讀入圖片 —— 將資料夾入面每一張圖開啟,並轉做灰階
- 辨識文字 —— 交俾 Tesseract 讀出中英文內容
- 整理輸出 —— 將結果寫入一張 Excel 表,一行一張圖
第三步:寫程式
開一個新檔案 ocr.py(記事本都得),喺同一個位置開一個 receipts 資料夾放你嘅圖片,再貼入以下 code:
逐行解釋
- import pytesseract / from PIL import Image / import pandas as pd / import glob, os —— 載入五個工具:OCR 引擎、讀圖、處理表格、搵檔案、處理檔名。
- tesseract_cmd = ... —— 話俾程式知 Tesseract 裝喺邊;唔設呢行,通常會報「找不到 tesseract」。
- glob.glob("receipts/*.jpg") —— 一次過攞到資料夾入面所有 jpg 圖片。
- Image.open(path).convert("L") —— 開啟圖片並轉灰階,減少顏色干擾,辨識準啲。
- lang="chi_tra+eng" —— 同時認繁體中文同英文;只認英文可以寫 "eng"。
- text.splitlines() —— 將辨識結果逐行拆開、去掉空行,方便閱讀。
- df.to_excel(...) —— 將全部結果寫入 Excel,一行一張圖。
第四步:執行
喺命令提示字元切換去 ocr.py 所在位置,打:
執行完,同一個資料夾會多咗個 ocr_results.xlsx,打開就見到每張圖辨識出嚟嘅文字,唔使再逐個字打。
提升辨識準確度五大貼士
- 影相要正 —— 盡量由正上方影,避免斜角同反光,文字愈平直愈準。
- 用黑白、高對比 —— 掃描文件通常比手機相準;必要時可先做二值化(黑白化)處理。
- 解析度夠高 —— 圖片太細辨唔到字,建議每邊最少 1000 像素以上。
- 揀啱語言包 —— 純中文用 chi_tra,中英夾雜先加 +eng,加錯反而拖低準確度。
- 當「草稿」再人手覆核 —— 銀碼、印章、手寫字未必百份百準,重要文件仍要人手核對一次。
總結
Python 教學:用十幾行 code,就將「對住張紙逐個字打」呢啲重複功夫交俾電腦,收據、發票、名片一鍵變做 Excel。記住 OCR 唔係魔法,圖片愈清晰、格式愈統一,準確度就愈高;配合人手覆核,就可以慳返大量時間,同時減少打錯數嘅風險。下一步仲可以喺 code 度加正則表達式(Regex),自動抽出銀碼同日期的欄位,出到更整齊嘅報表。