mirror of
https://github.com/Ladebeze66/ragflow_preprocess.git
synced 2026-02-04 06:00:27 +01:00
334 lines
14 KiB
Plaintext
334 lines
14 KiB
Plaintext
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 <nom_du_modèle>`
|
|
|
|
### 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.
|