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:
- Faites un clic droit sur
check_prerequisites.ps1et sélectionnez "Exécuter avec PowerShell" - Le script vérifiera tous les prérequis et vous indiquera ce qu'il manque
- 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é)
# 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)
# 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 :
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 :
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)
- Double-cliquez sur
install_windows.bat - Le script créera un environnement virtuel et installera toutes les dépendances
- Suivez les instructions à l'écran pour les étapes suivantes
Pour lancer l'application par la suite :
- Double-cliquez sur
launch_windows.bat - 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) :
- Faites un clic droit sur
install_windows.ps1et sélectionnez "Exécuter avec PowerShell" - Suivez les instructions à l'écran pour terminer l'installation
Pour lancer l'application par la suite :
- Faites un clic droit sur
launch_windows.ps1et sélectionnez "Exécuter avec PowerShell" - 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
- L'application recherchera Tesseract dans les chemins standards sur Windows (
C:\Program Files\Tesseract-OCR\tesseract.exe,C:\Program Files (x86)\Tesseract-OCR\tesseract.exeouC:\Tesseract-OCR\tesseract.exe) - Assurez-vous d'installer les langues françaises et anglaises pendant l'installation
- L'application recherchera Tesseract dans les chemins standards sur Windows (
- 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 :
ragflow-pretraitement
Ou manuellement :
cd ragflow_pretraitement
python main.py
Processus typique
- Charger un PDF avec le bouton "Charger PDF"
- Naviguer entre les pages avec les boutons ou le sélecteur
- Sélectionner une zone d'intérêt avec la souris
- Choisir le type de contenu (schéma, tableau, formule...)
- Ajouter un contexte textuel si nécessaire
- Configurer les agents LLM dans l'onglet "Agents LLM"
- Appliquer l'agent sur la sélection
- 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
PDFViewerqui 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
LLMConfigPanelqui 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
LLMBaseAgentavec 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
OCRProcessorpour extraire du texte des images avec prétraitement avancé. - api_ollama.py: Implémente la classe
OllamaAPIpour communiquer avec le service Ollama. - markdown_export.py: Gère l'export des résultats au format Markdown.
Suivi des flux de traitement
L'application intègre désormais un système complet de journalisation des flux de traitement entre les différents agents LLM. Cette fonctionnalité permet de suivre et d'analyser en détail chaque étape du processus d'analyse d'images et de texte.
Flux de traitement d'une image
Pour l'analyse d'une image avec contexte, le flux de traitement complet est le suivant :
- Texte en français → Agent de traduction → Texte en anglais
- Image + Texte en anglais → Agent de vision → Analyse en anglais
- Analyse en anglais → Agent de traduction → Analyse en français
Chaque étape est enregistrée avec :
- Les données d'entrée complètes
- Les données de sortie complètes
- Les métadonnées (modèle utilisé, type de contenu, etc.)
- L'horodatage précis
Localisation des journaux
Les journaux sont sauvegardés dans les répertoires suivants :
data/workflows/: Journaux du flux de travail complet (format Markdown)data/translations/: Journaux détaillés des traductionsdata/images/: Images analysées et résultats des analyses de visiondata/outputs/: Résultats finaux combinés
Désactivation des agents
Il est maintenant possible de désactiver certains agents LLM via le fichier de configuration config/agent_config.py. Par défaut, l'agent de résumé est désactivé pour permettre l'observation des résultats bruts du flux de traitement.
Pour modifier les agents actifs, vous pouvez éditer le dictionnaire ACTIVE_AGENTS dans ce fichier :
# Configuration des agents activés/désactivés
ACTIVE_AGENTS = {
"ocr": True, # Agent de reconnaissance optique de caractères
"vision": True, # Agent d'analyse d'images
"translation": True, # Agent de traduction
"summary": False, # Agent de résumé (désactivé par défaut)
"rewriter": True # Agent de reformulation
}
Adaptations pour Windows
Cette version a été optimisée pour Windows avec les adaptations suivantes:
- Chemins Tesseract: Configuration automatique des chemins Tesseract pour Windows
- URLs API: Configuration de l'API Ollama pour utiliser
localhostpar défaut - Chemins de fichiers: Utilisation de la séparation de chemins compatible Windows
- 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 :
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 :
- Vérifiez que Tesseract est correctement installé (redémarrez l'application après installation)
- Vérifiez l'existence d'un des chemins standards (
C:\Program Files\Tesseract-OCR\tesseract.exe) - 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:
- Vérifiez votre connexion réseau et assurez-vous que vous pouvez accéder à
217.182.105.173:11434 - Vérifiez qu'aucun pare-feu ou proxy ne bloque la connexion
- Pour vérifier la disponibilité du serveur, essayez d'accéder à
http://217.182.105.173:11434/api/versiondans votre navigateur
Si vous souhaitez utiliser une instance Ollama locale à la place:
- Modifiez l'URL dans
utils/api_ollama.pyetagents/base.pypour utiliserhttp://localhost:11434 - Installez Ollama localement depuis https://ollama.ai/
- 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.