28 lines
826 B
Python
28 lines
826 B
Python
from __future__ import annotations
|
|
|
|
from core.device_manager import DeviceManager
|
|
from core.models import Scene
|
|
from tools._device import get_driver
|
|
from vision.ocr import PaddleOCREngine, run_ocr
|
|
from vision.scene_builder import build_scene, infer_png_size
|
|
from vision.ui_parser import parse_ui_tree
|
|
|
|
|
|
def describe_screen(
|
|
device_id: str | None = None,
|
|
*,
|
|
manager: DeviceManager | None = None,
|
|
ocr_engine: PaddleOCREngine | None = None,
|
|
) -> Scene:
|
|
driver = get_driver(device_id, manager=manager)
|
|
screenshot = driver.screenshot()
|
|
raw_tree = driver.tree()
|
|
width, height = infer_png_size(screenshot)
|
|
return build_scene(
|
|
screen_width=width,
|
|
screen_height=height,
|
|
ui_elements=parse_ui_tree(raw_tree),
|
|
ocr_elements=run_ocr(screenshot, engine=ocr_engine),
|
|
)
|
|
|