Files
Dom cf495dd82f feat: chat unifié, GestureCatalog, Copilot, Léa UI, extraction données, vérification replay
Refonte majeure du système Agent Chat et ajout de nombreux modules :

- Chat unifié : suppression du dual Workflows/Agent Libre, tout passe par /api/chat
  avec résolution en 3 niveaux (workflow → geste → "montre-moi")
- GestureCatalog : 38 raccourcis clavier universels Windows avec matching sémantique,
  substitution automatique dans les replays, et endpoint /api/gestures
- Mode Copilot : exécution pas-à-pas des workflows avec validation humaine via WebSocket
  (approve/skip/abort) avant chaque action
- Léa UI (agent_v0/lea_ui/) : interface PyQt5 pour Windows avec overlay transparent
  pour feedback visuel pendant le replay
- Data Extraction (core/extraction/) : moteur d'extraction visuelle de données
  (OCR + VLM → SQLite), avec schémas YAML et export CSV/Excel
- ReplayVerifier (agent_v0/server_v1/) : vérification post-action par comparaison
  de screenshots, avec logique de retry (max 3)
- IntentParser durci : meilleur fallback regex, type GREETING, patterns améliorés
- Dashboard : nouvelles pages gestures, streaming, extractions
- Tests : 63 tests GestureCatalog, 47 tests extraction, corrections tests existants
- Dépréciation : /api/agent/plan et /api/agent/execute retournent HTTP 410,
  suppression du code hardcodé _plan_to_replay_actions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 10:02:09 +01:00
..

Module de Capture d'Écran

Vue d'ensemble

Le module screen_capturer fournit une interface unifiée pour capturer des screenshots avec fallback automatique entre différentes bibliothèques.

Fonctionnalités

  • Capture d'écran rapide avec mss (méthode préférée)
  • Fallback automatique vers pyautogui si mss n'est pas disponible
  • Détection de la fenêtre active avec pygetwindow
  • Conversion automatique au format RGB numpy
  • Validation des images capturées
  • Gestion propre des ressources

Installation

# Installer les dépendances
cd rpa_vision_v3
./install_capture_deps.sh

# Ou manuellement
pip install mss>=9.0.0 pygetwindow>=0.0.9

Utilisation

Capture Simple

from core.capture.screen_capturer import ScreenCapturer

# Initialiser le capturer
capturer = ScreenCapturer()

# Capturer l'écran
img = capturer.capture()  # numpy array (H, W, 3) RGB

# Vérifier la capture
if img is not None:
    print(f"Image capturée: {img.shape}")

Détection de Fenêtre Active

# Obtenir les infos de la fenêtre active
window = capturer.get_active_window()

if window:
    print(f"Fenêtre: {window['title']}")
    print(f"Position: ({window['x']}, {window['y']})")
    print(f"Taille: {window['width']}x{window['height']}")

Intégration avec PIL

from PIL import Image

# Capturer et convertir en PIL Image
img_array = capturer.capture()
img_pil = Image.fromarray(img_array)

# Sauvegarder
img_pil.save("screenshot.png")

Architecture

ScreenCapturer
├── __init__()          # Initialise avec mss ou pyautogui
├── capture()           # Capture l'écran complet
├── get_active_window() # Détecte la fenêtre active
├── _capture_mss()      # Capture avec mss (rapide)
└── _capture_pyautogui()# Capture avec pyautogui (fallback)

Performance

Méthode Temps moyen Mémoire
mss ~10-20ms Faible
pyautogui ~50-100ms Moyenne

Recommandation: Utiliser mss pour les captures fréquentes.

Format de Sortie

  • Type: numpy.ndarray
  • Shape: (hauteur, largeur, 3)
  • Dtype: uint8
  • Ordre des canaux: RGB (pas BGR)
  • Valeurs: 0-255

Gestion d'Erreurs

try:
    img = capturer.capture()
    if img is None:
        print("Capture a échoué")
except Exception as e:
    print(f"Erreur: {e}")

Tests

# Tester le module
python examples/test_screen_capturer.py

# Résultat attendu:
# ✓ Méthode utilisée: mss
# ✓ Image capturée: (1080, 1920, 3)
# ✓ Format RGB valide
# ✓ Fenêtre active détectée

Dépendances

Obligatoires

  • numpy>=1.24.0

Optionnelles (au moins une requise)

  • mss>=9.0.0 (recommandé)
  • pyautogui>=0.9.54 (fallback)

Pour détection de fenêtre

  • pygetwindow>=0.0.9

Limitations

  1. Multi-écrans: Capture actuellement le moniteur principal uniquement
  2. Fenêtre active: Peut ne pas fonctionner sur tous les gestionnaires de fenêtres Linux
  3. Permissions: Peut nécessiter des permissions spéciales sur certains systèmes

Compatibilité

  • Linux (X11)
  • Linux (Wayland) - avec limitations
  • Windows
  • macOS

Troubleshooting

Erreur: "Neither mss nor pyautogui available"

pip install mss pyautogui

Erreur: "Captured image has invalid dimensions"

Vérifier que l'écran est bien détecté:

import mss
with mss.mss() as sct:
    print(sct.monitors)

Fenêtre active non détectée

Sur certains systèmes Linux, installer:

sudo apt-get install python3-xlib

Exemples Avancés

Capture d'une région spécifique

# TODO: À implémenter
# capturer.capture_region(x, y, width, height)

Capture avec timestamp

from datetime import datetime

img = capturer.capture()
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"screenshot_{timestamp}.png"

Image.fromarray(img).save(filename)

Roadmap

  • Support de capture de région spécifique
  • Support multi-écrans avec sélection
  • Cache de captures pour optimisation
  • Compression automatique des images
  • Support de formats de sortie alternatifs (JPEG, WebP)

Contribution

Pour améliorer ce module, voir rpa_vision_v3/docs/specs/tasks.md.