/ Модель

Характеристики

Контекст
8 192 токена
Лицензия
Apache 2.0
Архитектура
idefics3 · dense
Библиотека
transformers
Опубликована
11 фев 2026

ScreenVLM

Изображение и текст → текст7 профессий

ScreenVLM разбирает снимки веб-страниц, определяя типы и координаты элементов интерфейса и извлекая видимый текст.

613скачиваний за 30 дней7лайковвеса обновлены29 мая 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Изображение → текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

ScreenVLM — компактная мультимодальная модель понимания изображений и текста, разработанная IBM Research Zurich и ETH Zurich. Она предназначена для полного разбора снимков веб-страниц: находит видимые элементы интерфейса, определяет их тип и положение, а также распознаёт текст внутри них.

Модель построена на архитектуре Idefics3, с визуальным энкодером siglip2-base-patch16-512 и языковой основой Granite 165M. На вход подаётся изображение экрана, а на выходе — структурированное представление ScreenTag с метками для 55 классов элементов, координатами ограничивающих рамок и текстовым содержимым. Модель обучена на наборе ScreenParse v2 с разметкой снимков веб-страниц; карточка указывает английский язык.

ScreenVLM подходит для извлечения структуры веб-страниц, анализа интерфейсов и подготовки данных для автоматизации браузера. Она оптимизирована для снимков веб-страниц, поэтому качество на мобильных и настольных интерфейсах приложений может отличаться; на перегруженных и динамичных экранах возможны ошибки. Для автоматизации с высокими требованиями к надёжности следует проверять координаты и распознанный текст. Лицензия — Apache 2.0.

Сценарии применения

  • извлечение кнопок, ссылок и полей ввода со снимков веб-страниц
  • распознавание текста и структуры веб-интерфейса
  • определение координат элементов для браузерной автоматизации
  • классификация элементов интерфейса по 55 семантическим классам

Ограничения

Модель оптимизирована для снимков веб-страниц; качество на мобильных и настольных интерфейсах приложений может отличаться. На перегруженных или динамичных экранах возможны ошибки, поэтому координаты и текст следует проверять перед использованием в критичной автоматизации.

Для каких профессий подходит7

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

ScreenVLM

ScreenVLM is a compact multimodal vision-language model for complete screen parsing: detecting, classifying, localizing, and transcribing UI elements on web page screenshots. Given an image, it produces a structured ScreenTag representation with bounding boxes, semantic labels across 55 UI element classes, and text content for visible elements.

News

Model Summary

ScreenVLM builds upon the Idefics3 architecture with siglip2-base-patch16-512 as the vision encoder and a Granite 165M LLM as the language backbone. The current main checkpoint was trained on ScreenParse v2 full-element screen parsing supervision across 55 semantic UI classes.

Key Features

  • Complete screen parsing: Detects all visible UI elements on a page, not only sparse grounding targets
  • 55 UI element classes: Buttons, links, inputs, navigation bars, menus, images, text, and more
  • ScreenTag output format: Structured representation with semantic tags, location tokens, and text content
  • Compact size: Single-file safetensors checkpoint suitable for fast inference

Output Format

ScreenVLM generates output in ScreenTag format, where each UI element is wrapped in semantic tags with location tokens:

<screentag>
<button><loc_10><loc_20><loc_50><loc_35>Submit</button>
<link><loc_100><loc_200><loc_180><loc_210>Learn more</link>
<navigation_bar><loc_0><loc_0><loc_500><loc_30>
  <link><loc_10><loc_5><loc_60><loc_25>Home</link>
  <link><loc_70><loc_5><loc_120><loc_25>About</link>
</navigation_bar>
</screentag>

Each <loc_X> token represents a coordinate in the normalized [0, 500] space. Four consecutive location tokens define <left><top><right><bottom> of the bounding box.

Usage

Inference with Transformers

import re
import torch
from transformers import AutoProcessor, AutoModelForVision2Seq
from transformers.image_utils import load_image

DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
MODEL_PATH = "docling-project/ScreenVLM"
NORM_SIZE = 500

image = load_image("https://example.com/screenshot.png")

processor = AutoProcessor.from_pretrained(MODEL_PATH)
model = AutoModelForVision2Seq.from_pretrained(
    MODEL_PATH,
    torch_dtype=torch.bfloat16,
    _attn_implementation="flash_attention_2" if DEVICE == "cuda" else "sdpa",
).to(DEVICE)

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image"},
            {"type": "text", "text": "Generate the screen representation for this UI:"},
        ],
    },
]

prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(text=prompt, images=[image], return_tensors="pt").to(DEVICE)

generated_ids = model.generate(**inputs, max_new_tokens=6192)
prompt_length = inputs.input_ids.shape[1]
output = processor.batch_decode(
    generated_ids[:, prompt_length:],
    skip_special_tokens=False,
)[0].lstrip()

def parse_screentag(text, width, height):
    pattern = re.compile(
        r"<(?P<tag>[a-zA-Z][a-zA-Z0-9_]*)>"
        r"\s*<loc_(?P<l>\d+)><loc_(?P<t>\d+)><loc_(?P<r>\d+)><loc_(?P<b>\d+)>"
        r"(?P<text>[^<]*)"
    )
    elements = []
    for m in pattern.finditer(text):
        l, t, r, b = [max(0, min(int(m.group(k)), NORM_SIZE)) for k in ("l", "t", "r", "b")]
        if r < l:
            l, r = r, l
        if b < t:
            t, b = b, t
        x = l / NORM_SIZE * width
        y = t / NORM_SIZE * height
        w = (r - l) / NORM_SIZE * width
        h = (b - t) / NORM_SIZE * height
        elements.append({
            "label": m.group("tag"),
            "bbox": (x, y, w, h),
            "text": m.group("text").strip() or None,
        })
    return elements

elements = parse_screentag(output, *image.size)
for el in elements:
    print(f"{el['label']:20s} bbox=({int(el['bbox'][0]):4d},{int(el['bbox'][1]):4d},{int(el['bbox'][2]):4d},{int(el['bbox'][3]):4d})  text={el['text']!r}")

Batch Inference with vLLM

import os
import re
import time
from vllm import LLM, SamplingParams
from transformers import AutoProcessor
from PIL import Image

MODEL_PATH = "docling-project/ScreenVLM"
IMAGE_DIR = "screenshots/"
PROMPT_TEXT = "Generate the screen representation for this UI:"
NORM_SIZE = 500

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image"},
            {"type": "text", "text": PROMPT_TEXT},
        ],
    },
]

llm = LLM(model=MODEL_PATH, limit_mm_per_prompt={"image": 1})
processor = AutoProcessor.from_pretrained(MODEL_PATH)

sampling_params = SamplingParams(
    temperature=0.0,
    max_tokens=6192,
    skip_special_tokens=False,
)

batched_inputs = []
image_sizes = []
for img_file in sorted(os.listdir(IMAGE_DIR)):
    if img_file.lower().endswith((".png", ".jpg", ".jpeg")):
        img_path = os.path.join(IMAGE_DIR, img_file)
        image = Image.open(img_path).convert("RGB")
        prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
        batched_inputs.append({"prompt": prompt, "multi_modal_data": {"image": image}})
        image_sizes.append((img_file, image.size))

start = time.time()
outputs = llm.generate(batched_inputs, sampling_params=sampling_params)
print(f"Total: {time.time() - start:.1f}s for {len(batched_inputs)} images")

Training

ScreenVLM was trained using the nanoVLM framework with 16 NVIDIA H100 GPUs.

Training data: ScreenParse v2 full-element annotations for complete screen parsing. The v2 training data contains 1,447,100 high-quality web page screenshots across varied viewport resolutions with dense UI element supervision, including bounding boxes, semantic labels, text content, interactability flags, and reading order.

The original ScreenVLM checkpoint trained on ScreenParse v1 remains available with revision="v1".

Limitations

  • Optimized for web page screenshots; performance on mobile or desktop application UIs may vary
  • May struggle with very dense or highly dynamic UIs, such as complex dashboards with hundreds of elements
  • Produces structured screen parses, but downstream applications should still validate coordinates and text before using them for high-stakes automation

Citation

@misc{gurbuz2026movingsparsegroundingcomplete,
      title={ScreenParse: Moving Beyond Sparse Grounding with Complete Screen Parsing Supervision},
      author={A. Said Gurbuz and Sunghwan Hong and Ahmed Nassar and Marc Pollefeys and Peter Staar},
      year={2026},
      eprint={2602.14276},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2602.14276},
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
Idefics3ForConditionalGeneration
Ревизия весов
78df0cc

0 моделей