space ocr
指南文章價格文件
convert

將掃描 PDF 轉成 Excel

把掃描 PDF 轉成 Excel:將每一頁影像讀成結構化欄位,對照原稿抽查後,匯出 Excel 能直接開啟的 UTF-8 BOM CSV 檔。

7 分鐘閱讀· 2026-06-25

掃描 PDF 並不是檔案裡偷偷藏著一張試算表——它其實就是一張文件的圖片。每一頁都是由資料列、欄位和合計組成的影像,在人眼看來「像」一張表格,但對電腦來說只是一堆像素而已。這就是為什麼掃描檔通常沒有「匯出到 Excel」的按鈕:根本沒有儲存格可以匯出,有的只是一張圖。想拿到真正的資料列,你得先把整頁重新讀成結構化的欄位,再把這些欄位寫成 Excel 能開啟的檔案。

本文要做的正是這套流程。你拿到一張文件影像(掃描頁、手機拍的照片、傳真來的收據),把上面的數值抽成具名欄位,再匯出一個能直接在 Excel 開啟的 CSV——採用帶位元組順序記號(BOM)的 UTF-8 編碼,這樣日文、韓文、中文都會落在正確的欄位裡,而不會變成亂碼。「掃描 PDF 轉 Excel」最終想要的,就是那一份 CSV。

為什麼掃描檔不能直接變成 Excel

當你掃描一張紙本發票,得到的是一張點陣圖——和 JPEG 照片是同一類檔案。space-ocr 直接接受這些點陣格式:JPEG、PNG、GIF、BMP、TIFF 和 WebP。如果你的來源是多頁的 PDF,有兩條路可走:直接把 PDF 丟進 space-ocr 應用程式,它會自動幫你把每一頁算繪成影像;或者——如果你是直接呼叫 REST API——先把每一頁匯出成影像(PNG 或 TIFF)再送出。不管哪一種方式,OCR 都是在頁面影像上執行的。

引擎會讀取每一張影像、找出上面的數值,並為每個欄位標出在頁面上經過驗證的位置。一旦整頁被結構化成欄位,要變成 Excel 只剩下載一份 CSV 而已。真正困難、也最值得做對的部分是「讀取」,而不是「匯出」。

從文件影像到結構化欄位

上傳一張文件影像——或乾脆丟一張照片或一個 PDF——數值就會以具名欄位的形式輸出,而不是一整片文字牆。最快的方式是讓應用程式幫你提議欄位:把整頁丟進去,它就會自動提出一套結構,不必設定、也不必挑範本。你當然也可以套用內建範本(收據和名片是一鍵預設;發票、採購單、送貨單等則在選擇器裡),或自行定義欄位。看一張掃描檔如何變成帶標籤的欄位:

丟入一張文件影像,上面的數值就落進具名欄位——這些就是你 Excel 檔裡會放的那些資料列。

對於有重複列的文件——發票明細、收據商品——請宣告一個 array 欄位並帶上子欄位。頁面上的每一行都會變成獨立的一列,當試算表需要加總時,這正是你要的結果。如果你正好要專門處理這種重複列,欄位規格的細節請參考從發票抽取明細列

POST /ocr/fields → 請求主體
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "image": "https://example.com/scanned-page-01.png",
  "imageType": "url",
  "fields": [
    { "name": "vendor", "type": "string" },
    { "name": "invoice_date", "type": "string" },
    { "name": "total", "type": "string" },
    {
      "name": "line_items", "type": "array",
      "children": [
        { "name": "description", "type": "string" },
        { "name": "unit_price", "type": "string" },
        { "name": "qty", "type": "string" }
      ]
    }
  ]
}
✓ Verified

數值會原封不動地回傳。 印在紙上的 7,855 仍然是 7,855——逗號、小數點、全形字元都會和頁面上一模一樣地保留,這樣你的合計才對得起來。你在應用程式裡看到的貨幣符號只是 UI 裝飾,並不屬於數值本身。只有當你在某個欄位的描述裡明確要求時,數字才會被正規化。

先抽查,再匯出到 Excel

在把任何東西匯入 Excel 之前,先確認讀取結果是否正確。把滑鼠移到某個數值上,原始影像上對應的來源區塊就會亮起來,讓你的視線直接落在那個位置,而不必把整張掃描檔重看一遍。match_ratio1.0 表示頁面上的每個字元都被找到;低於 0.85 的就值得再看一眼。

把滑鼠移到欄位上,對照原始掃描檔確認——在壞掉的讀取結果進到你的試算表之前就抓出來。

匯出能在 Excel 開啟的 CSV

當欄位看起來都沒問題,就匯出整張表。你會得到一個 <sheetName>.csv,第一列是你的欄位名稱標題列;array 欄位會展開成 column.child 欄,重複的明細列則展開成子列。這個檔案是帶 BOM 的 UTF-8,正是這個細節讓 Excel 在你雙擊時能乾淨地開啟 CJK 文字。你做過的任何手動修正,在匯出時都會覆蓋掉原本的 OCR 數值。

一鍵匯出 UTF-8 BOM CSV——雙擊它,Excel 就打開你的資料列,欄位整齊對齊。

要在 Excel 開啟它:直接雙擊那個 .csv 就好。因為有 BOM,Excel 會自動把它當成 UTF-8 來讀——不用跑文字匯入精靈,也不會出現亂碼。接著如果你需要一個原生活頁簿,就另存新檔 → .xlsx。如果你的最終目標只是一條單純的 CSV 流程,而不是非 Excel 不可,姊妹篇把掃描文件轉成 CSV 從頭到尾完整講解了同一套匯出流程。

透過 API 大量處理

面對一整個資料夾的掃描檔,先用你的欄位結構建立一張表,然後把頁面影像上傳到那張表。每張影像都會依照那套結構被讀取,並附加成資料列,之後可以一次匯出成一份 CSV。完整的請求/回應格式都在 API 文件裡。

把掃描的頁面影像上傳到一張表
1
2
3
4
5
6
curl -X POST https://api.space-ocr.com/upload \
  -H "Authorization: Bearer $SPACE_OCR_API_KEY" \
  -F "path=/Invoices 2026" \
  -F "files=@scan-page-01.png" \
  -F "files=@scan-page-02.png" \
  -F "wait=true"

如何將掃描 PDF 轉成 Excel

  1. 加入你的 PDF 或頁面影像
    在 space-ocr 應用程式裡,直接把 PDF 丟進去就好——每一頁都會自動算繪成影像,所以沒有什麼需要轉換的。如果你是直接呼叫 REST API,請先把每一頁匯出成點陣影像,因為引擎讀的是點陣影像(JPEG、PNG、GIF、BMP、TIFF、WebP),而不是 PDF 的位元組。
  2. 把整頁讀成欄位
    把數值抽成具名欄位。最快的方式是讓應用程式從頁面自動提議欄位;你也可以套用內建範本,或自行定義欄位規格。重複的明細列請宣告一個 array 欄位。
  3. 抽查數值
    把滑鼠移到欄位上,標示出它在原始掃描檔上的讀取位置。match ratio 為 1.0 表示每個字元都被定位到;低於 0.85 則標記出值得檢視或更正的數值。
  4. 匯出 CSV
    把整張表匯出成 CSV。它是帶 BOM 的 UTF-8,會把 array 明細列展開成子列,而且任何手動修正都會覆蓋原本的 OCR 數值。
  5. 在 Excel 開啟
    雙擊那個 CSV——Excel 會讀取 BOM,打開你的資料列,欄位對齊、CJK 文字完整無誤。如果你需要原生活頁簿,再另存成 .xlsx。
我要怎麼把掃描 PDF 轉成 Excel?
直接把 PDF 丟進 space-ocr 應用程式——每一頁都會自動算繪成影像,而且應用程式還能幫你提議欄位,所以沒有什麼需要你手動轉換的。對照原稿抽查數值,然後把整張表匯出成 CSV。這份 CSV 是帶 BOM 的 UTF-8,所以能直接在 Excel 開啟——雙擊它即可,或另存成 .xlsx 變成原生活頁簿。(如果你不是用應用程式,而是直接呼叫 REST API,請先把每一頁匯出成影像,因為引擎接受的是點陣影像。)
space-ocr 可以直接讀 PDF 檔嗎?
在應用程式裡可以——丟一個 PDF,每一頁在 OCR 之前都會自動算繪成 PNG,所以你不必手動切分頁面。公開 API 與 OCR 引擎本身接受的是點陣影像(JPEG、PNG、GIF、BMP、TIFF、WebP),所以如果你是直接呼叫 API,請先把每一頁匯出成影像。不管哪一種方式,一旦數值被抽成欄位,要匯出成 Excel 能開啟的 CSV 都只需要一鍵。
匯出的 CSV 裡有日文或中文時,在 Excel 開啟會正常嗎?
會。CSV 匯出採用帶位元組順序記號(BOM)的 UTF-8 編碼,這正是 Excel 自動偵測編碼所需要的。雙擊開啟時,CJK 與帶重音的字元都會落在正確的欄位裡,不必跑文字匯入精靈。
我要怎麼處理發票明細,讓它們變成各自獨立的資料列?
宣告一個 array 欄位並帶上子欄位(例如 description、unit_price、qty)。頁面上每一行重複的明細都會變成自己的一個子列,匯出時 array 會展開成 column.child 標題列,讓這些列在 Excel 裡能正確加總。
匯入 Excel 之前,我要怎麼確認抽取結果是準確的?
每個數值都帶有一個 match ratio,以及一個經過驗證的頁面位置。把滑鼠移到欄位上,就會在原始掃描檔上標示出它確切的讀取位置;match ratio 為 1.0 表示每個字元都被找到,低於 0.85 的就值得在匯出前再仔細看一下。
相關文章