10|X to MD — 把 PDF / Word / 影音通通轉成 Markdown

📄 一句話:AI 最愛吃的格式是 Markdown——把你既有的 PDF / Word / PPT / 網頁 / 影音通通轉成 .md,丟進 PARA 第二大腦,Claude / Codex 才能高效讀懂。
一、為什麼是 Markdown
LLM 訓練資料裡 Markdown 比例極高,所以模型「最熟悉」的長文件格式就是 .md:
| 格式 | LLM 好讀嗎? | 容易 grep / search 嗎? |
|---|---|---|
| Markdown | ✅✅ 最好 | ✅✅ 純文字直接搜 |
| HTML | ⚠️ 有 noise(tag) | ⚠️ 要清標籤 |
| ❌ 排版會丟失 | ❌ 二進位 | |
| Word / PPT | ❌ 同上 | ❌ |
| 圖片 / 影音 | ❌ 完全沒文字 | ❌ |
→ 任何要餵 AI 的內容,先轉 Markdown 是值得的投資。
二、按來源挑工具
📕 PDF → Markdown
| 工具 | 強項 | 缺點 |
|---|---|---|
| Unstructured | LLM-friendly 輸出,支援 30+ 格式 | 複雜表格仍會掉 |
| Docling (IBM 2025) | 表格 + layout 抽取最強 | 較新、社群仍小 |
| MarkItDown (Microsoft) | 輕量、Python 一行命令 | 中文 PDF 較弱 |
| pdfplumber + 自寫 | 完全可控 | 要自己寫邏輯 |
# Unstructured
unstructured-ingest local --input-path doc.pdf --output-dir out/
# MarkItDown
markitdown doc.pdf > doc.md
📘 Word / PPT → Markdown
| 工具 | 適合 |
|---|---|
| Pandoc | 經典老牌,幾乎萬能 |
| MarkItDown | 一行命令,輸出乾淨 |
pandoc proposal.docx -o proposal.md
markitdown deck.pptx > deck.md
🌐 HTML / 網頁 → Markdown
| 工具 | 適合 |
|---|---|
| trafilatura | 去 navigation / 廣告,留主文 |
| Readability (mozilla) | 同上,Node.js 系 |
| html2text | 簡單暴力 |
trafilatura -u https://example.com/article > article.md
🎙️ 音訊 → Markdown
| 工具 | 強項 |
|---|---|
| faster-whisper | Whisper 包裝,速度 4×,繁中支援好 |
| Whisper.cpp | C++ 實作,地端最省資源 |
| WhisperX | 加 speaker diarization(誰在講話) |
faster-whisper meeting.mp3 --language zh --output_format json
🎬 影片 → Markdown
# 1. 下載
yt-dlp -x --audio-format mp3 'https://youtube.com/watch?v=...' -o talk.mp3
# 2. 轉錄
faster-whisper talk.mp3 --language zh > talk.txt
# 3. AI 整理成 markdown
claude "把 talk.txt 整成結構化 markdown,含章節標題與重點 bullet"
🖼️ 掃描件 / 圖片 → Markdown
| 工具 | 強項 |
|---|---|
| PaddleOCR | 繁中 OCR 最強(業界共識) |
| Google Document AI | 表格抽取準 |
| Tesseract | 老牌,繁中差 |
paddleocr --image_dir scan.jpg --output_dir out/ --lang ch
三、中文 PDF 的特別考量
中文 PDF 比英文難轉,因為:
- 直書 / 橫書混雜
- 字型嵌入問題
- 標點全形 vs 半形
推薦順序(從工具到 AI):
1. PaddleOCR 抽文字(精度最好)
↓
2. Pandoc / MarkItDown 處理結構(若原本是電子 PDF)
↓
3. 把雜亂結果丟給 Claude:「幫我重排成乾淨 markdown」
四、整合進 PARA 工作流
把 x-to-md 寫成一個 Skill:
# ~/brain/Skills/x-to-md.md
---
name: x-to-md
trigger: ["/to-md", "幫我轉 markdown"]
---
收到檔案 → 偵測格式 → 用對應工具轉
PDF → Unstructured
DOCX → Pandoc
MP3 → faster-whisper
JPG → PaddleOCR
輸出存 ~/brain/Inbox/[原檔名].md
→ Claude / Codex 看到 /to-md report.pdf 就觸發整個流程。
→ 結果落地 Inbox/,後續由 PARA 自然分類。
五、為什麼有人想自己重寫 MarkItDown
MarkItDown 是 Python 寫的——裝起來重,要 pip install、有依賴衝突風險。
如果想分發給非開發者員工用,改寫成 Golang 單一執行檔:
- ✅ 0 依賴(單檔
markitdown就跑) - ✅ 跨平台(一份 binary 給 Mac / Windows / Linux)
- ✅ 啟動快
→ 這是一個值得做的 weekend project,也是 DIY 一隻你自己的龍蝦 練習的好題材。
六、常見誤解
| ❌ 誤解 | ✅ 正解 |
|---|---|
| 「丟原檔給 AI 它會處理」 | 多數 LLM 不能直接吃 PDF / 影音,要先轉文字 |
| 「OCR 一次就乾淨」 | 中文 OCR 仍有 5-10% 錯字率,要二次校 |
| 「Markdown 醜,直接給 HTML 就好」 | HTML 含大量 noise,LLM 處理慢且容易抓到 nav / footer 干擾 |
| 「用任何 OCR 都差不多」 | 繁中差距很大,PaddleOCR vs Tesseract 可差到 20% |
七、實戰建議
- 建立 Inbox/ 統一接口:所有要轉的檔案先丟一處
- 自動偵測 + 轉換:寫成 Skill 讓 AI 觸發
- 保留原檔:轉完不要刪原檔,留在 Archives/raw/
- 設品質檢查:轉完跑一次「檔案能搜到 X 關鍵字嗎」測試
- 重轉策略:如果 AI 用得不順,可重新換工具再轉一次
延伸閱讀
- PARA 第二大腦 — 轉完 MD 要往哪放
- Skill — 把轉檔流程寫成 reusable command
- Token — 中文比英文貴,轉好的 MD 用 token 更有效率
- DIY 一隻你自己的龍蝦 — 把 x-to-md 自動化納入