coffreobsidian/inbox/Plan_Architecture_Programme_Pretraitement_RAGFLOW.md
2025-03-27 16:48:21 +01:00

4.4 KiB
Raw Permalink Blame History

🧩 Architecture du Programme - Prétraitement PDF pour Ragflow

🎯 Objectif

Créer une application Python avec interface graphique pour :

  • Visualiser un document PDF page par page
  • Sélectionner une ou plusieurs zones visuelles (schémas, tableaux, formules)
  • Ajouter un contexte textuel manuellement ou via OCR
  • Traduire, interpréter, et reformuler le contenu sélectionné
  • Générer un fichier enrichi (.md ou .json) prêt à être ingéré dans Ragflow

🧱 Structure générale

📁 Arborescence recommandée :

ragflow_pretraitement/
│
├── main.py                    # Point d'entrée GUI
├── ui/                        # Interfaces Tkinter ou PyQt
│   └── viewer.py
│
├── utils/                     # Fonctions OCR, traduction, vision
│   ├── ocr.py
│   ├── translate.py
│   ├── vision.py
│   ├── export.py
│   └── ragflow_api.py (optionnel)
│
├── data/                      # Données intermédiaires
│   └── outputs/
│
└── docs/                      # Templates de prompts

🖼️ Module 1 - Visualisation PDF

  • Conversion de chaque page en image (PyMuPDF ou pdf2image)
  • Affichage dans une interface Tkinter ou PyQt6
  • Navigation inter-pages (boutons ou flèches)
  • Zoom et défilement

🖍️ Module 2 - Sélection de zones + typage

  • Sélection par rectangle (canvas)
  • Affichage des coordonnées
  • Ajout d'un label au type de zone :
    • schéma, formule, tableau, autre
  • Possibilité de rattacher un contexte textuel
    • automatique (texte autour)
    • manuel (saisie utilisateur)

🧠 Module 3 - Traitement par IA

🧾 Table de correspondance LLM / usage

Étape Objectif Modèle recommandé
Traduction FR ↔ EN Traduire contexte/légende avant ou après vision mistral:latest
Interprétation de schéma Comprendre une figure annotée + légende llama3.2-vision:90b-instruct-q8_0
Vision rapide (test) Moins précis, plus léger llava:34b-v1.6-fp16
Embedding Création de vecteurs pour Ragflow nomic-embed-text:137m-v1.5-fp16
Reranking Classement fin des chunks pertinents bge-reranker-v2-m3
Résumé technique Résumer sections longues, reformuler deepseek-r1:70b-llama-distill-q8_0
Structuration en Markdown/JSON Générer format final pour Ragflow mistral, cline_qwen_fp16

📤 Module 4 - Génération export .md / .json

Chaque bloc est structuré comme :

Markdown :

### Figure 3 - Classification des sols
_Context_: Le schéma illustre...
_Description (générée)_: The diagram shows...
_Image_: `fig3.png`
_Metadata_: page=12, type=schéma, source=NF-P11-300

JSON :

{
  "type": "schéma",
  "page": 12,
  "title": "Figure 3 - Classification des sols",
  "context": "Le schéma illustre...",
  "description": "The diagram shows...",
  "image_path": "fig3.png",
  "source": "NF-P11-300"
}

🧠 Ergonomie recommandée

  • UI claire avec navigation pages
  • Couleur différente pour chaque type de zone
  • Ajout manuel possible de contexte
  • Historique des zones traitées (affichage à droite ?)
  • Export par page ou global

🔄 Extensions futures

  • Intégration API Ragflow
  • Traitement automatique complet des tableaux (via pdfplumber, ocr_table)
  • Détection automatique de figures + légendes (via Layout Detection)
  • Workflow en ligne de commande pour traitement batch

Prochaines étapes

  • Valider linterface de navigation
  • Intégrer OCR + zone de contexte
  • Préparer modules LLM via Ollama
  • Tester pipeline complet schéma ➝ chunk enrichi ➝ Ragflow