本機PDF轉Markdown,檔案完全不用上傳

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

要在本機把 PDF 轉成 Markdown,可以先打開一個在瀏覽器裡執行的轉檔工具,例如我們的 PDF轉MD 工具,接著切斷網路再轉換。如果還是轉得出來,就代表檔案從頭到尾沒離開你的裝置。要寫腳本或大量處理的話,Python 函式庫或命令列工具也能在你自己的電腦上做到一樣的事。

插圖:筆電螢幕上的 PDF 變成 Markdown 檔,上傳到雲端的箭頭被打了叉

「本機」是什麼意思?要怎麼確認

本機轉換指的是:由你裝置上的軟體讀取檔案並轉成 Markdown,而且檔案的任何副本都不會送到伺服器。這樣就排除了大部分「免費線上轉檔」網站,它們會把 PDF 上傳、在遠端處理,再把結果傳回來。也排除了那些雖然裝在你筆電上,碰到困難的部分卻偷偷呼叫雲端服務的工具。

你不需要相信任何人說的話,包括我們。不管你用哪種方式做本機PDF轉Markdown,下面兩個檢查方法對任何工具都有效:

  1. 拔網路。先載入工具,再關掉 Wi-Fi(或在瀏覽器的開發人員工具裡切成離線),然後轉換。需要伺服器的工具就會失敗。
  2. 看流量。在瀏覽器放入檔案之前先打開「網路」分頁,轉換時注意有沒有 POST 請求或其他夾帶資料的請求。如果是桌面軟體,防火牆提示或網路監控工具也能告訴你同樣的事。
插圖:網路線已經拔掉,PDF 進入瀏覽器視窗,由瀏覽器自己處理後輸出 Markdown 檔
本機轉換:引擎在瀏覽器分頁裡執行,所以網路線可以一直拔著。

方法一:在瀏覽器裡本機轉換 PDF 成 Markdown

只有一個檔案、又沒有 Python 環境時,瀏覽器工具最快。我們的轉檔工具在分頁裡用開源引擎 PDF.js 讀取 PDF:依字級判斷標題,重建清單和直線表格,也能拿掉重複的頁首和頁碼。整個流程沒有上傳這一步,所以不論是合約還是食譜,轉換都一樣保有隱私。

我們在 2026年10月19日 用腳本做了拔網路測試:在 Chrome 155.0.8059.84 打開頁面,把瀏覽器切成離線,再轉換一份有重複頁首、頁碼和一個表格的 4 頁報告。測試中,離線轉換花了 87 毫秒,產出 546 個字元的 Markdown。離線期間頁面只送出 1 個請求,是載入頁面下方一張裝飾圖片的 GET,沒有任何一個請求夾帶資料。頁面載入時也沒有任何 POST 請求。

螢幕截圖:用我們的瀏覽器轉檔工具在本機把 PDF 轉成 Markdown,在斷網狀態下轉好一份 4 頁報告
離線測試截圖:報告在沒有網路的情況下轉好了,重複頁首和頁碼都已移除。

限制和所有讀取文字層的轉檔工具一樣。掃描頁沒有可讀的文字,而我們的工具不做 OCR,所以它會告訴你檔案看起來是掃描檔,而不是亂猜。多欄版面和複雜表格轉完後要再檢查;該看哪些地方,請參考 保留格式教學。

方法二:在自己電腦上用 Python 函式庫

固定要做的工作,比較適合用 Python 函式庫:可以跑整個資料夾、把程式碼放進版本控制,也能在你自己管理的伺服器上執行。程式碼細節請看我們的 Python 教學;這裡只從「是不是本機」的角度,看四個常見的套件。

  • PyMuPDF4LLM 一行就能把 PDF 轉成 Markdown:pymupdf4llm.to_markdown("report.pdf"),完全離線執行。先看授權:它和 PyMuPDF 都是 AGPL-3.0,商業授權另外販售。
  • MarkItDown 是微軟出的(MIT),能轉換很多種檔案。用 pip install 'markitdown[pdf]' 安裝 PDF 擴充,再執行 markitdown report.pdf -o report.md。預設的 PDF 處理是在本機;但有些選用擴充會把檔案送到 Azure Document Intelligence 或 Content Understanding,處理機密檔案時不要開。
  • Docling(MIT)使用版面和表格模型,並把「在本機執行、保護敏感資料」列為功能之一。模型會在第一次使用時下載;文件裡有 docling-tools models download,可以事先替沒有網路的電腦準備好。
  • Marker(程式碼 Apache-2.0;模型權重另有授權,含商業限制)一樣以模型為基礎。它的選用參數 --use_llm 會把內容送到 LLM 服務,預設是 Gemini;只有指向你自己架設的模型時,才算是本機。
python -m venv .venv && . .venv/bin/activate
pip install pymupdf4llm 'markitdown[pdf]'

# then work with the network off
python -c "import pymupdf4llm; open('report.md','w').write(pymupdf4llm.to_markdown('report.pdf'))"
markitdown report.pdf -o report-markitdown.md
連網安裝一次,之後斷網也能在本機把 PDF 轉成 Markdown。同樣的指令在 macOS、Linux 和 Windows 都能用。

在 Mac 上把 PDF 轉成 Markdown 也是一樣:兩個套件在 macOS 上都能用 pip 安裝,Homebrew 的 poppler 套件則提供下一個方法會用到的 pdftotext。

方法三:命令列工具

經典的離線工具是 Poppler 的 pdftotext。它速度快,幾乎到處都有裝,但輸出的是純文字,不是 Markdown:沒有 # 標題,也沒有直線表格。-layout 參數會用空白把欄位對齊,對人來說好讀,但解析器或模型需要結構時就沒那麼有幫助。格式轉換常用的 Pandoc,則完全讀不了 PDF。

為了用同一個檔案比較,我們在建置主機(Linux x86_64, 8 vCPU)上把程序的網路關掉,執行兩個 Python 套件和 pdftotext,再統計輸出結果。檔案就是瀏覽器測試用的那份 4 頁報告。我們轉檔工具那一列,是同一份檔案在「清除 AI 殘留」模式下的結果。

本機工具處理 4 頁報告的結果,依我們的測試(2026年10月19日,網路已關閉)
工具時間標題數直線表格頁首副本頁碼行被連字號斷開的單字
PyMuPDF4LLM 1.28.21 秒4是44否
MarkItDown 0.1.80.32 秒0是44是
pdftotext 25.03.0 -layout0.02 秒0否44是
我們的瀏覽器轉檔工具(已清除)87 毫秒4是00否
只用了一個小檔案,時間只能當作數量級參考;Python 的時間包含直譯器啟動。頁首副本和頁碼行都是需要手動刪掉的殘留。

哪種方法適合哪種工作

插圖:四張卡片,分別是瀏覽器工具、Python 函式庫、命令列工具,以及接收 Markdown 的筆記 App
本機PDF轉Markdown 有三條路,終點都一樣:你的編輯器或筆記 App。
  • 一個檔案、馬上要、什麼都不想裝:用瀏覽器。單一檔案用 PDF轉MD 工具,一大疊檔案用 批次頁面。
  • 每週一個資料夾,或自動化流程:能接受 AGPL 就用 PyMuPDF4LLM,需要 MIT 和多種檔案格式就用 MarkItDown。
  • 複雜版面、掃描檔、公式:Docling 或 Marker,要下載模型,執行也比較慢。
  • 只要文字,拿來搜尋或快速比對:pdftotext。
  • 直接放進儲存庫:在瀏覽器轉換,再照著 Obsidian 流程 做。

順帶說明一下用語:離線工具和重視隱私的工具,承諾的不是同一件事。離線只代表不需要網路;隱私還包括工具在硬碟上留下的東西,像是快取、記錄檔、當機報告。所以安裝任何軟體前,都先讀一下它的隱私說明。

機密 PDF 檢查清單

  1. 讀一下工具的隱私權政策,再用上面的離線測試自己驗證。我們的政策在 隱私權頁面。
  2. 連網安裝套件、下載模型,然後關掉網路,在本機把 PDF 轉成 Markdown。
  3. 雲端擴充一律保持關閉:MarkItDown 的 Azure 選項、Marker 的 LLM 模式,以及任何會呼叫外部服務的「AI 清理」開關。
  4. 在你自己管理的資料夾裡轉換,完成後刪掉中間的副本。
  5. 把 Markdown 貼進聊天模型之前要想清楚:這一步就是上傳。轉換時沒有上傳,不代表之後也一樣。
  6. 法律或醫療檔案,優先選可以看到原始碼的工具,並把使用的版本和輸出一起保存。

資料來源

  1. PDF.js — Mozilla
  2. PyMuPDF4LLM (README and licence) — Artifex, GitHub
  3. MarkItDown (README and licence) — Microsoft, GitHub
  4. Docling: model prefetching and offline usage — Docling project
  5. Marker (README and licence) — Datalab, GitHub
  6. Poppler (pdftotext) — freedesktop.org

常見問題

要怎麼在本機把 PDF 轉成 Markdown?

使用在分頁裡處理檔案的瀏覽器轉檔工具,或安裝 PyMuPDF4LLM、MarkItDown 這類 Python 函式庫,在自己的電腦上執行。不管哪一種,都可以斷網測試,確定沒有上傳。

怎麼知道線上轉檔工具有沒有上傳我的檔案?

打開瀏覽器的「網路」分頁再轉換,夾帶檔案的請求會顯示成 POST 或上傳流量。更簡單的方法是轉換前先斷網,會上傳的工具一斷網就跑不完。

你們的轉檔工具可以離線用嗎?

可以,只要 PDF 有文字層。先連網載入頁面,讓 PDF 引擎下載好,之後就能切斷網路。我們測試時,一份 4 頁報告在離線狀態下轉好了,沒有任何請求夾帶資料。

本機轉換用哪個 Python 函式庫最好?

在我們的小型測試中,PyMuPDF4LLM 保留的結構最多,但它是 AGPL。MarkItDown 是 MIT,支援很多格式。Docling 和 Marker 適合複雜版面和掃描檔,代價是要下載模型。

掃描的 PDF 可以在本機轉換嗎?

只有能在你電腦上跑 OCR 的工具才行。Docling 和 Marker 可以;我們的瀏覽器轉檔工具只讀文字層、不做 OCR,所以會提示檔案看起來是掃描檔。

用 pdftotext 取代 Markdown 夠嗎?

拿來搜尋和快速閱讀,通常就夠了。不過它不會產生 Markdown 語法的標題和表格,需要結構的筆記、文件和 AI 提示詞,還是要用真正的 Markdown 轉檔工具。