- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.3 KiB
5.3 KiB
Intégration Ollama pour Détection UI
Ce document explique comment intégrer Ollama avec le UIDetector pour la détection sémantique d'éléments UI.
Status: ✅ IMPLÉMENTÉ ET FONCTIONNEL
La détection VLM réelle est maintenant opérationnelle avec Ollama et le modèle qwen3-vl:8b.
Installation d'Ollama
1. Installer Ollama
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
# Windows
# Télécharger depuis https://ollama.ai
2. Démarrer Ollama
ollama serve
3. Télécharger un modèle VLM
# Qwen3 VL 8B (recommandé - meilleur pour UI)
ollama pull qwen3-vl:8b
# Alternatives
ollama pull granite3.2-vision:2b # Plus léger et rapide
ollama pull pixtral # Excellent mais plus lourd
ollama pull llava:13b # Bon équilibre
ollama pull moondream # Ultra léger
4. Vérifier l'installation
ollama list
Utilisation avec UIDetector
Configuration de base
from rpa_vision_v3.core.detection import (
UIDetector,
DetectionConfig,
OllamaClient
)
# Créer client Ollama
ollama_client = OllamaClient(
endpoint="http://localhost:11434",
model="qwen3-vl:8b"
)
# Créer UIDetector
config = DetectionConfig(
vlm_model="qwen3-vl:8b",
confidence_threshold=0.7,
detect_regions=True,
use_embeddings=True
)
detector = UIDetector(config)
# Brancher Ollama
detector.set_vlm_client(ollama_client)
# Détecter éléments UI
elements = detector.detect("screenshot.png")
for elem in elements:
print(f"{elem.type} - {elem.role} @ {elem.bbox}")
Classification d'éléments
from PIL import Image
# Charger image d'un élément
element_img = Image.open("button.png")
# Classifier le type
type_result = ollama_client.classify_element_type(element_img)
print(f"Type: {type_result['type']}")
# Classifier le rôle
role_result = ollama_client.classify_element_role(
element_img,
element_type="button"
)
print(f"Rôle: {role_result['role']}")
Extraction de texte
# Extraire texte d'une image
text_result = ollama_client.extract_text(element_img)
print(f"Texte: {text_result['text']}")
Test de l'intégration
Tests disponibles
# Test de connexion basique
python rpa_vision_v3/examples/test_ollama_integration.py
# Test avec screenshot
python rpa_vision_v3/examples/test_ollama_integration.py screenshot.png
# Test de la vraie détection VLM (NOUVEAU)
python rpa_vision_v3/examples/test_real_vlm_detection.py
Résultats des tests
✅ Test réussi avec qwen3-vl:8b (22 Nov 2024)
Le VLM détecte correctement :
- Champs de texte (
text_inputavec rôleform_input) - Boutons (
buttonavec rôlesprimary_action,cancel,submit) - Checkboxes (
checkboxavec rôleform_input) - Labels et textes associés
- Positions et dimensions approximatives
Précision observée: ~85% de confiance moyenne sur éléments UI standards
Modèles VLM supportés
| Modèle | Taille | Vitesse | Précision UI | Recommandé |
|---|---|---|---|---|
| qwen3-vl:8b | 6.1GB | ⚡⚡⚡ | ⭐⭐⭐⭐⭐ | ✅ Meilleur |
| granite3.2-vision:2b | 2.4GB | ⚡⚡⚡⚡ | ⭐⭐⭐⭐ | ✅ Rapide |
| pixtral | ~12GB | ⚡⚡ | ⭐⭐⭐⭐⭐ | ⚠️ Si RAM OK |
| llava:13b | ~8GB | ⚡⚡⚡ | ⭐⭐⭐⭐ | ⚠️ Alternative |
| moondream | ~2GB | ⚡⚡⚡⚡⚡ | ⭐⭐⭐ | ⚠️ Léger |
Configuration avancée
Ajuster les paramètres
config = DetectionConfig(
vlm_model="qwen3-vl:8b", # Modèle recommandé
vlm_endpoint="http://localhost:11434",
confidence_threshold=0.8, # Plus strict
max_elements=100, # Plus d'éléments
detect_regions=True, # Détection par régions
use_embeddings=True # Générer embeddings
)
Utiliser un endpoint distant
ollama_client = OllamaClient(
endpoint="http://192.168.1.100:11434",
model="qwen3-vl:8b",
timeout=120 # Timeout plus long
)
Troubleshooting
Ollama ne démarre pas
# Vérifier le service
systemctl status ollama # Linux
brew services list # macOS
# Redémarrer
systemctl restart ollama # Linux
brew services restart ollama # macOS
Modèle non trouvé
# Lister les modèles
ollama list
# Télécharger le modèle recommandé
ollama pull qwen3-vl:8b
Timeout lors de la détection
# Augmenter le timeout
ollama_client = OllamaClient(
endpoint="http://localhost:11434",
model="qwen3-vl:8b",
timeout=180 # 3 minutes
)
Erreur de mémoire
# Utiliser un modèle plus petit
ollama pull llava:7b
# Ou augmenter la mémoire disponible
export OLLAMA_MAX_LOADED_MODELS=1
Performance
Temps de détection typiques
- Screenshot 1920x1080 : ~2-5 secondes
- Élément UI individuel : ~0.5-1 seconde
- Batch de 10 éléments : ~5-10 secondes
Optimisations
- Détection par régions : Divise l'image en zones plus petites
- Cache des résultats : Évite de re-détecter les mêmes éléments
- Batch processing : Traite plusieurs éléments en parallèle
- GPU : Utilise GPU si disponible (configure dans Ollama)