Voir aussi:
Il y a YOLO et tout plein d'outils dédiés à la détection dans des images. Là je teste avec des modèles multimodaux, sans entraînement spécifique.
Le prompt demande s'il y a des panneaux solaire dans l'image fournie, avec sa bbox, et si “oui” de calculer les coordonnées géographiques de l'objet trouvé. Les 2 instructions permettent d'éliminer des faux positifs.
Par exemple le modèle trouve un panneau solaire dans cette image, mais ne trouve pas les coordonnées géo, on peut donc l'évacuer des positifs.
Nécessite un modèle multimodal et un fichier mmproj approprié.
Comparaison de perf avec le modèle yolo26x.pt sur 1521 tuiles de 640 pixels:
| real | user | sys | |
|---|---|---|---|
| CUDA RTX 3060 | 0m25,625s | 0m22,140s | 0m3,480s |
| 13th i7-1360P | 6m3,403s | 48m3,806s | 0m2,906s |
Construction du jeu de données d’entraînement avec Label Studio.
Export au format “Yolo + images”. Attention, il faut ensuite répartir les images et labels entre “train” et “val”.
uv run yolo detect train \ data=dataset_s4-project-1-at-2026-03-07-15-33-9190b7c5.yml \ model=~/Data/AI_ModelsVision/yolo26l.pt \ epochs=130 lr0=0.0005 cos_lr=True augment=True optimizer=AdamW
Spécialisation à la détection de panneaux solaires photovoltaïques sur les tuiles de IGN BdOrtho. Essentiellement les grandes installation comme la bâtis agricoles et toitures d'écoles et bâtiment industriels. Les petits panneaux sur toitures habitation résidentielles sont difficiles à différencier et peuvent être pour chauffer l'eau et pas pour générer de l'électricité. Il y a encore quelques faux positifs, mais à la marge. 😉
Le dataset avec 286 images pour “train” et 50 pour “val” :
Le modèle résultant à partir de Yolo26L :
Travaux similaires:
Les rectangles ont 2 propriétés: la “confidence” de la détection et “file” pour le nom de la tuile.
A fast, local PDF parsing with spatial text parsing, OCR, and bounding boxes. Open-source document parser from LlamaIndex
Avec llama.cpp et le modèle GLM-OCR-f16.gguf avec son fichier mmproj-GLM-OCR-Q8_0.gguf
~/Code/bronx/AI_Coding/llama.cpp-86/build/bin/llama-server --port 8012 \ -m ~/Data/AI_ModelsOCR/GLM-OCR-f16.gguf \ --mmproj ~/Data/AI_ModelsOCR/mmproj-GLM-OCR-Q8_0.gguf
Avec les images de pages scannées du fichier https://www.cotes-darmor.gouv.fr/contenu/telechargement/60849/507248/file/recueil-22-2023-079-recueil-des-actes-administratifs-special.pdf
Avec CPU i7-1360P 13thGen real 0m47,583s, 0m32,031s user 0m0,112s, 0m0,110s sys 0m0,025s, 0m0,025s Avec RTX 3060 real 0m5,929s, 0m3,367s user 0m0,099s, 0m0,104s sys 0m0,027s, 0m0,027s
La page 8 est un tableau et les données dans les cellules sont très bien extraites, les phrases sur plusieurs lignes dans une cellule sont bien extraites.
Avec le prompt : “Extrais le texte de cette image en préservant la structure (titres, listes, paragraphes). Corrigé les erreurs d'OCR si nécessaire. Réponds avec LE FORMAT MARKDOWN.” la page 8 donne du Markdown alors que la page 9 donne du HTML …
Alors qu'avec le prompt : “Extract the text from this image, preserving the structure (headings, lists, paragraphs). Correct any OCR errors where necessary. Please reply in MARKDOWN FORMAT.” les pages 8 et 9 sont bien en Markdown. Comme quoi le modèle comprends mieux l'anglais.
Les tables sont bien extraites mais pas toujours bien rendues dans la réponse. Après quelques essais le prompt qui fonctionne mieux : “Extract the text from this image, preserving the structure (headings, lists, paragraphs) and make sure you KEEP THE TABLES in good condition. Correct any OCR errors where necessary. Fine Reply in MARKDOWN FORMAT.”
😩 voilà qu'après plusieurs usages il n'y a plus de Markdown pour les titres …
👌 J'ai changé de stratégie: ne plus extraire la mise en forme, mais seulement le texte page par page, avec extraction de quelques entités comme “auteur”, “date”, “sujet” et un “résumé”. Là le model GLM-OCR-f16 est très efficace.
https://huggingface.co/unsloth/Qwen2.5-VL-7B-Instruct-GGUF
Bien meilleurs résultats pour la structure en Markdown mais beaucoup plus gourmand en mémoire et donc plus lent à cause de l'usage du CPU, même avec du Q4. 😩
~/Code/bronx/AI_Coding/llama.cpp-86/build/bin/llama-server --port 8012 \ -m ~/Data/AI_ModelsOCR/Qwen2.5-VL-7B-Instruct-UD-Q4_K_XL.gguf \ --mmproj ~/Data/AI_ModelsOCR/mmproj-F16.gguf -ngl 20 real 0m39,938s, 0m45,901s user 0m0,116s, 0m0,105s sys 0m0,024s, 0m0,027s
Tient dans la VRAM de la RTX3060.
Gère bien le Markdown, mais les résultats sont alléatoires … Et de nombreuses allucinations 😩