Office Doc Reader · 文档转 Markdown
> 一份招标文件交给 AI,它看到的是被切碎的表格和撑爆的上下文。
> 这个 Skill 把 docx/xlsx/pptx/pdf/csv/html 转成干净的 Markdown,
> 并按关键词先摘再喂——实测省 90% token,答案质量不受影响。
安装依赖
二选一(推荐 markitdown):
# 方式一:markitdown(表格提取更好,输出少 33% 字符)
python -m pip install "markitdown[docx,pdf,xlsx]"
# 🔴 必须 python -m pip,不能裸跑 pip(客户机上 pip 可能指向别的 venv)
# 方式二:pandoc(已装 pandoc 的环境直接用,更快但表格差一截)
# 下载 https://pandoc.org/installing.html
用法
# 基本转换:docx → Markdown(正文打到 stdout,统计打到 stderr)
python scripts/read-doc.py "招标文件.docx"
# 关键词预筛(强烈建议):只输出命中段落
python scripts/read-doc.py "合同.pdf" -k "违约,付款,期限"
# 管道接 LLM
python scripts/read-doc.py 合同.pdf -k "违约,付款,期限" | llm "列出所有对我方不利的条款"
# 输出 JSON(给程序调用)
python scripts/read-doc.py 报表.xlsx --json
# 写到文件
python scripts/read-doc.py 报告.pptx -o 报告.md
为什么必须带 -k
| 做法 | 体积 | 后果 |
|---|---|---|
| 整份转出来直接喂 | 20.9 万字符 ≈ 11.3 万 token | 131072 上下文只剩 1.8 万给输出 |
-k 本地先摘 |
5.8 万字符 ≈ 3.4 万 token | 剩 28%,答案质量不受影响 |
-k + -m 14000 再压 |
1.4 万字符 ≈ 7852 token | 剩 7%,只要几个确定字段时 |
关键词没命中时不会偷偷回退成全文——会明说「一次都没命中」,让你在不知情的情况下付整份文件的钱,比返回空更糟。
支持格式
.docx .xlsx .pptx .pdf .csv .html .txt
两个转换器,优先 markitdown,pandoc 兜底:
| 耗时 | 字符 | ≈token | Markdown 表格行 | |
|---|---|---|---|---|
| pandoc 3.10 | 1.8~2.6s | 311,214 | 138,725(超上下文) | 204 |
| markitdown | 5.2~6.5s | 209,439(少 33%) | 113,281 | 695(多 3.4 倍) |
退出码
| 码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 参数错 / 文件不存在 |
| 3 | 没有任何可用转换器 |
已知边界
- 扫描件/图片型 PDF 转不出文字 —— 那是 OCR 的活,需要视觉模型或 OCR 工具
- 加密/带权限的文档读不了,会在 stderr 报出原因
- .ZBJ 等招投标私有格式读不了,需对应软件导出为 Word/Excel 再读
与其他 Skill 的关系
- 读完要产出文件 → 配 docx/xlsx/ppt 生成类 Skill
- 读完要改原文件 → 需要在原文档上替换文字的编辑类 Skill
- 扫描件/图片 PDF → 需要视觉理解/OCR 类 Skill
License
MIT