关于 pdf-to-markdown
pdf-to-markdown 是一项 Node.js 技能,可将含可提取文本的 PDF 转为 Markdown,并检测文档是否可能需要 OCR。它适合处理 PDF 文档的用户;扫描文档的 OCR 尚未实现。
主要功能
- 01检测原生文本 PDF 和疑似扫描件
- 02提取原生 PDF 中的文本
- 03保留基本表格结构
- 04提供自动和原生转换模式
- 05以 JSON 返回状态和页数
适用场景
- 01将可选中文本的 PDF 转为 Markdown
- 02检查 PDF 是否可能为扫描件
- 03从文档提取文本和基本表格
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ andreadellacorte/ groove --skill pdf-to-markdown安装后在 Claude Code 中输入/pdf-to-markdown确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/convert.cjsscripts/lib/converter.cjsoutput-handler.cjspdf-detector.cjstests/converter.test.cjsrun-tests.cjstest-framework.cjstests/fixtures/temp.txt详细介绍
[重要] 开始前,使用
TaskCreate将所有工作拆分为小任务——包括每个文件的读取任务。这可以避免因长文件导致上下文丢失。对于简单任务,AI 必须询问用户是否跳过。
快速摘要
目标: 将 PDF 文件转换为格式良好的 Markdown,并自动检测文档是包含原生文本还是扫描件。目前仅实现了原生文本转换;OCR 计划后续实现。
工作流:
- 自动检测 — 判断 PDF 是否包含原生文本,还是需要 OCR
- 转换 — 使用输入路径和可选的模式/输出标志运行
scripts/convert.cjs - 输出 — 返回包含成功状态、页数和输出路径的 JSON
主要规则:
- 使用
--mode auto(默认值),让工具判断使用原生文本还是 OCR - 扫描版 PDF 的 OCR 需要额外配置
tesseract.js - 复杂的多栏布局可能无法完美保留结构
pdf-to-markdown
将 PDF 文件转换为 Markdown 格式,并自动检测文档是包含原生文本还是扫描件。
无需 npm install
此技能仅需 Node.js 即可运行;仓库中没有 node_modules。首次使用时,它会通过 npx 运行 @opendocsg/pdf2md(由 npx 缓存)。可选:在技能目录中运行 npm install,以便后续运行无需使用 npx,从而加快速度。
要求: Node.js ≥18、npx(包含在 npm 中)。
快速开始
# Basic conversion (auto-detect native vs scanned)
node .agents/skills/pdf-to-markdown/scripts/convert.cjs --input ./document.pdf
# Specify output path
node .agents/skills/pdf-to-markdown/scripts/convert.cjs -i ./doc.pdf -o ./output.md
# Force native mode (skip OCR detection)
node .agents/skills/pdf-to-markdown/scripts/convert.cjs -i ./doc.pdf --mode native
CLI 选项
| 选项 | 简写 | 描述 | 默认值 |
|---|---|---|---|
--input | -i | 输入 PDF 文件路径 | (必填) |
--output | -o | 输出 Markdown 文件路径 | {input}.md |
--mode | -m | 转换模式:auto、native、ocr | auto |
--help | -h | 显示帮助信息 |
功能
- 自动检测: 自动判断 PDF 是否包含原生文本或需要 OCR
- 原生 PDF: 使用 @opendocsg/pdf2md 快速提取
- 表格: 基本保留表格结构
- 跨平台: 支持 Windows、macOS、Linux
- 无系统依赖: 纯 JavaScript 实现
转换模式
自动(默认)
检查 PDF 首页是否包含可提取的文本。如果找到文本,则使用原生提取;否则会提示回退到 OCR。
原生
快速直接提取文本。最适合包含可选中文本(而非扫描图像)的 PDF。
OCR(扫描版 PDF)- 即将推出
适用于扫描文档。目前尚未实现——如果 PDF 看起来是扫描件,该技能会通知你。
输出
成功时返回 JSON:
{
"success": true,
"input": "/path/to/input.pdf",
"output": "/path/to/output.md",
"stats": {
"pages": 5,
"mode": "native"
}
}
限制
- 复杂的多栏布局可能无法保留结构
- 扫描版 PDF 的 OCR 准确度取决于图像质量
- 数学公式可能无法完美转换
- 首次运行 OCR 时会下载语言数据(约 15MB)
OCR 设置(可选)
OCR 模式已接入该技能,但尚未实现。如果你想准备环境或自行扩展,请安装 OCR 依赖项,以便 Node 能够解析它们:
cd .agents/skills/pdf-to-markdown
npm install tesseract.js pdfjs-dist canvas
注意: 在某些系统上,canvas 包可能需要构建工具。
重要的任务规划说明(必须遵守)
- 始终规划并将工作拆分为多个小型待办任务
- 始终添加最终审核待办任务,以检查工作质量并找出需要修复或改进的地方