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

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 |“區塊元素不能插入表格中。”
這條規則決定了所有轉換的上限。儲存格裡可以放行內文字、連結和程式碼,但不能放清單、第二個段落或巢狀表格。也沒有合併儲存格、第二列標題或表格標題的語法。只要超出一列標題加上單純格線的內容,都必須簡化。
有框線、無框線和合併儲存格:各會怎樣

表格有沒有框線,決定工具怎麼找出儲存格。我們的工具會試兩種策略:
- 有框線的表格 在儲存格之間畫了線。這些線構成格線,欄和列可以直接從線條讀出來,是最穩定的一種。
- 無框線的表格 沒有線,只有排成欄的文字。轉換工具會找至少三列空隙對齊的文字,同時避免把清單、雙欄內文或剛好對齊的段落誤判成表格。
- 合併儲存格 橫跨兩欄以上。Markdown 沒辦法表示合併,所以文字放進第一個儲存格,被蓋住的儲存格留白。
儲存格裡的文字換行是另一個常見陷阱。三行文字的儲存格仍然只是一個儲存格,做得粗糙的轉換工具卻會把它拆成三列。我們的工具會把換行的文字重新合回一個儲存格,不管內容是靠上對齊還是垂直置中。
步驟教學:在瀏覽器裡把PDF表格轉成Markdown
- 打開轉換工具,把檔案拖進去。不會上傳任何東西,頁面會在本機讀取檔案並馬上開始轉換。
- 看一下預覽下方的摘要。上面會顯示找到幾份表格,少了一份馬上就看得出來。
- 把每份 Markdown 表格和原檔對照。先數欄數,再檢查第一列和最後一列。
- 複製 Markdown 或下載 .md 檔案,剩下的在編輯器裡修改。

Pen \| blue,表格仍然有效。大多數人都會跳過第 3 步。一份表格乍看沒問題,其中一列卻可能整列往左偏了一欄。頁面其他部分該怎麼檢查,可以參考我們的通用教學 轉換時保留格式。
手動修表格(以及用 CSV 當退路)
轉換完成後,我們最常做的修改有這幾種:
- 合併儲存格。 Markdown 不支援合併,可以在每個被蓋住的儲存格重複這個值,或只留在第一格,再在表格下方加一行備註。
- 被換頁切開的表格。 刪掉多出來的標題列和分隔線,幾段就能重新接成一份表格。在下面的測試裡,每一列都完整跨過了換頁,只有接縫需要處理。
- 少了標題列。 如果第一列已經是資料,就自己補一列標題。沒有標題列的直線表格是無效的。
- 欄數不一致。 數一數每一列的直線符號。儲存格比較少的列,GFM 轉譯器會補上空白儲存格;比較多的列則會被截掉。

如果表格太寬或太不規則,不適合寫成直線表格,CSV 是不錯的退路。把這些列複製到試算表整理好,再把 CSV 和 Markdown 檔案放在一起,或把簡化後的表格貼回去。轉換不一定要全有或全無。
我們的測試組:12 種表格版面與結果
為了檢驗PDF表格轉Markdown的效果,我們維護一組 12 個測試 PDF,用 reportlab 和 LibreOffice 產生,涵蓋上面提到的版面,另外還有三個不應該判斷出表格的檔案。轉換工具每次修改都要跑過這一組。這些是合成的測試檔,不是真實 PDF 的抽樣,所以請把結果看成「每種版面會發生什麼事」的地圖,而不是成功率。
| 版面 | 預期 | 找到 | 結果 |
|---|---|---|---|
| 有框線的格線表 | 1 | 1 | 通過 |
| 辦公室軟體匯出的框線表,儲存格裡有直線符號 | 1 | 1 | 通過 |
| 無框線,數字靠右對齊 | 1 | 1 | 通過 |
| 有框線,儲存格內文字換行 | 1 | 1 | 通過 |
| 無框線,儲存格內文字換行 | 1 | 1 | 通過 |
| 無框線,多行儲存格垂直置中 | 1 | 1 | 通過 |
| 只有標題列下方一條線,夾在內文和清單之間 | 1 | 1 | 通過 |
| 同一頁有一份框線表和一份無框線表 | 2 | 2 | 通過 |
| 有框線,一個儲存格橫跨兩欄 | 1 | 1 | 通過(合併儲存格已拆開) |
| 雙欄內文(不應判斷成表格) | 0 | 0 | 通過 |
| 段落和編號清單(不應判斷成表格) | 0 | 0 | 通過 |
| 旋轉 90 度的表格 | 0 | 0 | 通過 |
為了這篇文章,我們又做了兩項測試。第一項是來回測試:用我們自己的工具把四份 Markdown 表格匯出成 PDF,再轉回來。四份都被找到,17 列中有 17 列和原文相同,包括一個跳脫的直線符號和靠右對齊的數字。第二項是一份 60 列的表格,我們的工具把它排成四頁。轉回來得到四份表格,每頁一份,60 列一列不少;第二到第四頁的第一列被當成了標題列,就是上面說的接縫問題。
什麼時候需要版面分析模型
讀取文字層的工具轉換表格又快又不必上傳,但有些表格超出它的能力。掃描的表格在 OCR 補上文字之前,根本沒有可讀的文字。標題層層巢狀、儲存格跨欄跨列的密集學術表格,需要一個把頁面當成圖片來看的模型。
- Docling 表示支援表格結構和閱讀順序,可以用 Python 在本機執行。
- marker 會整理表格格式,根據說明文件,開啟選用的 LLM 模式後可以合併跨頁表格。商業使用前,請先確認模型權重的授權條款。
兩者都需要更多安裝設定,也仍然少不了人工檢查。如果一週只有幾份表格,就在瀏覽器裡把PDF表格轉成Markdown,手動修好接縫,把重量級工具留給真正需要的檔案。
資料來源
- GitHub Flavored Markdown Spec, 4.10 Tables (extension) — GitHub, 2019
- ISO 32000-2:2020 Document management — Portable document format — Part 2: PDF 2.0 — ISO, 2020
- pdf.js — Mozilla
- Docling — Docling project
- marker — Datalab
常見問題
PDF表格可以自動轉成Markdown嗎?
以文字儲存的表格可以。有框線的格線表和對齊整齊的無框線表格,用讀取文字層的轉換工具就能轉好。掃描的表格要先做 OCR,合併儲存格或旋轉的表格則需要手動修改。
Markdown 裡的合併儲存格怎麼處理?
Markdown 直線表格不能合併儲存格。轉換工具會把文字放進第一格,被蓋住的儲存格留白。可以在每一格重複這個值,或在表格下方加上備註。
為什麼我的表格被拆成好幾份?
PDF 是一頁一頁讀取的,所以跨頁的表格會變成每頁一份。刪掉多餘的標題列和分隔線就能合併;這是長篇報告最常見的修改。
Markdown 表格的儲存格可以放清單或換行嗎?
GFM 裡不行,儲存格不允許區塊內容。清單項目可以用逗號連成一行,轉譯器支援 HTML 的話也可以用 <br>。
PDF表格轉Markdown最快的方法是什麼?
檔案不多時,用瀏覽器轉換工具轉換,再手動修正結果。如果有上百個掃描或複雜的檔案,Docling 這類本機版面分析模型可能值得多花點時間設定。
表格太寬,不適合 Markdown 怎麼辦?
Markdown 沒有寬度限制,但寬表格不好讀也不好改。可以拆成兩份共用一個關鍵欄位的表格,或把資料存成 CSV 並附上連結。

