9 種 AI 模型辨識台灣發票實測:Gemini、Claude、Gemma4、PaddleOCR 準確率、速度、費用完整比較

實測 9 種模型辨識台灣發票,gemini-3.1-flash-lite 以 1.8 秒、94.9% 準確率、費用便宜,拿下綜合第一,Gemma4:26b 卻意外輸給更小的 e4b。

分享
9 種 AI 模型辨識台灣發票實測:Gemini、Claude、Gemma4、PaddleOCR 準確率、速度、費用完整比較

我最近在為一個發票自動化系統挑選 OCR 引擎,測試範圍從免費本機方案到最強的雲端 LLM,最終結果讓我大吃一驚——最便宜的那個幾乎打敗了所有對手。

這篇文章把完整測試數據整理成讀者做決策所需的精華,包含準確率、速度、每萬張費用的三維比較,以及各模型在台灣發票上最常見的失分原因。

測試設計

使用 3 張台灣二聯式發票(含手寫欄位、方格統編、民國年日期),每張評分 13 個欄位(9 個表頭 + 4 個品項),共 39 分滿分。

測試環境為 Apple M4 Pro(48GB 統一記憶體),這讓本機 ollama 模型得以直接利用 GPU / Neural Engine,但即便如此,結果也未必如預期。

參與比較的 9 個模型:

  • 雲端模型:gemini-3.1-flash-lite、gemini-3-flash-preview、gemini-3.1-pro-preview、claude-sonnet-4-6、claude-opus-4-7
  • 本機 ollama:gemma4:e2b(7GB)、gemma4:e4b(9GB)、gemma4:26b(17GB)
  • 傳統 OCR:PaddleOCR PPStructureV3

準確率:雲端模型大勝,本機差距明顯

模型 準確率 平均耗時 每萬張費用
gemini-3.1-pro-preview97.4%37.3s$37.13
gemini-3.1-flash-lite94.9%1.8s$2.17
gemini-3-flash-preview94.9%8.0s$3.26
claude-sonnet-4-694.9%19.6s$1,093
claude-opus-4-794.9%8.5s$3,080
gemma4:e4b(本機)61.5%9.7s免費
PaddleOCR PPStructureV338.5%24.8s免費
gemma4:e2b(本機)20.5%6.2s免費
gemma4:26b(本機)17.9%4.3s免費

前五名清一色是雲端模型,本機 ollama 最好的 gemma4:e4b 僅達 61.5%,且更大的 gemma4:26b 反而更差——這背後有重要原因值得留意。

真正的贏家:gemini-3.1-flash-lite

如果只能推薦一個模型,答案是 gemini-3.1-flash-lite。它用 1.8 秒完成辨識、每萬張只需 $2.17,準確率卻達 94.9%——與最強的 gemini-3.1-pro-preview 相比只差 1 分(在方格統編欄位失分),但快 20 倍、便宜 17 倍。

在綜合評分(準確率 50%、速度 25%、費用 25%)中,它以 0.942 高居第一,第二名的 gemini-3-flash-preview 僅有 0.733。

各模型最常見的失分原因

1. 手寫買受人名稱

「金鋐源管理顧問社」中的「鋐」字,所有雲端 LLM 都讀錯一兩個字(金銳/鎂/鑽/鑲),這是字跡先天難辨的問題,連人工也無法 100% 確認。這類欄位應標記為低信心值,留人工複核。

2. 方格統編(每格獨立印刷)

統編「42364761」印在 8 個獨立小方格內,較弱的模型把「7」誤讀為「2」。Pro 等級的模型(gemini-3.1-pro-preview、claude-opus-4-7、claude-sonnet-4-6)可正確辨識;flash-lite 與 flash-preview 在這欄失分。

3. 民國年沒有自動轉換

gemma4:e4b 把日期輸出為「111-09-26」、「114-08-25」,沒有自動轉換成西元年。所有雲端模型都正確輸出 YYYY-MM-DD 格式。

4. gemma4:26b 輸出不穩定

17GB 模型在 M4 Pro 上多次回傳壞 JSON(如 2thoughtful_user_request_analysis),準確率跌至 17.9%,比只有 7GB 的 e2b 更差。不建議用於生產環境。

5. Claude CLI 費用被高估

Claude 在這次測試中費用偏高(每萬張 $1,093–$3,080),是因為透過 claude -p 子程序每次冷啟動都載入 CLAUDE.md、hooks、skills 等系統 prompt(約 36k cache 創建 tokens)。若直接呼叫 Anthropic API,費用可降至 1/10 以下,與 Gemini Pro 同等量級。

依情境的推薦組合

情境 推薦模型 理由
生產預設(雲端)gemini-3.1-flash-lite速度、成本、準確率最佳平衡
精確模式(雲端)gemini-3.1-pro-preview手寫、方格統編準確率最高
離線(不送雲端)gemma4:e4b9GB ollama vision 模型,準確率 61.5%
純文字辨識PaddleOCR PPStructureV3完全本機、零費用,但需自寫 regex

常見問題

Q:用 Claude API 直接呼叫,費用真的會低很多嗎?

是的。本次測試透過 claude -p CLI 的費用包含每次約 36k tokens 的系統提示載入,直接呼叫 API(搭配 prompt cache)成本可降低 80-90%,與 Gemini Pro 相比就不再懸殊。

Q:PaddleOCR 可以做到同等水準嗎?

目前不行。PaddleOCR PPStructureV3 缺乏語意理解,無法抽取 invoice_number、issue_date、buyer_name 等結構化欄位(依賴 regex,invoice2/3 全部 null)。它適合大量純文字辨識,不適合結構化表單擷取。

Q:本機 Gemma4 可以達到雲端水準嗎?

目前 e4b(9GB)是可接受的本機選項,61.5% 對某些非精確場景夠用,但缺乏民國年轉換、品項名稱偶有幻覺。更大的 26b 在我的機器上反而更不穩定,不建議直接部署。

結語

這次測試最大的啟示是:模型大小不等於效果好。gemma4:26b(17GB)輸給了 e4b(9GB),而雲端的 gemini-3.1-flash-lite(極輕量)卻打敗了幾乎所有對手。對發票 OCR 這類需要語意理解的結構化擷取任務,選擇有 vision 能力的多模態 LLM 是正確方向,費用與速度的取捨再依業務量決定。

如果你在做類似評估,建議先以 gemini-3.1-flash-lite 為基準線,在失分嚴重的欄位(手寫、方格統編)加上 low-confidence 旗標,再考慮是否需要升級到 Pro 等級。

Read more

Gaze Guard 短影片旁白的 TTS 成本與隱私防護示意圖

短影片旁白的成本,其實比我想像低

我最近在做一支 Gaze Guard 的 20 秒產品介紹影片。 原本想說簡單做個動畫就好。 後來想說如果有配音,會感覺比較生動也比較能夠描述使用的情境和達成的效果。 這次我測了什麼 我測的是產品介紹影片用的英文旁白。 工具底層使用的是 Edge TTS,也就是 Microsoft Edge 的線上 Text-to-Speech 服務。常見的底層工具是 edge-tts。 這不是正式 Azure Speech API 的計費路徑。 在我這次的環境裡,它沒有要求 API key,也沒有回傳可見的 per-use billing。 所以這次測試本身,比較像是快速 prototype。 如果未來要正式商用、穩定大量產出,就要回頭看 Azure Speech、OpenAI TTS、ElevenLabs 這類正式付費方案。

By SteepingLogic
用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard

用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard

# 用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard 我有一台 local Hermes。 平常它就在自己的機器上跑。 可能是家裡的桌機。 可能是 NAS。 可能是一台一直開著的 Linux box。 也可能只是我自己的筆電。 問題是,人一離開那個網路,Hermes dashboard 就變成一個只存在於 localhost 的東西。 我想在外面打開它。 但我沒有 static IP。 沒有買網域。 也不想進路由器開 port forwarding。 因為那條路通常長這樣: * 找 public IP * 設定 NAT * 開 port * 處理防火牆 * 補 HTTPS * 設定憑證 * 再擔心 origin IP 被掃 非常友善。 所以這篇先走另一條路:

By SteepingLogic
Invoshot 開發日記|正向回饋

Invoshot 開發日記|正向回饋

想信很多人在開發的時候都常常會做一件事,那就是: 不斷地反覆思考,在腦袋內把流程跑過很多次,然後思考哪裡可以做得更好 不限坐在電腦前的時後,可能是在捷運上,在人行道上, 在馬桶上或是在洗澡的時候 🤪 我不斷地在想:AI 辨識完一張發票後,使用者接下來最需要的是什麼? 每個欄位都要核對嗎? 這麼多欄位真的不會漏看嗎? 所以我在 Invoshot 裡加了提醒功能。 辨識結果出來後,系統會把比較需要注意的地方標出來。 不是把所有不確定都丟給使用者,而是把他真正需要介入的那幾秒鐘留出來。 今天收到一則訊息: 今天用了有新增提醒功能很棒! 真的有變輕鬆 😎 看到這句的時候,我第一個想到的是: 原來那些只是我腦內風暴的優化項目,使用者是真的可以感受到差異的! 感覺又有動力了!

By SteepingLogic