英文版:
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 技能(fetch --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。