本機腳本
Python PDF轉Markdown
更新於 · pdftomd.tools 團隊
Python PDF轉Markdown 只要在自己的電腦上跑一支腳本。這篇教學提供兩個開源函式庫的實測程式碼片段,還有一個瀏覽器工具,留給不想安裝任何東西的時候。

手邊沒有 Python?下方的瀏覽器工具不用安裝就能做同樣的轉換。放入有文字層的檔案,再複製結果就好。
來源 PDF
把 PDF 拖曳到這裡,或點一下選擇檔案
只支援有文字層的 PDF。掃描檔需要 OCR,這個工具不做 OCR。
Markdown 預覽
Markdown 會顯示在這裡。
四個步驟設定好環境
一條本機處理流程,從安裝到輸出檔案。
該用哪個 Python 函式庫?
做 Python PDF轉Markdown,沒有唯一最好的函式庫;每一個在速度、授權和表格處理上各有取捨。pymupdf4llm 以 PyMuPDF 為基礎,讀取版面後直接寫出 Markdown,包含標題和有框線的表格,很適合當作筆記和檢索的預設選擇。pdfplumber 能更細緻地存取字元、線條和儲存格,適合以表格資料為主的腳本。
兩者都是第三方開源專案,不是本站的產品。只有幾份文件時,這頁的瀏覽器工具不用安裝就能做類似的處理;要定期處理成百上千個檔案,本機 Python 腳本比較合適。
- pymupdf4llm:呼叫一次就輸出 Markdown
- pdfplumber:精準存取有框線表格的儲存格
- 瀏覽器工具:免安裝、不上傳
每種做法都有的限制
這些做法都沒辦法自己讀掃描檔:瀏覽器工具沒有 OCR,上面的函式庫遇到只有圖片的頁面也要另外加 OCR 步驟。合併儲存格、旋轉的表格和雙欄版面,對任何 Python 函式庫和我們的工具來說都不好處理,請自己檢查表格。在瀏覽器工具裡,沒有框線的表格至少要三列,第一列一律會成為標題列。

Python 程式碼片段
已用 pymupdf4llm 1.28 和 pdfplumber 0.11 測試。複製一段在本機執行。
用 pymupdf4llm 轉一個檔案
第三方 · AGPL速度快、看得懂版面:輸出保留標題和有框線的表格。PyMuPDF 採用 AGPL,放進封閉原始碼產品前請先確認條款。
# pip install pymupdf4llm
import pathlib
import pymupdf4llm
md = pymupdf4llm.to_markdown("report.pdf")
pathlib.Path("report.md").write_text(md, encoding="utf-8")
用 pdfplumber 擷取表格
第三方 · MIT最適合有框線的表格。預設只會找有畫線的表格;沒有框線的格線需要另外設定。輔助函式會把每個表格寫成直線表格。
# pip install pdfplumber
import pdfplumber
def table_to_md(rows):
rows = [[(c or "").replace("|", "\\|").strip() for c in r] for r in rows]
head, body = rows[0], rows[1:]
lines = ["| " + " | ".join(head) + " |", "|" + " --- |" * len(head)]
lines += ["| " + " | ".join(r) + " |" for r in body]
return "\n".join(lines)
with pdfplumber.open("invoice.pdf") as pdf:
for page in pdf.pages:
for table in page.extract_tables():
print(table_to_md(table), end="\n\n")
用 pymupdf4llm 轉整個資料夾
第三方 · AGPL一個迴圈:讀取 pdfs 資料夾裡的每個檔案,每個輸入寫出一個 .md 檔。
# pip install pymupdf4llm
import pathlib
import pymupdf4llm
out = pathlib.Path("markdown")
out.mkdir(exist_ok=True)
for pdf in sorted(pathlib.Path("pdfs").glob("*.pdf")):
md = pymupdf4llm.to_markdown(str(pdf))
(out / f"{pdf.stem}.md").write_text(md, encoding="utf-8")
print("wrote", out / f"{pdf.stem}.md")
適合用 Python 腳本的地方
三種值得寫腳本的工作。

不管是腳本還是瀏覽器,檔案都留在本機
本機腳本不會把檔案傳到任何地方,我們的瀏覽器工具也一樣:轉換由 pdf.js 在頁面裡完成,檔案從來不會到達我們的伺服器。
相關工具
更多關於 PDF 和 Markdown 的頁面。
資料來源
- pymupdf4llm to_markdown() reference — PDF4LLM docs
- PyMuPDF (AGPL-3.0) — GitHub
- pdfplumber (MIT) — GitHub
- pdf.js — Mozilla
常見問題
關於 Python 選項、授權和限制。
Python PDF轉Markdown 最簡單的方法是什麼?
pymupdf4llm:用 pip 安裝,對檔案呼叫 to_markdown,就能拿到有標題、清單和框線表格的 Markdown。
需要帳號或金鑰嗎?
不需要。函式庫用 pip 安裝後可以離線執行,瀏覽器工具也不用帳號。寫腳本請用本機的 Python 函式庫。
Python 腳本讀得懂掃描檔嗎?
單靠它不行。只有圖片的頁面要先做 OCR。我們的瀏覽器工具也沒有 OCR,檔案看起來像掃描檔時會提醒你。
轉換時怎麼保留表格?
pymupdf4llm 會把有框線的表格寫成直線表格;pdfplumber 負責找出表格,再交給輔助函式轉換。沒有框線的表格兩者都需要微調。
瀏覽器工具跟這些函式庫一樣嗎?
不一樣。它使用 pdf.js 和自己的版面規則,輸出可能不同。它不用安裝,適合少量檔案。
Python 腳本會上傳我的檔案嗎?
不會。本機腳本在你的電腦上執行,這頁的瀏覽器工具也不會上傳檔案。






