# Version 1 Développe un programme Python avec interface graphique (Tkinter ou PyQt6) permettant de : 1. Charger un document PDF 2. Naviguer entre les pages 3. Sélectionner une ou plusieurs zones rectangulaires (ex : schéma, tableau, formule) 4. Associer un contexte textuel (automatique via OCR ou manuel) 5. Traduire, interpréter ou résumer le contenu sélectionné en utilisant différents agents LLM configurables 6. Exporter le résultat enrichi au format **Markdown (.md)** prêt à être utilisé dans une base Ragflow --- ## Structure du projet recommandée ``` ragflow_pretraitement/ ├── main.py ├── ui/ │ ├── viewer.py # Navigation et sélection dans le PDF │ └── llm_config_panel.py # Choix des agents, paramètres ├── agents/ │ ├── base.py # Classe LLMBaseAgent │ ├── vision.py # VisionAgent │ ├── translation.py # TranslationAgent │ ├── summary.py # SummaryAgent │ └── rewriter.py # RewriterAgent ├── utils/ │ ├── ocr.py │ ├── translate.py │ ├── markdown_export.py │ └── api_ollama.py ├── config/ │ └── llm_profiles.json # Profils LLM préconfigurés ├── data/ │ └── outputs/ # .md et images générées └── docs/ └── prompts/ ``` --- ## Fonctionnalités de l’interface - Navigation page par page dans le PDF - Zoom/dézoom + recentrage - Sélection d’une zone avec la souris - Attribution d’un **type** : schéma, tableau, formule, autre - Zone de texte modifiable pour le contexte - Menu de sélection : - Modèle par tâche (vision, résumé, traduction…) - Langue de prompt (FR / EN) - Paramètres (température, top_p, top_k, num_tokens) - Bouton : "Appliquer agent" - Aperçu live de la sortie - Export Markdown (`document_final.md`) --- ## Agents LLM ### Classe `LLMBaseAgent` Chaque agent hérite de cette base, et peut : - S’appeler avec un prompt - Prendre une image (pour vision) - Gérer les paramètres dynamiquement ```python class LLMBaseAgent: def __init__(self, model_name, endpoint, **config): ... def generate(self, prompt: str, images: List[bytes] = None) -> str: ... ``` ### 🎭 Rôles recommandés | Rôle | Classe | Modèle par défaut | Langue | |--------------|--------------------|-------------------------------|--------| | Vision | `VisionAgent` | llama3.2-vision:90b | 🇬🇧 | | Traduction | `TranslationAgent` | mistral / qwen2.5 | 🇫🇷↔🇬🇧 | | Résumé | `SummaryAgent` | deepseek-r1 | 🇫🇷 | | Reformulation| `RewriterAgent` | mistral / deepseek | 🇫🇷 | --- ## Profils et configuration dynamique ### Fichier `config/llm_profiles.json` Permet de charger automatiquement un ensemble d’agents, de modèles et de paramètres selon les besoins. ```json { "avancé": { "vision": { "model": "llama3.2-vision:90b-instruct-q8_0", "language": "en", "temperature": 0.2, "top_p": 0.95 }, "translation": { "model": "mistral", "language": "fr", "temperature": 0.1 } } } ``` --- ## Format Markdown exporté ```md ## Figure 3 – Classification des granulats **Contexte** : Ce schéma montre... **Analyse IA (Vision)** : The diagram shows... **Paramètres utilisés** : modèle=llama3.2-vision, temperature=0.2, langue=en **Source** : Page 12, Type: Schéma, Fichier: NF P11-300 ``` --- ## Étapes de test recommandées 1. Charger un PDF 2. Sélectionner une zone 3. Associer un rôle + agent 4. Lancer l’analyse (vision, résumé, etc.) 5. Vérifier la sortie 6. Exporter le fichier Markdown