英文版:
SKILL.en.md
doc — 文件處理 (PDF/DOCX/XLSX)
輕量級技能,無自有程式碼:根據 references/doc-recipes.md 中的配方路由至本機 CLI 工具 (pdftotext、tesseract、qpdf、pdftk、docling、libreoffice)。
依輸入類型的路由表
使用 file <f> 辨識類型,並嘗試開啟第一頁。
| 輸入 + 需求 | 主要指令 | 備註 |
|---|---|---|
| PDF 有文字層,提取文字 | pdftotext -layout | §1 |
| PDF 掃描/圖片,提取文字 | OCR pdftoppm + tesseract | §1 |
| 複雜 PDF/DOCX (表格、排版) → markdown/JSON | 技能 docling 正式版 (使用 --skill docling 獲取),備用 docling convert --to md | §1 — PDF 超過 5 頁:--page-range,超時 180 |
| XLSX → CSV/markdown | libreoffice headless | §1 |
| 折疊/分割/旋轉/提取 PDF 頁面 | qpdf/pdftk + pdfinfo/pdftoppm | §2 |
| 雙面/模糊檔案,快速探查 | 技能 inspect (mediaskills) | uv run <inspect>/scripts/probe.py |
| 驗證剛提取的輸出 | pdfinfo + pdftotext | §4 — 頁數必須相符,文字不能為空 |
規則
- 注意輸入語言 — 使用與使用者相同語言回答。
- 輸出放在來源檔案旁:
<原始檔名>.extract.md|.txt|.csv。不要覆蓋原始檔案。 - 從掃描圖片提取時標記來源:標記
[ocr]— 不要與觀察到的內容混合。 - 交付前驗證:PDF 必須有足夠頁數 (
pdfinfo),提取的文字必須與頁數相符 (pdftotext);缺失/空白 → 重新提取。 - 本地優先:所有處理指令都在本機執行;離線能力取決於 CLI、OCR/Docling 模型和必要資料是否已安裝或快取。首次使用 Docling 可能需要下載模型;獲取第三方技能也需要網路。如果缺少模型/工具,請明確報告或選擇其他本地配方 — 不要聲稱已離線處理。
- 輸出完成後報告已寫入的檔案 (名稱 + 路徑) — 不要保持沉默。
第三方技能 (每次階段獲取)
- 技能
docling正式版 (docling-project):CLI + Python SDK、PipelineOptions、OCR 配置、DoclingDocument JSON/markdown — 比 §1 中的docling convertCLI 更深入。 - 每次階段獲取:
./scripts/fetch-session.sh --skill docling→ 暫存,不永久安裝。 - 無網路 / 無法獲取:使用現有的 CLI 配方。
docling convert --to md僅在必要模型已存在於快取中時才能離線執行;否則,選擇其他方案或明確報告依賴性。
參考資料
references/doc-recipes.md— §1 提取 (PDF/OCR/docling/DOCX/XLSX)、§2 PDF 轉換、§3 輸出寫入、§4 為技能paper匯出 DOCX。