2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 14:08:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 14:08:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 14:08:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 17:59:10 +01:00
2025-03-27 14:08:10 +01:00
2025-03-27 14:08:10 +01:00
2025-03-27 17:59:10 +01:00

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é)

# 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)

  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
    • 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 :

ragflow-pretraitement

Ou manuellement :

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.

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 :

  1. Texte en françaisAgent de traductionTexte en anglais
  2. Image + Texte en anglaisAgent de visionAnalyse en anglais
  3. Analyse en anglaisAgent de traductionAnalyse 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 traductions
  • data/images/ : Images analysées et résultats des analyses de vision
  • data/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:

  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 :

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/
  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.

Description
No description provided
Readme 151 MiB
Languages
Python 78.5%
QML 11.3%
C++ 5.7%
C 3.8%
Cython 0.4%
Other 0.2%