使用说明
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+和必要的依赖关系:
-
克隆存储库:
git clone https://github.com/diegomontemayor123/excel_mcp.git cd excel_mcp -
安装所需的依赖项:
pip install -r requirements.txt
用法
启动服务器
要启动服务器,只需运行以下命令:
python excel_mcp_server.py
服务器将监听传入的请求,并公开各种工具,用于与Excel数据交互、查询和应用更新。
可用工具
-
query_docs:从Excel、Word、PDF或PowerPoint文件中提取详细的文本和表格内容。在单个请求中传递多个文件路径以进行批处理。
-
apply_excl_updates:基于JSON格式的提案应用结构化Excel更新。非常适合批量修改电子表格数据。
-
矢量化嵌入:将文件夹的内容矢量化或查询现有的矢量存储。如果没有找到矢量存储,它将处理文件并创建一个新的。
提取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请求。请遵循现有的代码风格,并为新功能编写测试。如果您遇到任何问题,请在存储库中打开问题。
作者保留所有权利。未经作者明确许可,您不得使用、复制、修改或分发此存储库的任何部分。