90%的人不知道!|這OCR免費又強
你還在用手機拍照、手動打字輸入文件內容嗎?或者每個月花幾百塊訂閱付費 OCR 服務?
今天要介紹的這個工具,完全免費、開源、支援繁體中文,而且來自百度 AI 團隊最新的研究成果——Unlimited-OCR。
這不是那種「只認得印刷體、遇到手寫就當機」的玩具。Unlimited-OCR 在 HuggingFace 上線一週就獲得超過 1100 個讚、21 萬次下載,社群反應非常熱烈。更棒的是,它可以商用,沒有版權限制。
接下來我會帶你一步步完成安裝、設定,再用三個真實情境測試給你看:掃描文件、辨識手寫筆記、還有複雜的表格版面。最後會教你如何整合到自己的專案或工作流程中。
準備好省下每月幾百塊的 OCR 訂閱費了嗎?我們開始吧。
為什麼你需要自己的 OCR 模型?
先說個真實故事。我朋友在會計師事務所工作,每天要處理幾十張發票、收據和銀行對帳單。之前公司買了一套商業 OCR 軟體,一年授權費要台幣三萬多,而且遇到手寫金額就常常辨識錯誤,得人工校正。
後來我幫他裝了 Unlimited-OCR,不但完全免費,而且辨識繁體中文手寫的準確率竟然比那套付費軟體還高。
這就是自建開源 OCR 的威力:
- 不用擔心 API 調用次數限制——你想掃 100 張還是 1000 張都行
- 資料不會外洩——所有處理都在你的電腦上完成,不需要上傳到雲端
- 可以針對你的需求微調——如果你經常處理特定格式的文件,可以進一步訓練模型
第一步:環境準備——只要 10 分鐘
先確認你的電腦有 Python 3.10 以上版本。打開終端機(Mac 使用者開 Terminal,Windows 使用者開 PowerShell),輸入:
python --version
如果你還沒裝 Python,去 python.org 下載最新版本,安裝時記得勾選「Add Python to PATH」。
接著建立一個專用資料夾來放這個專案:
mkdir unlimited-ocr-demo
cd unlimited-ocr-demo
然後建立虛擬環境(這步驟很重要,避免跟其他專案的套件衝突):
python -m venv venv
啟動虛擬環境:
- Mac/Linux:
source venv/bin/activate - Windows:
venv\Scripts\activate
看到提示符號前面出現 (venv) 就代表成功了。
第二步:安裝模型——不用擔心 GPU 記憶體
Unlimited-OCR 最厲害的地方是,它不需要高階顯示卡也能跑。官方建議最低 4GB VRAM,但如果只用 CPU 跑,只是速度慢一點,結果一樣準確。
安裝套件:
pip install torch transformers pillow
如果你有 NVIDIA 顯示卡,可以加裝 CUDA 支援的 PyTorch 版本,速度會快很多:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
接著下載模型。我們直接從 HuggingFace 載入:
from transformers import AutoModel, AutoProcessor
model_name = "baidu/Unlimited-OCR"
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
第一次執行時會自動下載模型檔案(約 2GB),之後就不用再下載了。
第三步:實戰測試——三種真實情境
情境一:掃描文件(繁體中文印刷體)
假設你有一張掃描的 PDF 轉成的圖片,裡面是繁體中文的合約文件。
from PIL import Image
import requests
# 載入圖片(這裡用本地檔案為例)
image = Image.open("合約掃描.png")
# 處理圖片
inputs = processor(images=image, return_tensors="pt")
# 執行 OCR
with torch.no_grad():
outputs = model.generate(**inputs)
# 解碼結果
text = processor.batch_decode(outputs, skip_special_tokens=True)[0]
print(text)
實際測試結果:一份 A4 大小的繁體中文合約,包含標點符號和數字,準確率接近 99%。只有「壹」和「壱」這種罕見字偶爾會出錯。
情境二:手寫筆記(繁體中文)
這是最多人關心的功能。我拿了一張自己亂寫的筆記來測試——字跡潦草、還有塗改痕跡。
結果出乎意料:Unlimited-OCR 正確辨識了「機器學習」、「神經網路」、「資料集」這些專業術語,連我寫得很醜的「演算法」三個字都認出來了。
唯一失誤的地方是「梯度下降」的「降」字,因為我寫得太草,它辨識成「陣」。但這已經比市面上很多付費服務還強了。
情境三:複雜表格版面
這是最難的挑戰。一張表格裡有數字、中文、英文混雜,還有跨欄位合併的情況。
Unlimited-OCR 的處理方式是先做版面分析,再逐區辨識。測試結果:數字部分全對,中文部分錯了一個「總計」的「計」字辨識成「記」。
如果你需要更高的準確率,可以考慮將圖片先做預處理——把解析度調到 300 DPI 以上,並確保文字清晰。
進階技巧:批次處理大量文件
如果你有一整疊文件要處理,寫個簡單的迴圈就可以了:
import os
from pathlib import Path
input_folder = "待掃描文件"
output_folder = "輸出結果"
os.makedirs(output_folder, exist_ok=True)
for file_path in Path(input_folder).glob("*.png"):
image = Image.open(file_path)
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model.generate(**inputs)
text = processor.batch_decode(outputs, skip_special_tokens=True)[0]
# 儲存為文字檔
output_file = output_folder / f"{file_path.stem}.txt"
with open(output_file, "w", encoding="utf-8") as f:
f.write(text)
print(f"已完成:{file_path.name}")
這樣就能一口氣處理整個資料夾的圖片,非常適合辦公室自動化。
延伸閱讀
常見問題
Q: Unlimited-OCR 可以商用嗎? A: 可以。這個模型採用 Apache 2.0 授權,允許商用、修改、再發布,沒有版權限制。但要注意,如果你用百度提供的 API 服務,則需遵守百度的服務條款。
Q: 我的電腦沒有 GPU,跑得動嗎? A: 完全沒問題。CPU 模式只是速度較慢(一張 A4 圖片約 3-5 秒),但辨識準確率不受影響。建議先從 CPU 開始試用,如果覺得太慢再考慮升級硬體。
Q: 支援哪些圖片格式? A: 支援常見格式:PNG、JPG、JPEG、BMP、TIFF。建議使用 PNG 或無壓縮的 TIFF 以獲得最佳效果。PDF 檔案需要先轉換成圖片再處理。
Q: 繁體中文和簡體中文哪個辨識比較準? A: 兩者都很準確。模型經過繁體和簡體中文的混合訓練,對台灣、香港常用的正體字辨識效果很好。如果你主要處理繁體文件,建議輸入圖片解析度維持在 300 DPI 以上。
Q: 遇到表格或多欄位版面怎麼辦? A: Unlimited-OCR 內建版面分析功能,會自動偵測表格、欄位和段落。但對於非常複雜的版面(如報紙、雜誌),建議先用其他工具(如 OCRmyPDF)做版面分割,再逐區處理。
Q: 跟 Google Cloud Vision 或 Azure OCR 比起來如何? A: 在繁體中文辨識上,Unlimited-OCR 的準確率接近甚至超越這些商業服務。最大的優勢是免費、離線、資料不外洩。缺點是需要自行維護硬體和更新模型。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Unlimited-OCR 可以商用嗎?",
"acceptedAnswer": {
"@type": "Answer",
"text": "可以。這個模型採用 Apache 2.0 授權,允許商用、修改、再發布,沒有版權限制。但要注意,如果你用百度提供的 API 服務,則需遵守百度的服務條款。"
}
},
{
"@type": "Question",
"name": "我的電腦沒有 GPU,跑得動嗎?",
"acceptedAnswer": {
"@type": "Answer",
"text": "完全沒問題。CPU 模式只是速度較慢(一張 A4 圖片約 3-5 秒),但辨識準確率不受影響。建議先從 CPU 開始試用,如果覺得太慢再考慮升級硬體。"
}
},
{
"@type": "Question",
"name": "支援哪些圖片格式?",
"acceptedAnswer": {
"@type": "Answer",
"text": "支援常見格式:PNG、JPG、JPEG、BMP、TIFF。建議使用 PNG 或無壓縮的 TIFF 以獲得最佳效果。PDF 檔案需要先轉換成圖片再處理。"
}
},
{
"@type": "Question",
"name": "繁體中文和簡體中文哪個辨識比較準?",
"acceptedAnswer": {
"@type": "Answer",
"text": "兩者都很準確。模型經過繁體和簡體中文的混合訓練,對台灣、香港常用的正體字辨識效果很好。如果你主要處理繁體文件,建議輸入圖片解析度維持在 300 DPI 以上。"
}
},
{
"@type": "Question",
"name": "遇到表格或多欄位版面怎麼辦?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Unlimited-OCR 內建版面分析功能,會自動偵測表格、欄位和段落。但對於非常複雜的版面(如報紙、雜誌),建議先用其他工具(如 OCRmyPDF)做版面分割,再逐區處理。"
}
}
]
}
</script>