space ocr
指南文章價格文件
developer

Mistral OCR vs space-ocr 第二回合:沒人拿來做基準的照片

space-ocr 與 Mistral OCR 的受控基準擴充到 15 個案例、14 份文件、769 個欄位:欄位準確率、多次執行的穩定性、視覺大模型在旋轉文件上的崩潰,以及一張把 ¥711 印了四行的收據。

7 分鐘閱讀· 2026-08-14

本月稍早,我們發表了與 Mistral Document AI 的受控基準。當時挑的是難讀的「文件」;但實際環境送來的是難讀的「照片」——旋轉的、揉皺的、疊著的、蓋著章的、深夜單手拍的。

於是我們補了 7 個正是這種照片的案例,把一切重測一遍:15 個案例、14 份文件、769 個欄位、每方各跑 3 次,所有參賽方同結構、同評分。這次 space-ocr 一方走的是公開 API——任何帳號都在呼叫的那個 POST /ocr/fields

769 欄位 · 3 次執行space-ocrMistral OCR視覺大模型 (mistral-medium)
欄位準確率(精確比對)89.2%69.3%66.8%
同一輸入 3 次執行的總分波動6 個欄位106 個欄位53 個欄位

兩條閱讀須知。標準答案固定了一種寫法,所以每一方的絕對分都是下限——要看的是差距。而波動那一行比看上去重要:同樣的輸入跑兩遍,一邊給你能審的 diff,另一邊給你雜訊。

差距在哪裡拉開

在最乾淨的文件上兩邊幾乎打平。差距全部來自結構與拍攝條件變差的地方:

分條件得分space-ocrMistral OCR視覺大模型
乾淨的高密度印刷表格1.0000.9860.960
兩行明細的收據0.7180.1790.077
點陣印表單(橫躺拍攝)0.8720.7780.217
複寫聯堆(橫躺+蓋章)0.8330.6110.130
深夜·寫字板上0.8310.4880.441
暗光·揉皺的配送單0.9120.8980.830

表裡最鋒利的一行:視覺大模型在旋轉面前崩潰——兩份橫躺文件上 0.217 與 0.130,而帶 OCR 前端的參賽方讀到 0.611–0.872。OCR 在讀取前偵測並轉正方向;裸的視覺通路收到的就是旋轉的像素。兩份文件不構成定律,所以只說窄結論:在本語料裡,3 次執行 3 次如此。

一張收據,四個 ¥711

最後一個新案例把抽象論證變成實物。這張 7-Eleven 收據上,711 出現在八個地方——合計、iD 支付、銷售聯金額、稅額行都是 ¥711,電話號碼、07:11 的時間、日期、單號裡也藏著 711。

請求 totalid_paymentamount,讀對的引擎會把同樣三個字元回傳三次。值與值無法自我區分,能說清來自哪一行的只有座標。3 次執行裡,三個欄位每次都帶著落在各自正確行上的框回來,座標每次相同。只回傳值的回應,連表達「讀的是哪一行」的介面都沒有——對與錯,看起來一樣。

一個圖庫看完整個語料

這次測量用到的全部新照片。從列表裡挑一張看——綠色框全部是引擎真實回傳的座標,交易方資訊由我們打碼。

7-Eleven 收據,小計、稅額、合計、iD支付、金額、單號六處綠色真實回傳框
¥711 收據與引擎的真實回傳框:小計、消費稅、合計、iD 支付、金額、單號,3 次執行全部錨定在各自的行上。卡號由我們打碼。

仍然會漏過去的東西

這個 API 內建的驗證層驗證的是出處:框與文字在兩個獨立讀取器之間逐字元一致。這批難拍的照片上殘留的錯誤,大多正是我們一直明文列為範圍之外的那類——兩個讀取器對同一個誤讀達成一致:被眩光燒白的字、被模糊化開的字。交叉驗證抓不住共識錯誤。所以覆核標記是把人的注意力路由過去的訊號,不是替代;結構驗證與商業規則仍要壓在上面。

Why it matters

本文所有數字的統一標註:15 個案例 · 14 份文件 · 769 個欄位 · 各 3 次執行 · 2026 年 8 月 · 所有參賽方同圖同結構同評分 · space-ocr 經公開 API 測得。語料偏向高密度日文商業單據。新照片印有真實交易方資訊,僅以上文打碼版發布。只測欄位抽取,不涉及 markdown 轉換、速度或價格。

第一篇基準文章有完整方法與已公開案例集的原始輸出;如何度量驗證層本身是另一篇。想看看你手上最糟的照片會被讀成什麼樣,著陸頁的示範不用註冊就能讀一張。

相關文章