mirror of
https://github.com/Ladebeze66/coffreobsidian.git
synced 2025-12-16 21:37:47 +01:00
128 lines
4.4 KiB
Markdown
128 lines
4.4 KiB
Markdown
# 🧩 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 l’interface de navigation
|
||
- [ ] Intégrer OCR + zone de contexte
|
||
- [ ] Préparer modules LLM via Ollama
|
||
- [ ] Tester pipeline complet schéma ➝ chunk enrichi ➝ Ragflow
|