Metadata-Version: 2.4 Name: ragflow_pretraitement Version: 1.0.0 Summary: Outil de prétraitement PDF avec agents LLM modulables pour Ragflow Author: Ragflow Team Classifier: Programming Language :: Python :: 3 Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Requires-Python: >=3.8 Description-Content-Type: text/markdown Requires-Dist: PyQt6>=6.4.0 Requires-Dist: PyMuPDF>=1.21.0 Requires-Dist: numpy>=1.22.0 Requires-Dist: pytesseract>=0.3.9 Requires-Dist: Pillow>=9.3.0 Requires-Dist: opencv-python>=4.7.0 Requires-Dist: requests>=2.28.0 Dynamic: author Dynamic: classifier Dynamic: description Dynamic: description-content-type Dynamic: requires-dist Dynamic: requires-python Dynamic: summary # Prétraitement PDF pour Ragflow Outil de prétraitement de documents PDF avec agents LLM modulables pour l'analyse, la traduction et le résumé. ## Fonctionnalités - **Sélection visuelle** de zones dans les documents PDF (tableaux, schémas, formules, texte) - **Analyse automatique** avec différents agents LLM configurables - **Niveaux d'analyse** adaptables selon les besoins (léger, moyen, avancé) - **Export Markdown** pour intégration dans une base Ragflow ## Installation ### Prérequis - Python 3.8 ou supérieur - PyQt6 - PyMuPDF (fitz) - Tesseract OCR (pour la reconnaissance de texte) - Ollama (pour les modèles LLM) #### Vérification des prérequis (Windows) Un script de vérification est fourni pour vous aider à identifier les composants manquants: 1. Faites un clic droit sur `check_prerequisites.ps1` et sélectionnez "Exécuter avec PowerShell" 2. Le script vérifiera tous les prérequis et vous indiquera ce qu'il manque 3. Suivez les instructions pour installer les composants manquants ### Configuration de l'environnement virtuel Il est fortement recommandé d'utiliser un environnement virtuel pour installer et exécuter cette application, notamment sur Windows: #### Avec venv (recommandé) ```bash # Windows (PowerShell) python -m venv venv .\venv\Scripts\Activate.ps1 # Windows (CMD) python -m venv venv .\venv\Scripts\activate.bat # Linux/macOS python -m venv venv source venv/bin/activate ``` #### Avec Conda (alternative) ```bash # Création de l'environnement conda create -n ragflow_env python=3.9 conda activate ragflow_env # Installation des dépendances via pip pip install -r requirements.txt ``` Une fois l'environnement virtuel activé, vous pouvez procéder à l'installation. ### Méthode 1 : Installation directe (recommandée) Clonez ce dépôt et installez avec pip : ```bash git clone https://github.com/votre-utilisateur/ragflow-pretraitement.git cd ragflow_pretraitement pip install -e . ``` Cette méthode installera automatiquement toutes les dépendances Python requises. ### Méthode 2 : Installation manuelle Si vous préférez une installation manuelle : ```bash pip install -r requirements.txt ``` ### Méthode 3 : Installation automatisée pour Windows Pour une installation simplifiée sous Windows, utilisez les scripts d'installation fournis : #### Avec les scripts batch (.bat) 1. Double-cliquez sur `install_windows.bat` 2. Le script créera un environnement virtuel et installera toutes les dépendances 3. Suivez les instructions à l'écran pour les étapes suivantes Pour lancer l'application par la suite : 1. Double-cliquez sur `launch_windows.bat` 2. Le script vérifiera l'installation de Tesseract et Ollama avant de démarrer l'application #### Avec PowerShell (recommandé pour Windows 10/11) Si vous préférez utiliser PowerShell (interface plus conviviale avec code couleur) : 1. Faites un clic droit sur `install_windows.ps1` et sélectionnez "Exécuter avec PowerShell" 2. Suivez les instructions à l'écran pour terminer l'installation Pour lancer l'application par la suite : 1. Faites un clic droit sur `launch_windows.ps1` et sélectionnez "Exécuter avec PowerShell" 2. Le script effectuera des vérifications avant de démarrer l'application Ces méthodes sont recommandées pour les utilisateurs Windows qui ne sont pas familiers avec les lignes de commande. ### Installation de Tesseract OCR Pour l'OCR, vous devez également installer Tesseract : - **Windows** : Téléchargez et installez depuis [https://github.com/UB-Mannheim/tesseract/wiki](https://github.com/UB-Mannheim/tesseract/wiki) - L'application recherchera Tesseract dans les chemins standards sur Windows (`C:\Program Files\Tesseract-OCR\tesseract.exe`, `C:\Program Files (x86)\Tesseract-OCR\tesseract.exe` ou `C:\Tesseract-OCR\tesseract.exe`) - Assurez-vous d'installer les langues françaises et anglaises pendant l'installation - **Linux** : `sudo apt install tesseract-ocr tesseract-ocr-fra tesseract-ocr-eng` - **macOS** : `brew install tesseract` ### Connexion au serveur Ollama Cette application se connecte à un serveur Ollama distant pour les fonctionnalités LLM: - Adresse du serveur: `217.182.105.173:11434` - Modèles utilisés: - `mistral:latest` (pour le résumé et la traduction légère) - `llava:34b-v1.6-fp16` (pour l'analyse visuelle) - `llama3.2-vision:90b-instruct-q8_0` (pour l'analyse visuelle avancée) - `deepseek-r1:70b-llama-distill-q8_0` (pour le résumé et la traduction avancés) - `qwen2.5:72b-instruct-q8_0` (pour la traduction moyenne) Assurez-vous que votre machine dispose d'une connexion réseau vers ce serveur. Aucune installation locale d'Ollama n'est nécessaire. ## Utilisation ### Lancement de l'application Si vous avez utilisé l'installation avec le script setup.py : ```bash ragflow-pretraitement ``` Ou manuellement : ```bash cd ragflow_pretraitement python main.py ``` ### Processus typique 1. Charger un PDF avec le bouton "Charger PDF" 2. Naviguer entre les pages avec les boutons ou le sélecteur 3. Sélectionner une zone d'intérêt avec la souris 4. Choisir le type de contenu (schéma, tableau, formule...) 5. Ajouter un contexte textuel si nécessaire 6. Configurer les agents LLM dans l'onglet "Agents LLM" 7. Appliquer l'agent sur la sélection 8. Exporter le résultat en Markdown ## Configuration des agents LLM L'application propose trois niveaux d'analyse : | Niveau | Vision | Résumé | Traduction | Usage recommandé | | --------- | ------------------------------------- | ----------------------------- | ---------------------------- | --------------------------- | | 🔹 Léger | llava:34b-v1.6-fp16 | mistral:latest | mistral:latest | Débogage, prototypes | | ⚪ Moyen | llava:34b-v1.6-fp16 | deepseek-r1:70b-llama-distill | qwen2.5:72b-instruct | Usage normal | | 🔸 Avancé | llama3.2-vision:90b-instruct-q8_0 | deepseek-r1:70b-llama-distill | deepseek-r1:70b-llama-distill| Documents critiques | Vous pouvez personnaliser ces configurations dans le fichier `config/llm_profiles.json`. ## Détail des bibliothèques utilisées L'application utilise les bibliothèques suivantes, chacune avec un rôle spécifique dans le traitement des documents: ### Bibliothèques principales - **PyQt6** : Interface graphique complète (v6.4.0+) - **PyMuPDF (fitz)** : Manipulation et rendu des documents PDF (v1.21.0+) - **numpy** : Traitement numérique des images et des données (v1.22.0+) - **pytesseract** : Interface Python pour Tesseract OCR (v0.3.9+) - **Pillow** : Traitement d'images (v9.3.0+) - **opencv-python (cv2)** : Traitement d'images avancé et détection de contenu (v4.7.0+) - **requests** : Communication avec l'API Ollama (v2.28.0+) ### Rôle de chaque bibliothèque - **PyQt6**: Framework d'interface graphique qui gère la visualisation PDF, les sélections interactives, la configuration des agents et l'interface utilisateur globale. - **PyMuPDF (fitz)**: Convertit les pages PDF en images, permet d'accéder au contenu des PDF, extraire les pages et obtenir des rendus haute qualité. - **numpy**: Manipule les données d'images sous forme de tableaux pour le traitement OCR et la détection de contenu. - **pytesseract**: Reconnaît le texte dans les images extraites des PDF, avec support multilingue. - **Pillow + opencv-python**: Prétraitement des images avant OCR pour améliorer la reconnaissance du texte. - **requests**: Envoie des requêtes au service Ollama local pour utiliser les modèles d'IA. ## Structure du projet et modules clés ``` ragflow_pretraitement/ ├── main.py # Point d'entrée principal ├── ui/ # Interface utilisateur │ ├── viewer.py # Visualisation PDF et sélection (PyQt6, fitz) │ └── llm_config_panel.py # Configuration des agents (PyQt6) ├── agents/ # Agents LLM │ ├── base.py # Classe de base des agents │ ├── vision.py # Agent d'analyse visuelle (utilise OllamaAPI) │ ├── summary.py # Agent de résumé (utilise OllamaAPI) │ ├── translation.py # Agent de traduction (utilise OllamaAPI) │ └── rewriter.py # Agent de reformulation (utilise OllamaAPI) ├── utils/ # Utilitaires │ ├── ocr.py # Reconnaissance de texte (pytesseract, opencv) │ ├── markdown_export.py # Export en Markdown │ └── api_ollama.py # Communication avec l'API Ollama (requests) ├── config/ # Configuration │ └── llm_profiles.json # Profils des modèles LLM utilisés └── data/ # Données └── outputs/ # Résultats générés ``` ### Détail des modules principaux #### Interface utilisateur (ui/) - **viewer.py**: Implémente la classe principale `PDFViewer` qui gère la visualisation des PDF, la sélection des zones, le zoom et la navigation entre les pages. - **llm_config_panel.py**: Implémente la classe `LLMConfigPanel` qui permet de configurer les agents LLM, leurs paramètres et de lancer les traitements. #### Agents LLM (agents/) - **base.py**: Définit la classe de base `LLMBaseAgent` avec les méthodes communes à tous les agents. - **vision.py**: Agent spécialisé dans l'analyse d'images et de schémas. - **summary.py**: Agent pour résumer et synthétiser du texte. - **translation.py**: Agent pour traduire le contenu (généralement de l'anglais vers le français). - **rewriter.py**: Agent pour reformuler et améliorer du texte. #### Utilitaires (utils/) - **ocr.py**: Contient la classe `OCRProcessor` pour extraire du texte des images avec prétraitement avancé. - **api_ollama.py**: Implémente la classe `OllamaAPI` pour communiquer avec le service Ollama. - **markdown_export.py**: Gère l'export des résultats au format Markdown. ## Adaptations pour Windows Cette version a été optimisée pour Windows avec les adaptations suivantes: 1. **Chemins Tesseract**: Configuration automatique des chemins Tesseract pour Windows 2. **URLs API**: Configuration de l'API Ollama pour utiliser `localhost` par défaut 3. **Chemins de fichiers**: Utilisation de la séparation de chemins compatible Windows 4. **Compatibilité Unicode**: Support des caractères spéciaux dans les chemins Windows ## Fonctionnalités pratiques et cas d'utilisation ### 1. Analyse de tableaux techniques - Sélectionnez un tableau complexe dans un document - Utilisez l'agent de vision pour reconnaître la structure - Exportez le contenu sous forme de markdown bien formaté ### 2. Traduction de documents techniques - Chargez un document en anglais - Sélectionnez des sections de texte - Utilisez l'agent de traduction pour obtenir une version française précise - Exportez le résultat en markdown ### 3. Résumé de documentation longue - Identifiez les sections importantes d'un long document - Appliquez l'agent de résumé à chaque section - Combinez les résultats en un document synthétique ### 4. Analyse de schémas et figures - Sélectionnez un schéma complexe - Utilisez l'agent de vision pour obtenir une description détaillée - Ajoutez du contexte textuel au besoin ## Résolution des problèmes courants ### Erreurs d'importation de PyQt6 Si vous rencontrez des erreurs avec PyQt6, essayez de le réinstaller : ```bash pip uninstall PyQt6 PyQt6-Qt6 PyQt6-sip pip install PyQt6 ``` ### Problèmes avec l'OCR sur Windows Si l'OCR (Tesseract) ne fonctionne pas correctement : 1. Vérifiez que Tesseract est correctement installé (redémarrez l'application après installation) 2. Vérifiez l'existence d'un des chemins standards (`C:\Program Files\Tesseract-OCR\tesseract.exe`) 3. Si nécessaire, modifiez manuellement le chemin dans `utils/ocr.py` ### Connectivité au serveur Ollama Si vous ne pouvez pas vous connecter au serveur Ollama: 1. Vérifiez votre connexion réseau et assurez-vous que vous pouvez accéder à `217.182.105.173:11434` 2. Vérifiez qu'aucun pare-feu ou proxy ne bloque la connexion 3. Pour vérifier la disponibilité du serveur, essayez d'accéder à `http://217.182.105.173:11434/api/version` dans votre navigateur Si vous souhaitez utiliser une instance Ollama locale à la place: 1. Modifiez l'URL dans `utils/api_ollama.py` et `agents/base.py` pour utiliser `http://localhost:11434` 2. Installez Ollama localement depuis [https://ollama.ai/](https://ollama.ai/) 3. Téléchargez les modèles requis avec `ollama pull ` ### Modèles manquants Si certains modèles ne fonctionnent pas, vérifiez leur disponibilité sur le serveur et modifiez si nécessaire les noms dans `config/llm_profiles.json`. ## Limitations - OCR parfois imprécis sur les documents complexes ou de mauvaise qualité - Certains modèles nécessitent beaucoup de mémoire (8GB+ de RAM recommandé) - Les formules mathématiques complexes peuvent être mal interprétées ## Contribution Les contributions sont les bienvenues ! N'hésitez pas à soumettre des pull requests ou à signaler des problèmes.