内容
# AI 驱动的多语言文档摘要工具
完整的、生产就绪的多语言文档摘要工具,使用 Python、Streamlit、Hugging Face Transformers(`google/mt5-small`)和 FastMCP 构建。应用程序自动从 PDF 文档中提取文本,检测书写语言(英语 + 9 种印度语言),清理内容,生成简洁的摘要,并可视化压缩统计信息。它还作为模型上下文协议(MCP)服务器运行,因此 Cursor 等 AI 客户端可以将其作为工具调用。
---
## 🌟 主要功能
* **高保真文本提取**:可重复使用的逐页 PDF 阅读器,处理错误、空页面和 Unicode 字符。
* **多语言支持**:支持 **英语** 和 **9 种印度语言** 的自动语言检测和摘要:印地语、马拉地语、泰米尔语、泰卢固语、孟加拉语、古吉拉特语、卡纳达语、马拉雅拉姆语和旁遮普语。
* **高级 NLP 摘要**:使用托管和缓存在本地的 Google `mT5-small` Transformer 模型(3亿参数)。
* **基于令牌的分块管道**:自动将长 PDF 文档分段为安全大小的令牌块,以绕过模型的序列长度限制,单独摘要各个部分,然后执行最终的精炼传递。
* **交互式 Web UI**:现代、玻璃态 Streamlit 界面,带有侧边栏控件、语言徽章和统计仪表板,显示原始/摘要字数、压缩减少比率和处理时间。
* **Cursor 准备的 MCP 服务器**:实现了一个标准的 `FastMCP` 服务器,暴露工具来摘要、检测语言和直接从 Cursor 或其他 AI 编辑器保存文档摘要。
---
## 📁 项目结构
```text
multilingual-document-summarizer/
├── app.py # Streamlit 前端 Web 应用程序
├── mcp_server.py # FastMCP 服务器(标准输入/输出传输)
│
├── summarizer/ # 核心 NLP 和处理包
│ ├── pdf_reader.py # 可重复使用的 PDF 文本提取模块
│ ├── language_detector.py # 文本语言识别模块
│ ├── text_preprocessor.py # 空格/Unicode 规范化模块
│ ├── mt5_model.py # 本地模型下载和缓存模块
│ └── summarizer_service.py # 令牌分块和 mT5 摘要编排
│
├── uploads/ # 临时上传的 PDF 存储
├── summaries/ # 保存的摘要(作为文本文件)
├── models/ # 本地缓存的模型权重(google/mt5-small)
│
├── requirements.txt # 依赖项配置
└── README.md # 项目文档
```
---
## 🚀 安装和设置
确保您的系统上安装了 **Python 3.10+**。
1. 克隆或导航到项目工作区目录:
```powershell
cd c:\Users\Asus\OneDrive\Desktop\mcpDocSummarizer
```
2. 安装所需的依赖项:
```powershell
pip install -r requirements.txt
```
*注意:首次运行时,Hugging Face 将自动下载约 1.2 GB 的 `google/mt5-small` 模型,并将其缓存在本地 `models/` 目录中以供离线重用。*
---
## 🖥️ 运行 Streamlit 应用程序
启动 Streamlit Web 应用程序:
```powershell
streamlit run app.py
```
这将在您的默认浏览器中打开界面(通常在 `http://localhost:8501`)。
### 如何使用 Web UI:
1. **配置长度**:在侧边栏中,选择目标摘要长度(`短`、`中`或`长`)。
2. **上传 PDF**:在上传区域中拖放您的 PDF 文件。
3. **生成**:单击 **⚡ 生成摘要**。应用程序将显示一个状态卡,跟踪提取、语言识别、预处理和模型推理步骤。
4. **下载**:完成后,查看摘要文本,检查统计信息(字数减少百分比和处理速度),并单击 **💾 下载摘要** 以保存它。
---
## 🤖 与 Cursor 集成(MCP 服务器设置)
FastMCP 服务器使 Cursor(或其他支持 MCP 的客户端)能够使用本地的 `mT5` 模型读取、检测和摘要 PDF。
### 1. 配置 Cursor
要将摘要工具添加到 Cursor:
1. 打开 Cursor 并转到 **设置**(右上角的齿轮图标)-> **功能** -> **MCP**。
2. 点击 **+ 添加新的 MCP 服务器**。
3. 填写详细信息:
* **名称**:`多语言摘要`
* **类型**:`命令`
* **命令**:`python "c:\Users\Asus\OneDrive\Desktop\mcpDocSummarizer\mcp_server.py"`
4. 点击 **保存**。状态指示器应变为绿色,指示连接成功。
### 2. 可用的 MCP 工具
配置完成后,Cursor 可以调用以下工具:
* `detect_pdf_language(pdf_path: str)`:返回检测到的 PDF 语言的 ISO 代码和人类可读的名称。
* `summarize_pdf(pdf_path: str, summary_length: str)`:使用本地 mT5 模型为给定的 PDF 生成摘要,并返回结构化指标。
* `save_summary(pdf_path: str, summary_length: str)`:摘要 PDF 并将生成的文本保存到 `summaries/summary_<filename>_<timestamp>.txt`。
### 示例 Cursor 提示:
> *"您能为我检测语言并摘要此文档吗?路径:c:\Users\Asus\OneDrive\Desktop\mcpDocSummarizer\uploads\sample.pdf"*
---
## 🛠️ 验证和验证命令
在不运行完整的 Streamlit UI 或 MCP 服务器的情况下验证各个子模块:
### 1. 测试语言检测
运行一个简短的 Python 命令来验证 `langdetect` 是否正常运行:
```powershell
python -c "from summarizer.language_detector import detect_language; print(detect_language('नमस्ते, यह एक परीक्षण है।'))"
# 输出应为:('hi', 'Hindi')
```
### 2. 测试 PDF 阅读器
验证是否可以逐页从示例 PDF 中读取文本:
```powershell
python -c "from summarizer.pdf_reader import extract_text; print(extract_text('path/to/your/pdf.pdf')[:100])"
```