PDF文本提取服务

一个高效的PDF文本提取服务,支持读取、搜索和提取PDF文件中的文本和元数据,优化了Claude Code的上下文窗口使用。

  • by hancengiz
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 hancengiz/read_pdf_as_text_mcp

使用说明

PDF阅读器MCP服务器

一种模型上下文协议(MCP)服务器,为Claude Code提供高效的PDF文本提取功能。此服务器允许您从PDF文件中读取、搜索和提取元数据,而无需将整个内容加载到Claude的上下文窗口中。

npm包: @fabriqa.ai/pdf-reader-mcp 作者: 韩 博客文章: 我如何构建这个工具来保存我的上下文

特性

  • 阅读PDF文件:使用可选的文本清理从PDF文件中提取全文内容
  • 搜索PDF:在PDF中搜索具有上下文感知结果的特定文本
  • 提取元数据:获取详细的元数据,包括标题、作者、页数、日期等。
  • 高效的上下文使用:在不消耗过多克劳德代码上下文的情况下处理大型PDF
  • 灵活的选项:支持页面范围、区分大小写的搜索等

安装

选项A:从npm安装(推荐)

npm install -g @fabriqa.ai/pdf-reader-mcp

安装后,服务器将在全球范围内可用。您可以通过运行以下命令进行配置:

# The package will be installed in your global node_modules
# Typically: /usr/local/lib/node_modules/@fabriqa.ai/pdf-reader-mcp

选项B:从源代码安装

  1. 克隆此存储库:
git clone https://github.com/hancengiz/read_pdf_as_text_mcp.git
cd read_pdf_as_text_mcp
  1. 安装依赖项:
npm install

配置

如果通过npm安装(推荐):

选项1:使用Claude Code CLI(最简单)

# Add the MCP server
claude mcp add pdf-reader npx @fabriqa.ai/pdf-reader-mcp@latest

# Or use the convenience script
npx @fabriqa.ai/pdf-reader-mcp/update-config.js

选项2:手动配置

添加到您的 ~/.claude.json:

{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "@fabriqa.ai/pdf-reader-mcp@latest"
      ]
    }
  }
}

这使用 npx 自动运行全局安装的包,而无需指定路径。

快速设置脚本(可选):

通过npm安装后,您可以使用附带的配置脚本自动更新您的 ~/.claude.json:

npx @fabriqa.ai/pdf-reader-mcp/update-config.js

或者,如果从源代码安装:

node update-config.js

这将使用以下命令自动添加MCP服务器 npx,使其在所有项目中都可以在机器范围内使用。

手动配置:

对于 Claude桌面版,编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "@fabriqa.ai/pdf-reader-mcp@latest"
      ]
    }
  }
}

用法

配置后,重新启动Claude Code。将提供以下工具:

1.阅读pdf

从PDF文件中提取文本内容。

参数:

  • file (必填):PDF文件的路径
  • pages (可选):页面范围(例如,“1-5”、“1,3,5”和“全部”)。默认值:“全部”
  • clean_text (可选):清理并规范提取的文本。默认值:false
  • include_metadata (可选):在输出中包含PDF元数据。默认值:true

例子:

Can you read the PDF at /path/to/document.pdf?

2.搜索pdf

在PDF文件中搜索特定文本。

参数:

  • file (必填):PDF文件的路径
  • query (必填):要搜索的文本
  • case_sensitive (可选):区分大小写的搜索。默认值:false
  • whole_word (可选):仅匹配整个单词。默认值:false

例子:

Search for "machine learning" in /path/to/document.pdf

3.pdf元数据

从PDF文件中提取元数据。

参数:

  • file (必填):PDF文件的路径

例子:

Get metadata from /path/to/document.pdf

工作流示例

以下是如何将此MCP服务器与Claude Code一起使用:

  1. 先提取元数据 要理解该文件:

    What's the metadata for ~/Documents/research-paper.pdf?
    
  2. 搜索特定主题 不读取整个文件:

    Search for "neural networks" in ~/Documents/research-paper.pdf
    
  3. 阅读具体章节 当你知道自己在寻找什么时:

    Read pages 10-15 from ~/Documents/research-paper.pdf with cleaned text
    

益处

  • 上下文效率:处理大型PDF文件,无需将所有内容加载到Claude的上下文中
  • 更快的分析:只搜索和提取您需要的内容
  • 更好的性能:处理多个或大型PDF时减少令牌使用
  • 灵活提取:选择要提取的信息以及如何格式化

技术细节

  • 与 @模型上下文协议/sdk
  • 用途 pdf解析 用于PDF文本提取
  • 作为通过stdio进行通信的本地Node.js进程运行
  • 支持PDF解析可以处理的所有PDF版本

故障排除

服务器未出现在Claude代码中

  1. 验证配置文件中的路径是否正确
  2. 确保Node.js已安装并位于您的PATH中
  3. 检查是否安装了依赖项: npm install
  4. 完全重新启动Claude代码
  5. 检查克劳德代码日志是否有任何错误消息

PDF未找到错误

  • 使用PDF文件的绝对路径
  • 验证文件权限
  • 确保PDF文件存在于指定位置

文本提取问题

  • 某些PDF(扫描图像)可能不包含可提取的文本
  • 尝试启用 clean_text 更好的格式化选项
  • 复杂的布局可能会影响文本提取质量

发展

要修改或扩展服务器,请执行以下操作:

  1. 编辑 index.js 添加新工具或修改现有工具
  2. 更新 ListToolsRequestSchema 注册新工具的处理程序
  3. 在中添加相应的处理程序 CallToolRequestSchema 处理器
  4. 重新启动服务器(重新启动Claude Code)以测试更改

许可证

麻省理工学院

作者

由...创建 韩

贡献

请随时提交问题或拉取请求以改进此MCP服务器。