Files
rpa_vision_v3/docs/OLLAMA_INTEGRATION.md
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- 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>
2026-01-29 11:23:51 +01:00

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_input avec rôle form_input)
  • Boutons (button avec rôles primary_action, cancel, submit)
  • Checkboxes (checkbox avec rôle form_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

  1. Détection par régions : Divise l'image en zones plus petites
  2. Cache des résultats : Évite de re-détecter les mêmes éléments
  3. Batch processing : Traite plusieurs éléments en parallèle
  4. GPU : Utilise GPU si disponible (configure dans Ollama)

Ressources