6.9 KiB
🎯 Résumé idée
Tu proposes de créer une application Python avec interface graphique (semi-automatisée) permettant de :
-
Charger un PDF technique
-
Sélectionner manuellement des zones (ex : un schéma + son texte)
-
Associer chaque zone à un type : schéma, formule, tableau…
-
Traduire le contexte (si besoin)
-
Appeler un LLM vision pour l’interprétation
-
Réinjecter l’interprétation (en français) dans une version enrichie
-
Exporter un document markdown ou JSON structuré prêt à chunker dans Ragflow
🛠️ Est-ce réalisable ?
Oui, 100% réalisable. Voici pourquoi :
| Composant | Solution technique | Exemples |
|---|---|---|
| Visualisation du PDF | fitz (PyMuPDF) + tkinter ou PyQt6 pour GUI |
Affichage page/image |
| Sélection manuelle de zone | GUI avec boîte de sélection (canvas) | Similaire à snipping tool |
| Extraction OCR | pytesseract ou EasyOCR |
Pour lire ce qui est dans l’image |
| Traduction | DeepL API ou HuggingFace | Pour convertir FR ↔ EN |
| LLM Vision | API Ollama (llava, llama3-vision) |
Pour interprétation |
| Réinjection | Générer un chunk markdown/json enrichi | structuré automatiquement |
| Export | Fichier .md, .json, ou .csv |
prêt à être ingéré dans Ragflow |
💡 :
🧠 Un préprocesseur intelligent pour Ragflow qui allie sélection manuelle + intelligence automatisée.
En d'autres termes : un outil d’assistance humaine pour l’ingestion RAG multimodale, parfaitement adapté aux documents techniques et complexes comme les normes AFNOR.
🧱 Comment on peut organiser le développement
Je te propose de fonctionner par modules progressifs, par exemple :
🔹 Étape 1 – Visionneuse PDF avec zone sélectionnable
-
Affichage des pages en image
-
Permettre une sélection de rectangle avec la souris
-
Stocker la zone sélectionnée (coordonnées, page)
🔹 Étape 2 – OCR et traduction
-
Extraire le texte visible dans la zone
-
Traduire si nécessaire avec un bouton
🔹 Étape 3 – Appel LLM Vision
-
Joindre image (screenshot de la zone)
-
Ajouter contexte texte traduit
-
Obtenir la description/interprétation
🔹 Étape 4 – Composition de chunk enrichi
-
Champ titre + légende + contenu enrichi
-
Ajout de métadonnées (type, page, source)
-
Export en
.mdou.json
📄 Fichier .md généré :
Je configure aussi le prompt pour que la sortie du traitement se fasse au format Markdown plutôt qu’en JSON.
✅ PROMPT POUR CURSOR PRO (copier-coller dans l’éditeur IA de Cursor)
# 🎯 Objectif
Développe un programme Python avec interface graphique (Tkinter ou PyQt6) permettant de charger un fichier PDF, d’en visualiser les pages une à une, de sélectionner des zones à l’écran (par exemple des schémas techniques), d’ajouter un contexte (automatique ou manuel), et de générer un fichier Markdown enrichi prêt à être utilisé dans une pipeline RAG (Ragflow).
# 🧱 Architecture du programme
## 📁 Structure du projet
ragflow_pretraitement/ ├── main.py # Lanceur principal (GUI) ├── ui/ │ └── viewer.py # Affichage PDF + navigation ├── utils/ │ ├── ocr.py # Extraction texte OCR depuis image │ ├── translate.py # Traduction FR ↔ EN │ ├── vision.py # Appel aux modèles multimodaux (llama3.2-vision) │ ├── markdown_export.py # Génère le fichier .md final │ └── pdf_utils.py # Utilitaires de navigation/conversion PDF ├── data/ │ └── outputs/ # Images et markdown générés └── docs/ └── prompts/ # Prompts de vision ou tests
## 🧩 Modules à implémenter
### 1. Viewer PDF
- Charger un PDF
- Afficher chaque page (convertie en image via PyMuPDF ou pdf2image)
- Boutons : page suivante / page précédente
- Possibilité de zoom
- Possibilité de sélection d’une zone rectangulaire (canvas)
- Affichage des coordonnées
### 2. Ajout de contexte
- Extraire automatiquement le texte environnant (avec OCR ou heuristique)
- Champ de texte modifiable par l’utilisateur
- Dropdown ou boutons pour préciser le type de contenu : `schéma`, `formule`, `tableau`, `autre`
### 3. Traitement IA
- Traduire le contexte FR ➝ EN avec Mistral
- Appeler le modèle `llama3.2-vision:90b` ou `llava:34b` via Ollama pour interprétation de la zone
- Revenir à une version finale FR (si nécessaire)
- Tout se fait via requêtes HTTP vers le serveur `http://217.182.105.173:11434`
### 4. Génération Markdown
Le fichier `.md` doit inclure pour chaque zone :
```markdown
## Figure {n} – {titre}
**Contexte** : {texte_fr_contextualisé}
**Description (interprétée par LLM)** :
{réponse_traduite_du_LLM}
**Source** : page {num}, type : {type}, image : `fig{n}.png`
5. Export
-
Enregistre l’image de la zone sélectionnée (naming auto fig1.png, fig2.png…)
-
Génère un fichier
document_traité.mddansdata/outputs/ -
Inclut toutes les zones traitées, formatées proprement pour Obsidian
🧠 Ressources recommandées
Librairies Python :
-
PyMuPDF (fitz)oupdf2image -
Pillow,TkinterouPyQt6 -
pytesseractpour OCR -
requestspour appels à l’API Ollama -
markdown,os,uuid,datetime
Modèles LLMs à appeler :
-
mistral:latestpour la traduction -
llama3.2-vision:90b-instruct-q8_0pour analyse des schémas -
nomic-embed-textetbge-rerankerpourront être utilisés plus tard dans Ragflow
✅ Étapes de tests
-
Lancer l’interface, naviguer dans un PDF
-
Sélectionner une zone avec un schéma
-
Ajouter ou modifier le contexte
-
Traduire automatiquement
-
Appeler LLM Vision
-
Générer le fichier Markdown
-
Vérifier la compatibilité avec Ragflow (chunk à la main dans un second temps)
🧪 Bonus
Ajouter plus tard :
-
OCR pour formules mathématiques avec Mathpix
-
Reconnaissance automatique des zones avec Layout Detection
-
Envoi direct du
.mddans une base Ragflow via API
💡 Commence par créer le viewer PDF avec navigation + sélection de zone. Je te dirai ensuite où intégrer l’OCR, la traduction, l’appel LLM, etc.
---
Souhaites-tu que je te génère ce prompt directement dans un fichier `.md` aussi ?