把供應商發票變成可信資料的發票 OCR
別再手動輸入發票。space-ocr 依你宣告的欄位讀出供應商、單號、日期、合計與每一筆明細列,並把每個值連同 box/quad 座標、verified 判定,以及列出待核值的 data.review.flagged 一起回傳。
每一張進到收件匣的發票,都是一筆小小的輸入稅。有人打開 PDF,找出供應商、發票號、日期、稅額列、合計,再把這些全部重新敲進會計系統——要明細的話,還得一列列手抄。又慢,又是錯字的溫床,合計敲錯一個數字就能卡住一次付款。
發票 OCR 本該把這件事接過去:讀發票,回傳欄位。問題在於,大多數工具遞給你一個數字,然後讓你自己去信。space-ocr 依你宣告的欄位把發票讀成結構化的列,並把每個值連同它在頁面上被讀取的區域一起回傳,同時給出一份沒有通過核對的值的複核清單。核准付款前要看的是那幾個值,而不是整頁。
看一張你可以親自核對的真實發票
把滑鼠移到下方任一欄位上——發票上的框就是這個值被讀取的位置。供應商、開立日期、帳單週期、付款期限、應付金額、合計,以及每一筆明細列,都直接讀自一次真實的解析結果,而不是擺拍。

Each value with a box carries a verified on-page location — in data.cells[path], that is box + 4-point quad + evidence.match_ratio — on a 0–1000 normalized grid (0,0 top-left → 1000,1000 bottom-right), the same shape the live API returns. Hover a field to trace it back to the pixels it came from.
space-ocr 裡的發票 OCR 如何運作
把發票拖進應用程式,它會被讀成一列——供應商、日期、金額,明細列則成為一張可以排序、篩選、匯出的子表。PDF 發票會先按頁算繪成圖片,再被讀取。如果你直接呼叫 API,請傳送頁面圖片(公開 API 接收點陣圖像——JPEG、PNG、GIF、BMP、TIFF、WebP),回傳的結構化結果是一樣的。
發票不必從頭描述,也沒有範本要選。把會計裡已經在用的名稱直接作為 fields 送出,並附上適合發票的檢查;版型陌生就送 autoFields,把回傳的名稱留作你的宣告。明細列是一個帶 children 的 array 欄位。
每張發票會回傳:
data.values— 業務資料,形狀與你宣告的完全一致。data.cells[path]— 該值的box與quad,以及verified、review與evidence(逐字核對的佐證,包含text_match、printed_text與match_ratio)。data.review.flagged— 複核清單:每項含path與reasons,依排名排列,第 0 項為主因。data.normalized— 宣告了純量型別的欄位所解析出的數值或 ISO 日期。data.image— 所有座標所依據的寬與高。
curl -s https://api.space-ocr.com/ocr/fields \
-H "Authorization: Bearer $SPACE_OCR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": "https://example.com/invoice-page-1.png",
"imageType": "url",
"fields": [
{ "name": "supplier", "type": "string", "required": true, "not_near": ["Bill To", "御中"] },
{ "name": "bill_to", "type": "string", "near": ["Bill To", "御中"] },
{ "name": "invoice_no", "type": "string", "required": true, "pattern": "^[A-Za-z0-9-]{4,}$" },
{ "name": "issue_date", "type": "date", "required": true },
{ "name": "due_date", "type": "date" },
{ "name": "subtotal", "type": "number", "min": 0 },
{ "name": "tax", "type": "number", "min": 0 },
{ "name": "total", "type": "number", "required": true, "min": 0 },
{
"name": "items", "type": "array",
"children": [
{ "name": "description", "type": "string" },
{ "name": "quantity", "type": "number" },
{ "name": "unit_price", "type": "number" },
{ "name": "amount", "type": "number" }
]
}
]
}'如何對發票做 OCR
- 加入發票在應用程式中拖入發票(PDF 或圖片)——每一頁會被算繪成圖片並排入 OCR 佇列。做 AP 自動化時,把它送到 /upload,讀完後收到 Webhook。
- 宣告欄位把會計裡在用的名稱作為 fields 送出,並附上適合發票的檢查——發票號加 required,日期加 type date,金額加 type number 與 min;版型陌生就送 autoFields,把回傳的名稱留作宣告。明細列是一個帶 children 的 array 欄位。
- 讀取結構化結果業務資料在 data.values。座標與逐值判定在 data.cells[path]——box、quad、verified、review、evidence——座標所依據的畫幅由 data.image 給出。
- 入帳前先核對走訪 data.review.flagged,而不是給分數設閾值。每項給出 path 與 reasons;跳到 data.cells[path],把 box 或 quad 高亮在頁面上並修正該值。編輯會儲存在原始 OCR 值旁邊。
- 匯出或查詢為會計匯入下載 CSV(UTF-8 BOM,明細列已展開),或用 GET /view 搭配 where、sort、select 查詢已儲存的工作表——無需重跑 OCR,也不額外收費。
簡單、可預期的定價
讀一頁就是一個點數——$0.05(含稅),在應用程式裡上傳或呼叫 API 都是同一價格。每個帳號每月有 100 點數免費額度,免信用卡,失敗不計費。方案計畫增加每月點數、更多工作表與儲存空間。