Community연구 & 데이터 분석github.com

taotaoboom/pdf2md-agent-skill

让 LLM agent 高效读懂任何文档:PDF/Word/PPT/Excel 转 Markdown,PDF 智能分流(文本页 PyMuPDF + 公式页/扫描页视觉 OCR)

pdf2md-agent-skill란 무엇인가요?

pdf2md-agent-skill is a Claude Code agent skill that 让 LLM agent 高效读懂任何文档:PDF/Word/PPT/Excel 转 Markdown,PDF 智能分流(文本页 PyMuPDF + 公式页/扫描页视觉 OCR).

지원 대상Claude CodeCodex CLI~Cursor
npx skills add taotaoboom/pdf2md-agent-skill

Installed? Explore more 연구 & 데이터 분석 skills: obra/superpowers, affaan-m/quarkus-verification, affaan-m/uspto-database · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

pdf2md-agent-skill - PDF/文档转 Markdown

何时触发

需要读取 PDF 内容时,先使用本 skill 转换为 Markdown。

先将 PDF 转换为 Markdown,再用当前 Agent 可用的文本读取工具读取输出文件。

触发场景:

  • 用户给了 PDF 路径,要求阅读、总结、分析、翻译、问答
  • 需要引用 PDF 中的具体内容
  • 需要提取 PDF 中的表格、公式、参考文献

标准工作流

先将 <skill_dir> 解析为本 SKILL.md 所在目录。不要假定 skill 安装在 ~/.claude/skills,因为 Codex、自定义安装和 Windows 的路径不同。

按固定顺序执行:

# 步骤 1:转换(自动处理所有 PDF 类型,无需判断类型)
python3 "<skill_dir>/scripts/md_convert.py" "<pdf路径>" -o "<工作区临时目录>/<名称>.md"

# 步骤 2:用当前 Agent 的文本读取工具读取生成的 .md 文件

示例:

python3 "<skill_dir>/scripts/md_convert.py" \
  "/path/to/some-paper.pdf" \
  -o "./some-paper.md"

然后读取 ./some-paper.md

为什么这样设计

PDF 有多类页面,处理策略不同。脚本自动逐页判断,你无需关心:

页面类型脚本策略说明
普通文本页PyMuPDF 提取快、免费,段落合并+双栏排序+页眉过滤
公式密集页Ark 视觉 OCR公式转写为 LaTeX(\( E_i \)),避免碎片化
扫描页Ark 视觉 OCR渲染图片 + 视觉模型识别
混合型逐页自动分流一篇论文只 OCR 公式页,兼顾速度与质量

智能混合策略:脚本检测每页数学符号密度,公式页(占比 >1.5%)自动用 OCR 转写 LaTeX,文本页用 PyMuPDF。

禁止行为:

  • ❌ 不要判断 PDF 类型再决定调用方式--直接调用,脚本全自动
  • ❌ 不要用 markitdown 裸命令转 PDF(默认 pdfminer 后端会丢空格)
  • ❌ 不要把 PDF 当纯文本直接读取
  • ❌ 不要省略 -o 参数(该参数必需)

参数

参数说明何时用
input输入文件路径(必需)总是
-o, --output输出 .md 路径(必需)总是
--ocr强制全篇 LLM OCR仅当自动检测明显出错时(罕见)
-m, --model视觉模型,默认 doubao-seed-1-6-flash-250828需换模型时
--allow-partial允许 OCR 缺页时仍成功退出仅在用户明确接受残缺输出时
--no-llm非 PDF 格式禁用 LLM 增强仅非 PDF 格式
--version显示版本号查询版本时

默认调用不要加任何可选参数

python3 "<skill_dir>/scripts/md_convert.py" input.pdf -o ./out.md

非 PDF 格式

Word/PPT/Excel/图片等也支持,走 markitdown 原生路径:

python3 "<skill_dir>/scripts/md_convert.py" report.docx -o ./report.md

这类格式可直接用相应文档工具读取;需要统一结构时再转 Markdown。

环境与依赖

环境变量:

  • ARK_API_KEY - 公式密集页、扫描页或空文本页触发视觉 OCR 时必需。完全不触发 OCR 的文本 PDF 无需设置。
  • ARK_BASE_URL - 可选,默认 https://ark.cn-beijing.volces.com/api/v3。Ark 已验证;其他端点必须兼容 Chat Completions、视觉输入和 data URL,使用前自行验证。

依赖:

  • pymupdf(PDF 文本提取 + 渲染)
  • openai(Ark 视觉模型客户端)
  • markitdown(非 PDF 格式后端)

要求 Python 3.10+。

错误处理

报错原因处理
ARK_API_KEY 未设置公式页/扫描页/空文本页需要视觉 OCR配置 Key,或改用不触发 OCR 的输入
文件不存在路径错或含空格未加引号用引号包裹路径
openai/markitdown/pymupdf 未安装依赖缺失pip install <包名>
PDF 已加密PDF 设了密码先解密 PDF 再转换
检测到 OCR 缺页Key 无效 / 网络 / 模型名检查错误后重试;仅在明确接受残缺输出时使用 --allow-partial
输出路径不能与输入文件相同输出会覆盖原文档为 Markdown 指定不同路径
转换成功但内容为空可能是纯图片 PDF 被误判--ocr 强制 OCR 重试

转换失败时:不要反复重试相同命令,先看 stderr 报错信息定位问题。

输出约定

  • 脚本将 Markdown 写入 -o 指定文件,stderr 输出处理日志(每页类型、进度)
  • 成功时最后一行:OK: <input> -> <output> (XX KB)
  • 任一 OCR 页面失败时默认返回非零退出码;显式使用 --allow-partial 才接受残缺输出
  • 用文本读取工具读取输出文件后,再基于内容继续工作

与其他工具的分工

场景工具
读 PDF 内容本 skill(必用)
读 Word/PPT/Excel本 skill 或当前 Agent 的文档工具
读纯文本/代码/Markdown当前 Agent 的文本读取工具

관련 스킬