Saidgurbuz commited on
Commit
f029e56
·
verified ·
1 Parent(s): e7a6e13

Update ScreenParser for ScreenParse v2

Browse files

Upload detector checkpoint trained on ScreenParse v2 leaf-element annotations and update the model card. The v1 detector remains available on the v1 branch.

Files changed (2) hide show
  1. README.md +19 -19
  2. best.pt +2 -2
README.md CHANGED
@@ -18,18 +18,22 @@ library_name: ultralytics
18
 
19
  # ScreenParser
20
 
21
- **ScreenParser** is a YOLO-based UI element detector fine-tuned on [ScreenParse](https://huggingface.co/docling-project/screenparse), a large-scale dataset of 771K web page screenshots with dense annotations across **55 UI element classes**. Given a screenshot, it detects and classifies every visible UI component with bounding boxes and confidence scores.
 
 
 
 
22
 
23
  - **Developed by**: IBM Research - ETH Zurich
24
  - **Model type**: Object detection (YOLO11-L)
25
  - **License**: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
26
- - **Paper**: [ScreenParse: Moving Beyond Sparse Grounding with Complete Screen Parsing](TODO)
27
- - **Code**: [GitHub](TODO)
28
- - **Dataset**: [docling-project/screenparse](https://huggingface.co/docling-project/screenparse)
29
 
30
  ## Model Summary
31
 
32
- ScreenParser is a [YOLO11-Large](https://docs.ultralytics.com/models/yolo11/) model (25.4M parameters) fine-tuned at 1280px resolution on ScreenParse.
33
 
34
  ### Supported Classes (55)
35
 
@@ -41,10 +45,8 @@ Table, Column/Browser, Button, Utility Button, App Icon, Navigation Bar, Status
41
 
42
  ```python
43
  from ultralytics import YOLO
44
- from PIL import Image
45
 
46
  model = YOLO("docling-project/ScreenParser")
47
-
48
  results = model.predict("screenshot.png", imgsz=1280, conf=0.10, iou=0.10)
49
 
50
  for r in results:
@@ -61,21 +63,14 @@ import os
61
  from ultralytics import YOLO
62
 
63
  model = YOLO("docling-project/ScreenParser")
64
- IMAGE_DIR = "screenshots/"
65
-
66
  images = sorted(
67
- os.path.join(IMAGE_DIR, f) for f in os.listdir(IMAGE_DIR)
 
68
  if f.lower().endswith((".png", ".jpg", ".jpeg"))
69
  )
70
 
71
  results = model.predict(images, imgsz=1280, conf=0.10, iou=0.10, batch=16)
72
-
73
- for path, r in zip(images, results):
74
- print(f"--- {os.path.basename(path)} ({len(r.boxes)} elements) ---")
75
- for box, cls_id, conf in zip(r.boxes.xyxy, r.boxes.cls, r.boxes.conf):
76
- x1, y1, x2, y2 = box.tolist()
77
- label = model.names[int(cls_id)]
78
- print(f" {label:20s} conf={conf:.2f} bbox=({int(x1)}, {int(y1)}, {int(x2-x1)}, {int(y2-y1)})")
79
  ```
80
 
81
  ### Save Visualizations
@@ -88,11 +83,16 @@ results = model.predict("screenshot.png", imgsz=1280, conf=0.10, iou=0.10, save=
88
  # Annotated image saved under runs/detect/predict/
89
  ```
90
 
91
- **Training data**: [ScreenParse](https://huggingface.co/docling-project/screenparse) — 771K web page screenshots with dense annotations across 55 UI element classes. Annotations were generated through automated DOM extraction, IoU-based filtering, and VLM-based refinement.
 
 
 
 
92
 
93
  ## Limitations
94
 
95
- - Does not produce text content for detected elements (bounding boxes and labels only) — pair with an OCR model or [ScreenVLM](https://huggingface.co/docling-project/ScreenVLM) for text extraction
 
96
 
97
  ## Citation
98
 
 
18
 
19
  # ScreenParser
20
 
21
+ **ScreenParser** is a YOLO-based UI element detector fine-tuned on [ScreenParse](https://huggingface.co/datasets/docling-project/screenparse), a large-scale dataset of web page screenshots with dense UI annotations across **55 UI element classes**. Given a screenshot, it detects and classifies visible UI components with bounding boxes and confidence scores.
22
+
23
+ ## News
24
+
25
+ - **May 2026**: Updated `main` with the detector trained on ScreenParse v2, which contains 1,447,100 high-quality training screenshots, leaf-element annotations, and varied viewport resolutions. The original detector trained on ScreenParse v1 is retained on the `v1` branch.
26
 
27
  - **Developed by**: IBM Research - ETH Zurich
28
  - **Model type**: Object detection (YOLO11-L)
29
  - **License**: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
30
+ - **Paper**: [ScreenParse: Moving Beyond Sparse Grounding with Complete Screen Parsing](https://arxiv.org/abs/2602.14276)
31
+ - **Code**: https://github.com/Saidgurbuz/screenparse
32
+ - **Dataset**: [docling-project/screenparse](https://huggingface.co/datasets/docling-project/screenparse)
33
 
34
  ## Model Summary
35
 
36
+ ScreenParser is a [YOLO11-Large](https://docs.ultralytics.com/models/yolo11/) model fine-tuned at 1280px resolution on ScreenParse v2. The v2 detector uses the filtered leaf-element annotations released with the current dataset `main` branch.
37
 
38
  ### Supported Classes (55)
39
 
 
45
 
46
  ```python
47
  from ultralytics import YOLO
 
48
 
49
  model = YOLO("docling-project/ScreenParser")
 
50
  results = model.predict("screenshot.png", imgsz=1280, conf=0.10, iou=0.10)
51
 
52
  for r in results:
 
63
  from ultralytics import YOLO
64
 
65
  model = YOLO("docling-project/ScreenParser")
66
+ image_dir = "screenshots/"
 
67
  images = sorted(
68
+ os.path.join(image_dir, f)
69
+ for f in os.listdir(image_dir)
70
  if f.lower().endswith((".png", ".jpg", ".jpeg"))
71
  )
72
 
73
  results = model.predict(images, imgsz=1280, conf=0.10, iou=0.10, batch=16)
 
 
 
 
 
 
 
74
  ```
75
 
76
  ### Save Visualizations
 
83
  # Annotated image saved under runs/detect/predict/
84
  ```
85
 
86
+ ## Training Data
87
+
88
+ The current `main` checkpoint was trained on [ScreenParse v2](https://huggingface.co/datasets/docling-project/screenparse), which provides 1,447,100 high-quality training screenshots and 25,575,213 UI element annotations. The dataset uses filtered leaf-element annotations to reduce noisy nested boxes and includes multiple viewport resolutions.
89
+
90
+ The original ScreenParser checkpoint trained on ScreenParse v1 remains available with `revision="v1"`.
91
 
92
  ## Limitations
93
 
94
+ - Produces bounding boxes and element labels only; it does not produce text content for detected elements. Pair it with OCR or [ScreenVLM](https://huggingface.co/docling-project/ScreenVLM) when text extraction is needed.
95
+ - The model is trained on rendered web screenshots, so performance may vary on native desktop, mobile, or application screenshots outside the training distribution.
96
 
97
  ## Citation
98
 
best.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:d1d16bb335e6f38280dafbb3d2f2937975b62d8ef68ab3cf474b15b145b73286
3
- size 51358361
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dbcb4f583ccfdb8100a68e606525c247890a2de4c1a54b14741e0ee29ce0ab88
3
+ size 153259543