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

128 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧩 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 :
```md
### 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 :
```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