PDF解析服务器

一个从URL获取PDF并智能解析以供AI使用的服务器,支持文本提取、图像渲染和混合模式。

  • by oriondean
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 oriondean/mcp-pdf

使用说明

PDF MCP服务器

MCP(模型上下文协议)服务器,从URL中获取PDF并智能解析,以实现最佳的AI消费。支持文本提取、图像渲染和混合模式。

特性

  • 多种处理模式:

    • 🔤 文本模式:文本密集型文档的快速文本提取
    • 🖼️ 图像模式:将所有页面渲染为高质量图像
    • 🔄 混合模式:提取文本+呈现视觉页面(图表、示意图)
    • 🤖 自动模式:根据内容智能检测最佳方法
  • 智能文档分析:自动识别包含视觉内容的页面

  • 可配置的质量:可调DPI(72-300)用于图像渲染

  • 元数据提取:提取PDF标题、作者、页数等

  • 安全:URL验证、文件大小限制和超时保护

安装

# Install dependencies
npm install

# Build the project
npm run build

发展

# Run in development mode
npm run dev

# Watch mode (auto-rebuild on changes)
npm run watch

用法

作为MCP服务器

添加到您的MCP客户端配置中(例如,Claude Desktop):

{
  "mcpServers": {
    "pdf-parser": {
      "command": "node",
      "args": ["C:\\dev\\aii-mcp-example\\dist\\index.js"]
    }
  }
}

或者在开发模式下:

{
  "mcpServers": {
    "pdf-parser": {
      "command": "npm",
      "args": ["run", "dev"],
      "cwd": "C:\\dev\\aii-mcp-example"
    }
  }
}

工具:fetch_and_parse_pdf

从URL获取PDF,并根据指定模式对其进行解析。

参数:

  • url (必填):要获取的PDF的URL
  • mode (可选):处理模式- "text", "images", "hybrid",或 "auto" (默认值: "auto")
  • dpi (可选):图像渲染质量,72-300(默认值: 150)
  • maxPages (可选):渲染为图像的最大页面数,1-100(默认值: 50)
  • pages (可选):要呈现的特定页码数组

示例:

// Auto mode - intelligently detects best approach
{
  "url": "https://example.com/document.pdf"
}

// Text-only extraction
{
  "url": "https://example.com/report.pdf",
  "mode": "text"
}

// Render all pages as images
{
  "url": "https://example.com/slides.pdf",
  "mode": "images",
  "dpi": 200,
  "maxPages": 20
}

// Hybrid mode with specific pages
{
  "url": "https://example.com/report.pdf",
  "mode": "hybrid",
  "pages": [1, 5, 10]
}

运作原理

模式选择逻辑

自动模式 分析文档并选择:

  • 文本模式:适用于文本密度高且没有视觉元素的文档
  • 图像模式:对于视觉页面超过50%或文本密度非常低的文档
  • 混合模式:用于混合内容文档(文本+图表/示意图)

混合模式智能

在混合模式下,该工具:

  1. 提取所有文本内容
  2. 分析每个页面以检测视觉元素(图像、图表、低文本密度)
  3. 有选择地仅呈现具有重要视觉内容的页面
  4. 返回文本和图像以获得最佳的AI理解

性能注意事项

  • 文本提取:对于大多数PDF文件,<1s
  • 图像渲染:每页约500毫秒
  • 内存使用:典型文档约200MB
  • 最大文件大小:50MB(可配置)
  • 请求超时:30秒

建筑

src/
├── index.ts              # MCP server entry point
├── tools/
│   └── pdfTool.ts        # PDF tool implementation
├── utils/
│   ├── fetcher.ts        # URL fetching with validation
│   ├── pdfParser.ts      # Text extraction (PDF.js)
│   ├── pdfRenderer.ts    # Image rendering (Canvas)
│   └── documentAnalyzer.ts # Intelligent content detection
└── types/
    └── index.ts          # TypeScript type definitions

技术

安全功能

  • ✅ URL协议验证(仅限HTTP/HTTPS)
  • ✅ 文件大小限制(默认50MB)
  • ✅ 请求超时(30秒)
  • ✅ 内容类型验证
  • ✅ 使用Zod模式进行输入验证

错误处理

服务器为以下对象提供详细的错误消息:

  • URL无效
  • 网络故障
  • 超时错误
  • PDF解析错误
  • 文件大小违规
  • 不支持的内容类型

局限性

  • 最大文件大小:50MB
  • 渲染的最大页数:100
  • 支持的协议:HTTP,仅HTTPS
  • 图像格式:PNG(base64编码)

用例

  • 📄 研究论文:混合模式提取文本+渲染图形
  • 📊 财务报告:文本+图表的混合模式
  • 📝 文本文档:文本模式,快速高效提取
  • 🎨 演示:幻灯片的图像模式
  • 📋 表单:保留布局的图像模式
  • 📚 电子书:文本模式可实现最佳阅读效果

许可证

麻省理工学院