from __future__ import annotations from core.models import Scene from device.manager import DeviceManager from perception.ocr import PaddleOCREngine from perception.provider import DefaultPerceptionProvider, PerceptionProvider from tools._device import get_driver def describe_screen( device_id: str | None = None, *, manager: DeviceManager | None = None, ocr_engine: PaddleOCREngine | None = None, perception_provider: PerceptionProvider | None = None, ) -> Scene: driver = get_driver(device_id, manager=manager) screenshot = driver.screenshot() raw_tree = driver.tree() provider = perception_provider or DefaultPerceptionProvider(ocr_engine=ocr_engine) return provider.build_scene(screenshot, raw_tree)