Excel数据提取与查询系统

Excel-MCP是一个基于机器上下文协议(MCP)的智能Excel数据提取和查询系统,支持多种文件格式的数据处理和语义搜索。

  • by diegomontemayor123
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 diegomontemayor123/excel_mcp

使用说明

Excel MCP

Excel MCP是一个智能Excel数据提取和查询系统,由 机器上下文协议(MCP), 抱抱脸, LangChain, FAISS,以及 **光学字符识别(OCR)**该服务器利用检索增强生成(RAG)中的尖端技术,自动化和优化从Excel、PDF、PowerPoint和Word等不同文件格式中提取和查询结构化数据。

特性

  • OCR驱动的文档解析:使用OCR(通过 pytesseract 和 pdfplumber)从扫描的PDF中提取文本,从而能够处理结构化和非结构化数据。
  • Excel数据解析:高效地从Excel电子表格中提取和处理数据,支持公式和数据驱动分析。
  • 矢量存储集成:与FAISS矢量数据库集成,实现快速语义搜索和上下文感知检索。
  • 上下文查询:支持使用上下文相关的文本分块跨多种文档类型进行查询。
  • 批处理:针对并行化文档处理进行了优化,减少了数据提取和特征生成的开销。

技术栈

  • 主控程序:用于连接系统中各种工具的机器上下文协议。
  • FAISS:基于向量查询的Facebook AI相似度搜索。
  • 抱抱脸:用于生成文本矢量表示的预训练嵌入模型。
  • LangChain:RAG管道和预埋件处理框架。
  • 光学字符识别:利用 立方体 和 PDF 管道工 从基于图像的PDF中提取文本。
  • OpenPyXL:用于处理Excel文件(两者 .xls 和 .xlsx).
  • 卡美洛:用于解析PDF中的表格。

安装

要运行服务器,您需要Python 3.7+和必要的依赖关系:

  1. 克隆存储库:

    git clone https://github.com/diegomontemayor123/excel_mcp.git
    cd excel_mcp
    
  2. 安装所需的依赖项:

    pip install -r requirements.txt
    

用法

启动服务器

要启动服务器,只需运行以下命令:

python excel_mcp_server.py

服务器将监听传入的请求,并公开各种工具,用于与Excel数据交互、查询和应用更新。

可用工具

  1. query_docs:从Excel、Word、PDF或PowerPoint文件中提取详细的文本和表格内容。在单个请求中传递多个文件路径以进行批处理。

  2. apply_excl_updates:基于JSON格式的提案应用结构化Excel更新。非常适合批量修改电子表格数据。

  3. 矢量化嵌入:将文件夹的内容矢量化或查询现有的矢量存储。如果没有找到矢量存储,它将处理文件并创建一个新的。

提取Excel数据的API调用示例

您可以致电 query_docs 从Excel文件中提取内容的工具,如下所示:

{
  "tool": "query_docs",
  "args": {
    "paths": ["path/to/excel_file.xlsx"],
    "incl_formulas": false
  }
}

应用Excel更新的API调用示例

要将更新应用于Excel文件,请执行以下操作:

{
  "tool": "apply_excel_updates",
  "args": {
    "path": "path/to/excel_file.xlsx",
    "proposal": "{\"Sheet\": \"Sheet1\", \"StartCell\": \"A1\", \"Data\": [[\"value1\", \"value2\"], [\"value3\", \"value4\"]]}"
  }
}

API调用矢量化文件示例

要矢量化文件夹中的文件,请执行以下操作:

{
  "tool": "vectorize_embed",
  "args": {
    "folder": "path/to/folder",
    "query": "search query",
    "k": 5
  }
}

代码概述

此存储库的主要功能是通过多个Python函数实现的。以下是重要组件的快速分解:

  • 文档分析 (parse_file, force_ocr, excel_str):将Excel、PDF、PowerPoint和Word文档解析为结构化文本或表格的函数。
  • 文本组块 (_chunk_rows, _merge_consecutive):将大型文本体划分为可管理块以便于处理和查询的逻辑。
  • 光学字符识别 (force_ocr):使用OCR处理扫描文档 pytesseract 提取文本。
  • FAISS集成 (vectorize_embed):FAISS矢量存储用于存储文档嵌入,并实现快速语义搜索。
  • 工具和API调用 (list_tools, call_tool):该系统公开了用于查询和修改文档以及执行基于矢量的搜索的工具。

贡献

请随意分叉此存储库,并为任何改进或错误修复创建pull请求。请遵循现有的代码风格,并为新功能编写测试。如果您遇到任何问题,请在存储库中打开问题。


作者保留所有权利。未经作者明确许可,您不得使用、复制、修改或分发此存储库的任何部分。