Token导航 LogoToken导航TokenDH.com
MCP Office Reader logo
文档知识未说明官方级别未说明来源级核验

MCP Office Reader

MCP Server

一个高性能的Office文档处理服务,支持PDF、Excel、Word和PowerPoint文件的读取、文本提取和幻灯片快照生成。

工具数

0

提示词数

0

GitHub Stars

3

资源数

0
文档处理高性能Rust文本提取

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

cyberelf

提供方

cyberelf

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Office阅读器MCP

一种高性能的模型上下文协议(MCP)服务器,用于读取和处理各种办公文档格式,包括PDF、Excel、Word和PowerPoint文件。

特性

文档支持

  • pdf文件:提取文本并将页面呈现为具有多种后端选项的图像
  • Excel文件:通过逐表处理读取电子表格
  • Word文档:从DOCX文件中提取文本内容
  • PowerPoint文件:使用原生Rust渲染提取文本内容并生成幻灯片快照作为图像

PowerPoint幻灯片快照

该库支持使用以下命令将PowerPoint幻灯片转换为图像 原生Rust库 (无需外部依赖):

use office_reader_mcp::powerpoint_parser::generate_slide_snapshot;

// Generate PNG snapshot of slide 1
let result = generate_slide_snapshot("presentation.pptx", 1, "png");

match result.error {
    None => {
        if let Some(image_data) = result.image_data {
            std::fs::write("slide1.png", image_data).unwrap();
            println!("Slide snapshot saved as slide1.png");
        }
    }
    Some(error) => println!("Error: {}", error),
}

主要特点:

  • 本机实现:不需要LibreOffice等外部依赖项
  • 快速渲染:用途 tiny-skia 用于高效图像生成的图形库
  • 多种格式:支持PNG和JPEG输出格式
  • 直接PPTX解析:直接从PowerPoint XML结构中提取内容
  • 幻灯片验证:自动验证幻灯片编号和文件是否存在

支持的输出格式:

  • PNG(推荐质量)
  • JPG/JPEG(较小的文件大小)

性能特征

PDF处理

  • pdfium渲染 (最快):每页约50-100ms
  • mupdf文件:每页约100-200ms
  • 波普尔:每页约200-300ms
  • pdf摘录 (回退):每页~500ms-2s

PowerPoint处理

  • 原生渲染:每张幻灯片约100-300ms(无外部工艺开销)
  • 文本提取:每张幻灯片约50-100ms
  • 内存效率高:单独处理幻灯片,而不加载整个演示文稿

安装

先决条件

  • (最新稳定版本)
  • 无外部依赖关系 PowerPoint功能所需

可选PDF后端

为了增强PDF处理,您可以启用可选功能:

[dependencies]
office_reader_mcp = { version = "0.1.0", features = ["pdfium"] }

可用功能:

  • pdfium:谷歌的Pdfium库(最快的PDF处理)
  • mupdf:MuPDF绑定(非常快)
  • poppler:Poppler绑定(快速)

使用示例

PowerPoint幻灯片快照

use office_reader_mcp::powerpoint_parser::{generate_slide_snapshot, get_powerpoint_slide_count};

// Get slide count
let slide_count = get_powerpoint_slide_count("presentation.pptx")?;
println!("Presentation has {} slides", slide_count);

// Generate snapshots for all slides
for slide_num in 1..=slide_count {
    let result = generate_slide_snapshot("presentation.pptx", slide_num, "png");
    
    if let Some(image_data) = result.image_data {
        let filename = format!("slide_{}.png", slide_num);
        std::fs::write(&filename, image_data)?;
        println!("Generated {}", filename);
    }
}

文本提取

use office_reader_mcp::powerpoint_parser::process_powerpoint_with_slides;

// Extract text from specific slides
let result = process_powerpoint_with_slides("presentation.pptx", Some("1,3,5".to_string()));

if result.error.is_none() {
    println!("Extracted content:\n{}", result.content);
    println!("Processed slides: {:?}", result.returned_slides);
}

建筑

本机PowerPoint渲染管道

  1. PPTX解析:直接读取ZIP存档和XML解析
  2. 内容提取:解析幻灯片XML以提取文本、形状和布局信息
  3. 图形渲染:使用 tiny-skia 将幻灯片内容渲染为光栅图像
  4. 格式转换:使用PNG或JPEG格式输出 image 板条箱

原生方法的好处

  • 无外部依赖关系:消除LibreOffice要求
  • 更好的性能:无进程生成开销
  • 交叉平台的:在Windows、macOS和Linux上一致工作
  • 内存效率高:单独处理幻灯片
  • 确定性的:跨环境的一致渲染

错误处理

该库提供全面的错误处理:

let result = generate_slide_snapshot("presentation.pptx", 1, "png");

match result.error {
    None => println!("Success!"),
    Some(error) => {
        if error.contains("not found") {
            println!("File not found");
        } else if error.contains("does not exist") {
            println!("Invalid slide number");
        } else {
            println!("Rendering error: {}", error);
        }
    }
}

局限性

当前PowerPoint渲染限制

  • 文本渲染:当前将文本呈现为占位符矩形(全文呈现需要额外的字体库)
  • 复杂布局:高级PowerPoint功能,如动画、过渡和复杂形状,都有基本支持
  • 嵌入式媒体:不渲染视频和音频
  • 字体处理:使用默认字体(可以扩展为 fontdb 集成)

未来的增强功能

  • 使用适当字体的全文渲染
  • 增强的形状和图像支持
  • 动画帧提取
  • SVG输出格式
  • 自定义样式选项

贡献

欢迎投稿!需要改进的地方:

  1. 通过适当的字体支持增强文本呈现
  2. 从PPTX文件中更好地提取形状和图像
  3. 性能优化
  4. 其他输出格式(SVG、WebP)
  5. 高级布局处理

许可证

该项目根据MIT许可证获得许可。

目录标签

目录标签

文档处理高性能Rust文本提取本地部署幻灯片快照Rust实现

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP