mirror of
https://github.com/Ladebeze66/coffreobsidian.git
synced 2025-12-16 13:17:48 +01:00
4.4 KiB
4.4 KiB
🧩 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 (
PyMuPDFoupdf2image) - Affichage dans une interface
TkinterouPyQt6 - 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 l’interface de navigation
- Intégrer OCR + zone de contexte
- Préparer modules LLM via Ollama
- Tester pipeline complet schéma ➝ chunk enrichi ➝ Ragflow