# đŸ§© 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