Processes local PDF files with capabilities including text extraction, image extraction, batch processing of directories, metadata retrieval, fuzzy file search, and format conversion between PDF, Word, and Markdown.
Converts PDF documents to Markdown format with intelligent recognition of headings, lists, paragraphs, and table structures, and supports converting Markdown back to Word documents.
PDF MCP Flow - AI 驱动的 PDF 处理引擎
中文 | English
🚀 专为 LLM 和 RAG 设计的 MCP 文档处理服务器 | PDF 转 Markdown | 格式转换 | 智能提取
MCP PDF Flow 是一个强大的 Model Context Protocol (MCP) 服务器,旨在弥合 LLM(如 Claude)与本地文档之间的鸿沟。
它不仅是PDF 转 Markdown 的最佳工具,还提供了一套完整的文档处理工作流,支持 RAG(检索增强生成) 场景下的数据清洗和格式化。
✨ 核心优势
🤖 LLM 友好:输出清洗后的结构化 Markdown,完美适配 AI 上下文阅读。
🔍 智能 RAG 支持:支持语义模糊搜索和元数据提取,快速定位文档关键信息。
🔄 全能格式转换:PDF ⇋ Word ⇋ Markdown 无缝互转。
✨ 功能特性
📝 智能文本提取:
精准提取 PDF 页面文本。
智能 Markdown 识别:自动识别标题、列表、段落结构,合并跨行文本,输出干净的 Markdown。
🖼️ 图片提取:
支持提取页面内的所有图片。
自动保存与引用:默认将图片保存到本地
extracted_images/目录,并在 Markdown 中插入图片路径引用,避免大量 Base64 数据占用上下文。Base64 预览:可选直接返回图片 Base64 编码,支持在 MCP 客户端中即时预览(适合少量小图)。
📂 批量处理:支持对指定目录下的 PDF 文件进行批量提取,自动生成 Markdown 和图片,并保持目录结构整洁。
📊 增强表格提取:
高精度识别:自动处理跨行表头、错位列和复杂排版。
智能清洗:自动移除空行、空表头,过滤伪表格(如文本列表)。
批量导出:支持一键提取目录下所有 PDF 中的表格为 Markdown 文件。
🔍 模糊搜索:
智能查找:支持通过文件名关键词(模糊匹配、拼写错误兼容)快速定位 PDF 文件路径。
递归搜索:默认支持多级目录递归查找。
🔄 格式转换:
Markdown 转 Word:将生成的 Markdown 报告一键转换为格式完美的 Word (.docx) 文档。
Word 转 PDF:支持将 Word 文档转换为 PDF 文件。
自动适配:优先使用 Microsoft Word,若未安装则自动回退到 WPS Office。
⚙️ 灵活提取:支持提取全部页面、指定页码范围(如
1,1-5)或按关键词智能搜索。ℹ️ 元数据获取:支持获取 PDF 标题、作者、页数及目录结构 (TOC)。
🛠️ 环境要求
操作系统:Windows (推荐,用于支持 Word/WPS 转换) / macOS / Linux
Python:>= 3.10
Office 软件 (仅 Word 转 PDF 功能需要):
Microsoft Word (最佳兼容性)
或 WPS Office (支持 Windows)
📦 安装与使用
本项目使用 uv 进行包管理。
1. 克隆项目
2. 安装依赖
3. 运行服务
本服务是一个 MCP Server,设计为由 Claude Desktop 等客户端自动启动。 您不需要手动在终端运行启动命令。请继续阅读下方的 Claude Desktop 配置 章节完成设置。一旦配置完成,Claude Desktop 启动时会自动在后台运行此服务。
🔌 Claude Desktop 配置
要将此工具添加到 Claude Desktop,请编辑配置文件:
Windows:
%AppData%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
添加以下内容(请务必将路径修改为您本地的实际路径):
注意:
Windows 用户路径分隔符请使用
PDF_SEARCH_PATHS
💬 如何在对话中使用
你不需要手动填写 JSON 参数! 只需要在对话中告诉 Claude 你想做什么,它会自动调用工具。
场景示例
1. 读取 PDF
指定绝对路径:
用户: "帮我读取
D:\Documents\report.pdf的第 1 到 5 页。"读取项目目录下文件:
用户: "读取当前目录下的
test.pdf。" (注:Claude 会自动查找运行目录下的文件)
2. 转换 Markdown 为 Word
用户: "把刚刚提取的内容保存为 Word 文档,放在
D:\Documents\output.docx。"Claude: (自动调用
convert_markdown_to_docx工具)
3. Word 转 PDF
用户: "把
D:\Documents\draft.docx转换成 PDF。"Claude: (自动调用
convert_docx_to_pdf工具)
4. 批量处理 PDF
用户: "批量处理
D:\Docs目录下的所有 PDF,导出为 Markdown。"Claude: (自动调用
batch_extract_pdf_content工具)
5. 批量处理并指定输出目录
用户: "批量处理
D:\Docs下的 PDF,将 Markdown 存到D:\Output\MD,图片存到D:\Output\Images。"Claude: (调用
batch_extract_pdf_content,参数custom_output_dir="D:\\Output\\MD",custom_image_output_dir="D:\\Output\\Images")
6. 批量处理并平铺输出(不保留目录结构)
用户: "把
D:\Docs下所有子文件夹里的 PDF 都提取出来,全部放到D:\All_MDs这个文件夹里,不要建子文件夹。"Claude: (调用
batch_extract_pdf_content,参数custom_output_dir="D:\\All_MDs",preserve_structure=False,create_folder=False)
7. 模糊查找 PDF
用户: "帮我找一下
D:\Study下面关于springboot的 PDF 文件。"Claude: (自动调用
search_pdf_files工具)
8. 获取 PDF 目录结构
用户: "提取
D:\Books\Guide.pdf的目录大纲。"Claude: (自动调用
get_pdf_metadata工具)
9. 批量提取表格
用户: "把
D:\Books下所有 PDF 的表格提取出来,存到D:\Tables。"Claude: (自动调用
batch_extract_tables工具)
📖 工具列表
💡 小贴士:如何获取“绝对路径”?
Windows: 按住
Shift键,右键点击文件,选择“复制文件地址 (Copy as path)”。粘贴时去掉首尾的引号。
示例:
C:\Users\Name\Documents\report.pdfmacOS: 选中文件,按下
Option + Command + C复制路径。
示例:
/Users/name/Documents/report.pdf
1. extract_pdf_content
提取 PDF 内容的核心工具。
参数:
file_path(必填): PDF 文件的绝对路径。Windows 示例:
D:\Documents\paper.pdfmacOS 示例:
/Users/username/Documents/paper.pdf
page_range(可选): 页码范围,默认为 "all"。示例:
"1","1-5","1,3,5","all"。
keyword(可选): 关键词搜索。若提供,将忽略页码范围,仅提取包含关键词的页面。format(可选): 输出格式。"text"(默认): 纯文本提取。"markdown": 推荐。智能识别标题和段落,适合 LLM 阅读。"json": 返回结构化 JSON 数据,包含每一页的文本和图片信息,适合程序化处理。
include_text(可选): 是否提取文本,默认为true。include_images(可选): 是否提取图片,默认为false。use_local_images_only(可选): 图片处理模式,默认为true。true(默认): 图片保存到本地extracted_images目录,Markdown 中使用路径引用。推荐用于大文件或包含大量图片的 PDF,防止 Token 溢出。false: 返回图片的 Base64 数据流,可直接预览,但消耗大量 Token。
skip_table_detection(可选): 极速模式开关,默认为false。false(默认): 智能检测并提取表格,转换为 Markdown 表格格式。true: 跳过表格检测。适用于仅需要纯文本内容的场景,速度可提升 3-4 倍(约 400+ 页/秒)。
2. batch_extract_pdf_content
批量处理指定目录下的所有 PDF 文件。
参数:
directory(必填): 要搜索的根目录绝对路径。pattern(可选): 文件匹配模式,默认为**/*.pdf(支持递归)。custom_output_dir(可选): 指定输出根目录。如果不填,默认使用项目根目录。最终输出将在该目录下创建output文件夹,并根据模式包含以下子目录:output_standard_with_image: 包含图片,标准模式(含表格)。output_fast_with_image_no_table: 包含图片,极速模式(跳过表格检测)。output_standard_no_image: 标准模式+纯文本 (不含图片,含表格)。output_fast_no_image_and_table: 极速模式+纯文本 (不含图片,不含表格)。output_only_image: 仅提取图片模式 (不生成 Markdown 文件,图片保存在output/output_only_image/extracted_images目录)。
format(可选): 输出格式,支持markdown(默认),json,text。include_text(可选): 是否提取文本,默认为true。include_images(可选): 是否提取图片,默认为false。use_local_images_only(可选): 图片处理模式,默认为true。skip_table_detection(可选): 极速模式开关,默认为false。false(默认): 智能检测并提取表格,转换为 Markdown 表格格式。true: 跳过表格检测。适用于仅需要纯文本内容的场景,速度可提升 3-4 倍(约 400+ 页/秒)。
create_folder(可选): 是否创建专属文件夹,默认为false。true: 为每个 PDF 创建专属的同名文件夹(例如output/subdir/file/file.md)。false(默认): 不创建专属文件夹(例如output/subdir/file.md)。
preserve_structure(可选): 目录结构保持开关,默认为true。true(默认): 保持源文件的目录层级结构(例如output/SourceSubDir/file.md)。false: 集中/扁平化模式。忽略源目录结构,将所有结果直接放在输出根目录(例如output/file.md)。
3. get_pdf_metadata
快速获取 PDF 的元数据和目录结构。
参数:
file_path(必填): PDF 文件的绝对路径。
4. convert_markdown_to_docx
将 Markdown 内容转换为 Word 文档。
参数:
markdown_content(必填): 要转换的 Markdown 文本内容。output_path(必填): 输出 .docx 文件的绝对路径。注意: 这里需要填写你希望保存的新文件路径。
示例:
D:\Documents\report_output.docx
5. convert_docx_to_pdf
将 Word 文档转换为 PDF 文件。
参数:
docx_path(必填): 输入的 .docx 文件绝对路径。pdf_path(可选): 输出 .pdf 文件的绝对路径。如果不提供,将在原 docx 文件同目录下生成同名 pdf 文件。
6. search_pdf_files
通过文件名模糊搜索 PDF 文件路径。
参数:
query(必填): 文件名关键词。支持模糊匹配(如拼写错误)、中文匹配。directory(可选): 搜索根目录。默认为当前工作目录。limit(可选): 返回的最大结果数量,默认 10。threshold(可选): 匹配阈值 (0.0-1.0),默认 0.45。
7. batch_extract_tables
批量提取目录中所有 PDF 的表格。
默认输出路径:
output/output_only_table: 仅提取表格模式 (表格保存在output/output_only_table目录)。
参数:
directory(必填): 要搜索的根目录绝对路径。output_dir(可选): 指定输出根目录。最终表格 Markdown 文件将保存在该目录下的output/output_only_table文件夹中。如果不填,默认为当前目录。pattern(可选): 文件匹配模式,默认为**/*.pdf。
✨ 表格提取增强特性:
智能表头合并:自动处理跨行表头和被拆分的列名。
错位列修复:智能识别并合并因格式问题错位的标题和内容列。
空行/空表头优化:
自动移除无效的空行。
智能识别 KV 结构表格,仅在必要时保留表头,避免对中文 KV 表格生成错误的空表头。
伪表格过滤:
自动识别并过滤文本列表(如目录、步骤说明)。
自动过滤被误判为表格的代码块或长文本段落。
排版优化:智能处理单元格内的换行符,保持列表结构清晰,同时让普通长文本自然回流。
📂 输出目录结构
运行工具后,图片将按以下结构保存:
💻 开发
核心代码:
src/simple_pdf/server.py转换逻辑:
src/simple_pdf/convert.py