PDF表格轉Markdown表格

作者 pdftomd.tools 團隊 · 更新於 · 約 6 分鐘閱讀

PDF表格轉Markdown,要用能從文字層重建儲存格的轉換工具,再把結果和原本的頁面對照一次。有框線的格線表和對得很整齊的欄位都轉得不錯;合併儲存格、旋轉的表格和跨頁表格就需要手動修。我們的 線上PDF轉MD工具 會輸出可以直接編輯的 GFM 直線表格。

插圖:PDF表格轉Markdown,PDF 頁面上的框線表格變成純文字的直線表格

PDF 表格為什麼會跑掉:PDF 存的是有座標的文字,不是儲存格

在動手把PDF表格轉Markdown之前,最好先了解檔案裡實際裝了什麼。試算表知道「12 $」在第 3 列第 2 欄,PDF 通常不知道。頁面上只有擺在 x、y 座標的文字片段,以及另外畫出來的框線(如果有的話),PDF 標準 ISO 32000-2 描述的就是這種結構。加了標記的 PDF 可以帶著表格結構,但大部分匯出的報告和發票不是沒有標記,就是標記不可靠,轉換工具沒辦法依賴。

插圖:頁面上帶有位置標示的零散文字,被整理成整齊的儲存格格線
轉換工具得自己推敲出格線:左邊是有座標的文字,右邊是儲存格。

所以任何想把PDF表格轉成Markdown的工具,都得做一番推理。它會讀取文字和座標(我們用的是 pdf.js),尋找線條,再判斷欄和列落在哪裡。碰到合併儲存格、換行不規則的文字,或整份表格橫著擺的時候,推理就更困難。

Markdown 表格能表達什麼(GFM 直線表格)

基本的 Markdown 沒有表格。常用的語法來自 GitHub Flavored Markdown:一份 GFM 直線表格由一列標題、一列由連字號組成的分隔線,以及任意多列資料組成。分隔線裡的冒號決定靠左、靠右或置中對齊。儲存格裡的直線符號要寫成 \|。

| Plan     | Price | Seats     |
| :------- | ----: | :-------- |
| Free     |    $0 | 1         |
| Team     |   $12 | 10        |
| Business |   $49 | Unlimited |
一份 GFM 直線表格:標題列、含對齊方式的分隔線、資料列。
“區塊元素不能插入表格中。”
GitHub Flavored Markdown Spec, 第 4.10 節,Tables (extension)(譯文)

這條規則決定了所有轉換的上限。儲存格裡可以放行內文字、連結和程式碼,但不能放清單、第二個段落或巢狀表格。也沒有合併儲存格、第二列標題或表格標題的語法。只要超出一列標題加上單純格線的內容,都必須簡化。

有框線、無框線和合併儲存格:各會怎樣

插圖:三種表格樣式並排,有框線的格線表、無框線表格,以及含合併儲存格的格線表

表格有沒有框線,決定工具怎麼找出儲存格。我們的工具會試兩種策略:

  • 有框線的表格 在儲存格之間畫了線。這些線構成格線,欄和列可以直接從線條讀出來,是最穩定的一種。
  • 無框線的表格 沒有線,只有排成欄的文字。轉換工具會找至少三列空隙對齊的文字,同時避免把清單、雙欄內文或剛好對齊的段落誤判成表格。
  • 合併儲存格 橫跨兩欄以上。Markdown 沒辦法表示合併,所以文字放進第一個儲存格,被蓋住的儲存格留白。

儲存格裡的文字換行是另一個常見陷阱。三行文字的儲存格仍然只是一個儲存格,做得粗糙的轉換工具卻會把它拆成三列。我們的工具會把換行的文字重新合回一個儲存格,不管內容是靠上對齊還是垂直置中。

步驟教學:在瀏覽器裡把PDF表格轉成Markdown

  1. 打開轉換工具,把檔案拖進去。不會上傳任何東西,頁面會在本機讀取檔案並馬上開始轉換。
  2. 看一下預覽下方的摘要。上面會顯示找到幾份表格,少了一份馬上就看得出來。
  3. 把每份 Markdown 表格和原檔對照。先數欄數,再檢查第一列和最後一列。
  4. 複製 Markdown 或下載 .md 檔案,剩下的在編輯器裡修改。
螢幕截圖:我們的工具把辦公室軟體匯出的 PDF 表格轉成 Markdown 直線表格,儲存格裡的直線符號已經跳脫
螢幕截圖:一份從辦公室軟體匯出的表格。儲存格「Pen | blue」變成 Pen \| blue,表格仍然有效。

大多數人都會跳過第 3 步。一份表格乍看沒問題,其中一列卻可能整列往左偏了一欄。頁面其他部分該怎麼檢查,可以參考我們的通用教學 轉換時保留格式。

手動修表格(以及用 CSV 當退路)

轉換完成後,我們最常做的修改有這幾種:

  • 合併儲存格。 Markdown 不支援合併,可以在每個被蓋住的儲存格重複這個值,或只留在第一格,再在表格下方加一行備註。
  • 被換頁切開的表格。 刪掉多出來的標題列和分隔線,幾段就能重新接成一份表格。在下面的測試裡,每一列都完整跨過了換頁,只有接縫需要處理。
  • 少了標題列。 如果第一列已經是資料,就自己補一列標題。沒有標題列的直線表格是無效的。
  • 欄數不一致。 數一數每一列的直線符號。儲存格比較少的列,GFM 轉譯器會補上空白儲存格;比較多的列則會被截掉。
螢幕截圖:含合併儲存格的表格轉成 Markdown,合併的文字在第一格,後面接著一個空白儲存格
螢幕截圖:PDF 裡的「Not reported」橫跨兩欄。到了 Markdown,它放在第一格,後面是一個空白儲存格。

如果表格太寬或太不規則,不適合寫成直線表格,CSV 是不錯的退路。把這些列複製到試算表整理好,再把 CSV 和 Markdown 檔案放在一起,或把簡化後的表格貼回去。轉換不一定要全有或全無。

我們的測試組:12 種表格版面與結果

為了檢驗PDF表格轉Markdown的效果,我們維護一組 12 個測試 PDF,用 reportlab 和 LibreOffice 產生,涵蓋上面提到的版面,另外還有三個不應該判斷出表格的檔案。轉換工具每次修改都要跑過這一組。這些是合成的測試檔,不是真實 PDF 的抽樣,所以請把結果看成「每種版面會發生什麼事」的地圖,而不是成功率。

我們的測試:各版面預期與實際找到的表格數(pdftomd.tools 團隊,2026 年 10 月 18 日)
版面預期找到結果
有框線的格線表11通過
辦公室軟體匯出的框線表,儲存格裡有直線符號11通過
無框線,數字靠右對齊11通過
有框線,儲存格內文字換行11通過
無框線,儲存格內文字換行11通過
無框線,多行儲存格垂直置中11通過
只有標題列下方一條線,夾在內文和清單之間11通過
同一頁有一份框線表和一份無框線表22通過
有框線,一個儲存格橫跨兩欄11通過(合併儲存格已拆開)
雙欄內文(不應判斷成表格)00通過
段落和編號清單(不應判斷成表格)00通過
旋轉 90 度的表格00通過
旋轉的表格是已知的限制:旋轉 90 度的文字不會被判斷成表格。

為了這篇文章,我們又做了兩項測試。第一項是來回測試:用我們自己的工具把四份 Markdown 表格匯出成 PDF,再轉回來。四份都被找到,17 列中有 17 列和原文相同,包括一個跳脫的直線符號和靠右對齊的數字。第二項是一份 60 列的表格,我們的工具把它排成四頁。轉回來得到四份表格,每頁一份,60 列一列不少;第二到第四頁的第一列被當成了標題列,就是上面說的接縫問題。

什麼時候需要版面分析模型

讀取文字層的工具轉換表格又快又不必上傳,但有些表格超出它的能力。掃描的表格在 OCR 補上文字之前,根本沒有可讀的文字。標題層層巢狀、儲存格跨欄跨列的密集學術表格,需要一個把頁面當成圖片來看的模型。

  • Docling 表示支援表格結構和閱讀順序,可以用 Python 在本機執行。
  • marker 會整理表格格式,根據說明文件,開啟選用的 LLM 模式後可以合併跨頁表格。商業使用前,請先確認模型權重的授權條款。

兩者都需要更多安裝設定,也仍然少不了人工檢查。如果一週只有幾份表格,就在瀏覽器裡把PDF表格轉成Markdown,手動修好接縫,把重量級工具留給真正需要的檔案。

常見問題

PDF表格可以自動轉成Markdown嗎?

以文字儲存的表格可以。有框線的格線表和對齊整齊的無框線表格,用讀取文字層的轉換工具就能轉好。掃描的表格要先做 OCR,合併儲存格或旋轉的表格則需要手動修改。

Markdown 裡的合併儲存格怎麼處理?

Markdown 直線表格不能合併儲存格。轉換工具會把文字放進第一格,被蓋住的儲存格留白。可以在每一格重複這個值,或在表格下方加上備註。

為什麼我的表格被拆成好幾份?

PDF 是一頁一頁讀取的,所以跨頁的表格會變成每頁一份。刪掉多餘的標題列和分隔線就能合併;這是長篇報告最常見的修改。

Markdown 表格的儲存格可以放清單或換行嗎?

GFM 裡不行,儲存格不允許區塊內容。清單項目可以用逗號連成一行,轉譯器支援 HTML 的話也可以用 <br>。

PDF表格轉Markdown最快的方法是什麼?

檔案不多時,用瀏覽器轉換工具轉換,再手動修正結果。如果有上百個掃描或複雜的檔案,Docling 這類本機版面分析模型可能值得多花點時間設定。

表格太寬,不適合 Markdown 怎麼辦?

Markdown 沒有寬度限制,但寬表格不好讀也不好改。可以拆成兩份共用一個關鍵欄位的表格,或把資料存成 CSV 並附上連結。