KU-MIIL/Semantic-SVG-Benchmark
Semantic SVG Benchmark A benchmark of 203 SVG files annotated with human-written semantic object-decomposition trees: every rendered shape (<path>, <rect>, <circle>, …) in each SVG is assigned to a named semantic object (e.g. judge, gavel), and objects may be further decomposed into parts (e.g. Bamboo planter → pot, bamboo). It is the evaluation benchmark of Compositional SVG Generation via VLM-Driven Hierarchical Semantic Parsing (EMNLP 2026). The annotations are ours; the SVGs… See the full description on the dataset page: https://huggingface.co/datasets/KU-MIIL/Semantic-SVG-Benchmark.
Semantic SVG Benchmark
A benchmark of 203 SVG files annotated with human-written semantic object-decomposition trees: every rendered shape (<path>, <rect>, <circle>, …) in each SVG is assigned to a named semantic object (e.g. judge, gavel), and objects may be further decomposed into parts (e.g. Bamboo planter → pot, bamboo). It is the evaluation benchmark of Compositional SVG Generation via VLM-Driven Hierarchical Semantic Parsing (EMNLP 2026). The annotations are ours; the SVGs come from existing public sources (see Sources & licenses).
Quick start
from datasets import load_dataset
import json
ds = load_dataset("KU-MIIL/Semantic-SVG-Benchmark", split="test")
ex = ds[0]
print(ex["id"], ex["source"], ex["n_paths"])
tree = json.loads(ex["tree"]) # {"paths": [...], "root": {"children": [...]}}
svg_text = ex["svg"] # raw SVG sourceThe raw files are also available directly: svg/<id>.svg and trees/<id>.tree.json, with per-file metadata in manifest.csv.
Data fields (data/test.parquet)
Annotation format
{
"paths": [0, 1, 2, ..., 20],
"root": {
"children": [
{"label": "sun", "paths": [0, 1]},
{"label": "Bamboo planter", "paths": [2, 3, ..., 20],
"children": [
{"label": "pot", "paths": [13, 14, 16, 17, 18]},
{"label": "bamboo", "paths": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 19, 20]}
]}
]
}
}paths(top level) lists all shape indices in the file (0 … n_paths-1).- Each node has a free-text
labeland the set of shape indicespathsit covers; a parent'spathsis the union of its children's. The top-level objects partition the full shape set (every shape belongs to exactly one top-level object). - Shape index convention. Index
irefers to the i-th shape element in document order amongpath, rect, circle, ellipse, polygon, polyline, line, skipping any shape nested inside<defs>,<clipPath>,<mask>,<symbol>,<pattern>or<marker>. Reference implementation:
import re
SHAPE_PAT = re.compile(r"<(path|rect|circle|ellipse|polygon|polyline|line)\b([^>]*?)(/>|>([\s\S]*?)</\1>)")
NONRENDER = re.compile(r"<(defs|clipPath|mask|symbol|pattern|marker)\b[^>]*>[\s\S]*?</\1>")
def shapes(svg_text):
skip = [(m.start(), m.end()) for m in NONRENDER.finditer(svg_text)]
return [m for m in SHAPE_PAT.finditer(svg_text)
if not any(a <= m.start() < b for a, b in skip)]examples/ contains four rendered tree visualisations (*.tree.png / *.tree.svg).
Sources & licenses
The SVGs were not created by us. Items of type A/B are re-annotations of existing benchmark assets and are therefore the same images as in those benchmarks (re-serialised, not byte-identical); items of type C were collected directly from each project's primary repository/site.
\* per-file upstream provider is given in upstream_art / attribution.
License. The semantic-decomposition annotations (trees/, the tree column, and manifest.csv) are released under CC-BY-4.0. Each SVG remains under its upstream license listed in upstream_license (CC0-1.0 / CC-BY-4.0 / CC-BY-SA-4.0 / Apache-2.0 / MIT / SArena research-use terms); please respect the corresponding attribution and share-alike requirements when redistributing the SVG files.
Contamination note. Because A and B are taken from existing benchmarks, this benchmark is not image-disjoint from SArena (img2svg) or SVG-Bench SVG-Emoji (test). None of the 203 files is byte-identical to any file in SVG-Stack (2,283,875 SVGs) or VectorGym. Neither SArena nor SVG-Emoji ship decomposition or object-hierarchy labels; those are contributed here.
Citation
This benchmark was introduced in Compositional SVG Generation via VLM-Driven Hierarchical Semantic Parsing (EMNLP 2026, main conference). Paper: arXiv:2609.14657.
@inproceedings{park2026compositional,
title = {Compositional {SVG} Generation via {VLM}-Driven Hierarchical Semantic Parsing},
author = {Park, Sehwan and Kim, Taehoon and Han, Geonhee and Kim, Dohyun and Kim, Seung Wook and Seo, Paul Hongsuck},
booktitle = {Proceedings of the 2026 Conference on Empirical Methods in Natural Language Processing (EMNLP)},
year = {2026},
url = {https://arxiv.org/abs/2609.14657}
}If you use the SVGs, please also cite the corresponding upstream sources (InternSVG/SArena: arXiv:2510.11341; StarVector: arXiv:2312.11556).
