文档自动分类系统

使用Tool Calling和Model Context Protocol (MCP)智能组织文件的自动文档分类系统,支持本地和云端LLM集成。

  • by Tytyaz2
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Tytyaz2/Projet_NLP_MCP

使用说明

MCP-自动文档排序

使用的自动文档排序系统 工具调用 等等 模型上下文协议(MCP) 智能地组织您的文件。

双重利用模式:

模式 LLM 协议 先决条件
流光灯+双子座 Gemini(小费) 函数调用 Python+Ollama
克劳德桌面+MCP Claude(Anthropic) MCP标准 Docker+Ollama+Claude桌面

选项1:Streamlit+Gemini(免费)

具有Gemini(Google AI)及其本机调用功能的web界面。切换基线/MCP进行比较。

先决条件

  • Python 3.10+ 已安装
  • 奥拉玛 已安装并正在运行
  • CléAPI Gemini (免费): 转到Google AI Studio

安装

# 1. Cloner le projet
git clone https://github.com/Tytyaz2/Projet_NLP_MCP.git
cd Projet_NLP_MCP

# 2. Créer un environnement virtuel
python -m venv venv

# Windows PowerShell :
.\venv\Scripts\Activate.ps1
# Windows CMD :
.\venv\Scripts\activate.bat
# Linux/Mac :
source venv/bin/activate

# 3. Installer les dépendances
pip install -r requirements_streamlit.txt

# 4. Configurer l'environnement
cp .env.example .env
# Éditer .env et ajouter votre GEMINI_API_KEY

发射

# Terminal 1 : Lancer Ollama
ollama serve

# Terminal 2 : Lancer l'application
.\venv\Scripts\python.exe -m streamlit run streamlit_app.py

应用程序打开 http://localhost:8501

使用

  1. 粘贴您的Gemini API密钥 在侧边栏中
  2. 模式基线 (默认):提问,人工智能无需工具(如ChatGPT)即可回答
  3. 活性MCP :切换切换以访问分类工具
  4. 排序文件 (启用MCP模式):使用 chemins Windows absolus :
    • “解析文件C:/users/user/documents/report.pdf”
    • “排序文件夹C:/users/user/downloads”
    • “在干运行模式下排序C:/users/user/desktop” (无移动模拟)

重要 :在Streamlit模式下,使用 实际Windows路径 (例如: C:/Users/VotreNom/Documents).


选项2:Claude桌面+MCP(协议标准)

符合MCP的体系结构,Docker中的FastMCP服务器通过stdio协议连接到Claude桌面。

先决条件

  • Docker桌面 安装并启动
  • 奥拉玛 已安装并正在运行
  • 克劳德桌面版 使用连接的帐户安装

安装

# 1. Construire l'image Docker
cd docker
docker-compose build

# 2. Installer la config Claude Desktop
cd ..
python install_claude_desktop.py

# 3. Redémarrer Claude Desktop (fermer complètement et relancer)

使用

在Claude Desktop中,说:

“尝试档案/主页/用户/下载”

“尝试/主页/用户/文档模式模拟运行”

召回 :在Docker模式下,使用路径 /home/user/... (不是Windows路径)。

路径匹配(Docker)

你的电脑(Windows) 你对克劳德说了什么
C:\Users\VotreNom\Downloads /home/user/Downloads
C:\Users\VotreNom\Documents /home/user/Documents
C:\Users\VotreNom\Desktop /home/user/Desktop

建筑

模式流光(工具调用)

┌────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ Navigateur │ --> │   Streamlit     │ --> │ Gemini (Google)  │
│ :8501      │     │  streamlit_app  │     │ Function Calling │
└────────────┘     └───────┬─────────┘     └─────────────────┘
                           │
                    (mode MCP activé)
                           │
                   ┌───────▼─────────┐
                   │  Ollama (local) │
                   │ localhost:11434 │
                   └─────────────────┘
  • 双子座 :具有本机功能调用的LLM云(免费,15请求/分钟)
  • 奥拉玛 :本地分析文件内容
  • 溪流 :界面web交互式

克劳德桌面模式(MCP标准)

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ Claude Desktop  │ --> │  Docker (MCP)   │ --> │ Ollama (local)  │
│  (client MCP)   │     │  FastMCP server │     │ localhost:11434 │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                       │
   protocole MCP           protocole stdio
   (JSON-RPC 2.0)         (stdin/stdout)
  • 克劳德桌面版 :本机MCP客户端(发送JSON-RPC请求)
  • 快速MCP :通过标准协议公开工具的Python MCP服务器
  • 码头工人 :MCP服务器隔离和可移植性
  • 奥拉玛 :分析电影制作人所在地

操作模式

模式 输出 描述 界面
基线 禁用 简单聊天,无需访问文件。无分析或排序。 Streamlit(切换)
工具调用 启用 LLM可以调用工具来分析和排序您的文件。 Streamlit(切换)+Claude桌面
  • 溪流 :在侧边栏中切换切换。时尚的变化 自动开始新对话.
  • 克劳德桌面版 :工具始终可通过MCP服务器使用。

可用工具

工具 描述 可在
list_files_to_sort 列出文件夹中的文件 Streamlit+Claude Desktop
analyze_file 分析文件(类型、日期、关键字) Streamlit+Claude Desktop
sort_folder 自动排序整个文件夹 Streamlit+Claude Desktop
group_files 按类型和主题分组文档 仅限Claude桌面
apply_file_plan 应用组织计划 仅限Claude Desktop

处理管道

[Fichiers bruts]
    → [Extraction contenu (PDF, DOCX, TXT)]
    → [Prétraitement NLP (nettoyage, tokenisation, stemming)]
    → [Analyse LLM (Ollama)]
    → [Classification par type et thème]
    → [Organisation automatique en dossiers]

结果示例

先锋:

Downloads/
├── article_retine.pdf
├── article_ia.pdf
├── CV_Martin.pdf
├── facture_edf.pdf
└── rapport_stage.pdf

之后:

Downloads/
├── article/
│   ├── medical-retine/
│   │   └── article_retine.pdf
│   └── intelligence-artificielle/
│       └── article_ia.pdf
├── cv/
│   └── CV_Martin.pdf
├── facture/
│   └── facture_edf.pdf
└── rapport/
    └── rapport_stage.pdf

配置

环境变量(.env)

cp .env.example .env

|变量|描述|默认值|由|使用 |----------|-------------|-------------------|-------------| | GEMINI_API_KEY |CléAPI Gemini|-|Streamlit| | GEMINI_MODEL 双子座模型| gemini-2.0-flash |流光灯| | OLLAMA_HOST |URL d’Olama| http://localhost:11434 |二人组| | OLLAMA_MODEL_NAME |模型Ollama| gpt-oss:20b-cloud |二人组|

获取Gemini API密钥(免费)

  1. 继续 谷歌AI工作室
  2. 使用Google帐户登录
  3. 点击 “创建API密钥”
  4. 复制密钥(格式: AIzaSy...xxxxx)
  5. 把它粘在 .env 或者直接在应用程序的侧边栏中

小费限额:

限制 值
请求/分钟 15
请求/天 1500

配置Ollama

# Installer un modèle (au choix)
ollama pull llama3:latest        # Recommandé pour débuter
ollama pull mistral:latest       # Alternative légère

项目结构

Projet_NLP_MCP/
├── streamlit_app.py                # Interface web Streamlit (Gemini + function calling)
├── .env.example                    # Configuration (Gemini + Ollama)
├── requirements_streamlit.txt      # Dépendances Streamlit
├── requirements.txt                # Dépendances MCP (Docker)
├── src/
│   ├── classifier/
│   │   ├── analyzer.py             # Extraction + analyse LLM (Ollama)
│   │   ├── preprocessor.py         # Pipeline NLP (NLTK)
│   │   └── organizer.py            # Regroupement + déplacement
│   ├── mcp/
│   │   └── server.py               # Serveur FastMCP
│   └── tools/
│       └── server.py               # Outils MCP exposés (5 tools)
├── docker/
│   ├── Dockerfile                  # Image Docker du serveur MCP
│   └── docker-compose.yml          # Orchestration
├── install_claude_desktop.py       # Script d'installation Claude Desktop
├── claude_desktop_config.template.json
└── files_to_sort/                  # Dossier de test avec fichiers exemples

支持的格式

  • PDF(.PDF)
  • Word(.docx、.doc)
  • 文本(.txt)
  • OpenDocument(.odt)

基线与工具调用的比较

标准 基线(无工具) 带工具调用
访问文件 否 是
内容分析 否 是(通过奥拉马)
自动分拣 否 是
文件响应的质量 可能的幻觉 基于真实内容
Cas d'usage 一般聊天 文件分类和组织

故障排除

错误429“超出配额”(双子座)

Gemini的免费配额已用尽。

  • 解决方案 :等待第二天(配额每天重置)
  • 替代 :使用新密钥在Google AI Studio上创建新项目

Erreur“找不到模型”(Ollama)

ollama pull llama3:latest

奥拉玛没有回答

# Vérifier qu'Ollama tourne
ollama serve

# Vérifier les modèles installés
ollama list

不精确分类

  • 使用更强大的Ollama模型
  • 检查您的文件是否包含可提取文本

安全与隐私

  • 本地分析的文件 -奥拉玛在你的机器上旋转
  • 无删除 -文件已移动,从未删除
  • 开源 -代码可审计

技术

  • 双子座(谷歌人工智能) -具有功能调用的LLM云(免费)
  • 克劳德桌面版 -客户MCP自然人(人类学)
  • 快速MCP -标准MCP服务器的Python框架
  • MCP(模型上下文协议) -IA标准化协议<->工具(JSON-RPC 2.0)
  • 奥拉玛 -本地运行LLMS进行文件分析
  • 溪流 -界面web交互式
  • 自然语言工具包 -管道NLP(标记化、词干提取、停用词)
  • 码头工人 -MCP服务器隔离
  • Python 3.10+ -后端