mcpField
P
pdf-to-markdown

pdf-to-markdown

github.com/andreadellacorte文档处理6293 次安装14 周前更新
代码仓库

关于 pdf-to-markdown

pdf-to-markdown 是一项 Node.js 技能,可将含可提取文本的 PDF 转为 Markdown,并检测文档是否可能需要 OCR。它适合处理 PDF 文档的用户;扫描文档的 OCR 尚未实现。

主要功能

  1. 01检测原生文本 PDF 和疑似扫描件
  2. 02提取原生 PDF 中的文本
  3. 03保留基本表格结构
  4. 04提供自动和原生转换模式
  5. 05以 JSON 返回状态和页数

适用场景

  1. 01将可选中文本的 PDF 转为 Markdown
  2. 02检查 PDF 是否可能为扫描件
  3. 03从文档提取文本和基本表格

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/andreadellacorte/groove --skill pdf-to-markdown

安装后在 Claude Code 中输入/pdf-to-markdown确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
convert.cjs
scripts/lib/
converter.cjs
output-handler.cjs
pdf-detector.cjs
tests/
converter.test.cjs
run-tests.cjs
test-framework.cjs
tests/fixtures/
temp.txt

详细介绍

[重要] 开始前,使用 TaskCreate 将所有工作拆分为小任务——包括每个文件的读取任务。这可以避免因长文件导致上下文丢失。对于简单任务,AI 必须询问用户是否跳过。

快速摘要

目标: 将 PDF 文件转换为格式良好的 Markdown,并自动检测文档是包含原生文本还是扫描件。目前仅实现了原生文本转换;OCR 计划后续实现。

工作流:

  1. 自动检测 — 判断 PDF 是否包含原生文本,还是需要 OCR
  2. 转换 — 使用输入路径和可选的模式/输出标志运行 scripts/convert.cjs
  3. 输出 — 返回包含成功状态、页数和输出路径的 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、ocrauto
--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 包可能需要构建工具。


重要的任务规划说明(必须遵守)

  • 始终规划并将工作拆分为多个小型待办任务
  • 始终添加最终审核待办任务,以检查工作质量并找出需要修复或改进的地方

评论

支持 Markdown