/ Модель

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

Контекст
1 048 576 токенов
Лицензия
Своя лицензия
Архитектура
youtu_vita · dense
Библиотека
transformers
Опубликована
9 окт 2026

Youtu-Parsing-Omni

Генерация текстаТекст → текст

Компактная мультимодальная модель Tencent для разбора документов, изображений, аудио и видео в структурированный JSON.

741скачиваний за 30 дней86лайковвеса обновлены10 окт 2026

Бенчмарки

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

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

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

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

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

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

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

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

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

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

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

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

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

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

Youtu-Parsing-Omni — компактная мультимодальная модель Tencent с 5 млрд параметров для преобразования документов, изображений, диаграмм, аудио и аудиовизуальных видео в структурированный JSON. Она использует плотную архитектуру YoutuVITAForCausalLM: единый Youtu-Omni-Encoder обрабатывает изображения, аудио и синхронизированные кадры видео, а декодер Youtu-LLM формирует ответы по единой схеме OmniSchema. Модель рассчитана на OCR и разбор документов, таблиц, формул, графиков, блок-схем и геометрических рисунков, а также на распознавание речи и звуковых событий, описание изображений и создание повествований или отчётов по видео.

Задача выбирается текстовой инструкцией; результат может включать текст, LaTeX, таблицы, координаты объектов, временные метки, подписи и описания. Заявленная длина контекста — 1 048 576 токенов. В README сообщается о высоких результатах на OmniDocBench и OmniParsingBench и приводятся примеры обслуживания через vLLM и Transformers. Репозиторий содержит веса Safetensors; лицензия указана как other, поэтому перед использованием следует проверить её условия. Технический отчёт обозначен как готовящийся к публикации, а README не перечисляет все детали оценки и ограничения качества по отдельным задачам.

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

  • извлечение текста, таблиц и формул со страниц документов
  • преобразование графиков и блок-схем в структурированное описание
  • распознавание объектов и текста на изображениях с координатами
  • транскрибирование речи и выявление звуковых событий в аудио
  • создание описаний и отчётов по аудиовизуальным видео
  • разбор геометрических рисунков в структурированный JSON

Ограничения

Лицензия обозначена как other, поэтому условия использования нужно проверить отдельно. README не приводит детальные ограничения качества для каждого типа входных данных.

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

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

Открыть на Hugging Face

News

Introduction

Youtu-Parsing-Omni is a compact (5B) omni-modal parsing model. Given a single input — a document page, a natural image, a chart / flowchart, a geometry figure, an audio clip or an audio-visual video — it produces one structured JSON envelope that covers both perception (layout elements, text, tables, formulas, bounding boxes, timestamps, ASR, OCR, acoustic events, camera motion) and cognition (captions, narratives, reports). The output family is selected by the task prompt (--task in the examples, keys of prompts/youtu_parsing_omni.json).

Input--taskmodality / subtypeKey contents
Document pagedocumentimage / documentlayout elements with bbox, text / LaTeX / OTSL tables / Markdown charts / Mermaid flowcharts, reading order
Natural imagenatural_imageimage / natural_imageentities and text with bbox, tags, captions, global description
Chartgraphics_chartimage / documentone chart element: Markdown table, notes, caption
Flowchartgraphics_flowchartimage / documentone flowchart element: Mermaid, caption
Geometry figuregraphics_geometricimage / documentone geometric element: points, lines, arcs, shapes, geometric relations and measurements
Audioaudioaudio / –vocal / non-vocal segments with timestamps, speakers, ASR, timbre / scene captions, acoustic events
Natural videonatural_videovideo / natural_videotemporal segments with visual elements, actions, interactions, camera motion, audio track
Text-rich videotextrich_videovideo / text_rich_videosegments with OCR + ASR and a Markdown structured_report of the whole video

Highlights (see the technical report for details):

  • Unified schema – one JSON envelope for seven parsing families, driven by the task prompt.
  • Omni encoder – image, audio and interleaved audio-visual video inputs (frames + audio track) in a single model.
  • Strong results at a small size – state-of-the-art on OmniDocBench v1.6 (96.96 Overall), best open-weight model on OmniParsingBench (75.08 Avg., second only to Gemini-3-Pro), and competitive with specialized models on chemical-structure (ChemOCR) and music-score (PDMX-Synth) recognition (results).
  • Easy to serve – a vLLM plugin, pinned serving settings, task prompts and inference examples are included.

Method

One encoder for every modality

Existing omni-modal parsers (a) encode pixels and audio with two separately pre-trained towers whose streams first meet inside the language model. Youtu-Parsing-Omni (b) replaces both towers with a single Youtu-Omni-Encoder, initialized from a pre-trained text language model to strengthen text reading. Thin modality-specific stems map pixels and log-mel frames to tokens; a shared bidirectional Transformer contextualizes an arbitrary packed mix of images, audio chunks and videos under one (t, h, w) positional encoding; modality-specific mergers and projectors then feed the tokens, together with the text prompt, to the Youtu-LLM decoder, which emits OmniSchema JSON. Only the stems and the merger / projector heads depend on the modality, so almost all perception parameters are shared.

Audio-visual fusion inside perception

The frames and audio chunks of a video are packed in temporal order. (a) A non-fusion layer gives every frame and every audio chunk its own attention window, while a few fusion layers start a new window at every audio-to-frame boundary, so a frame attends to the sound of the same instant. (b) Vision tokens take t from the frame index and (h, w) from the patch grid; audio tokens take t from their time offset with h = w = 0, so both modalities share one temporal coordinate system. Cross-modal alignment is thus computed inside the encoder rather than reconstructed by the decoder.

One schema for every task: OmniSchema-Aware On-Policy Distillation (OSAD)

All ten parsing tasks share OmniSchema, so after SFT and schema-routed RLVR a single self-evolving post-training procedure, OSAD, applies the same token-role-based objective across tasks. The student samples its own parses; rollouts that pass the admission gate (JSON validity, schema conformance, box syntax, repetition checks) are scored by a frozen copy of the model that additionally sees the reference parse. Because every output follows OmniSchema, each token is identified as content (Jensen–Shannon divergence) or structure (forward KL at a higher temperature), plus an all-token JS term. At every round boundary the student's LoRA adapters are merged and the student becomes the next teacher, so the parser and its supervision co-evolve without a hand-designed reward or a separately trained teacher.

Model Zoo

ModelParametersDownload
Youtu-Parsing-Omni5B🤗Hugging Face | 🤖ModelScope

Results

OmniDocBench v1.6

ModelParamsOverall ↑Text Edit ↓Formula CDM ↑Table TEDS ↑Table TEDS-S ↑Reading Order Edit ↓
Youtu-Parsing-Omni5B96.960.027196.8096.7998.200.1104
TeleOCR1.2B96.910.026796.5996.8298.180.1184
OvisOCR20.8B96.470.026597.4994.5896.980.1120
PaddleOCR-VL-1.60.9B96.340.032697.5394.7697.100.1278
MinerU2.5-Pro1.2B95.750.036097.4593.4295.920.1200
GLM-OCR0.9B95.220.044097.1892.8395.390.1330
HunyuanOCR-1.51B94.740.039094.5093.6794.710.1290
Qianfan-OCR4B93.900.040095.0890.5393.310.1300
Youtu-Parsing2.5B93.740.044093.6392.0295.000.1160
Ovis2.6-30B-A3B30B-A3B93.700.035095.1789.4492.400.1350
Logics-Parsing-v24B93.330.041095.6588.4291.980.1370
FireRed-OCR2B93.260.037095.4488.0491.060.1310
Gemini-3-Pro–92.910.064095.9989.1592.960.1650
dots.ocr3B90.770.048089.9587.1890.580.1380
OpenDoc-0.1B0.1B90.670.049093.0283.8887.450.1400
DeepSeek-OCR 23B90.250.050091.8483.8987.750.1440
Qwen3-VL-235B235B-A22B89.780.063092.5583.0786.750.1660
Dolphin-v23B89.500.069091.0184.4087.440.1500
OCRVerse4B88.600.063089.6182.4486.270.1630
MonkeyOCR-pro-3B3B88.570.074088.7484.3588.620.1890
GPT-5.2–86.590.114088.2182.9587.930.1930

OmniParsingBench

ModelChartGeometryNatural ImageAudioNatural VideoText-rich VideoAvg.
Gemini-3-Pro92.7985.4369.7376.7474.8276.8077.44
Youtu-Parsing-Omni95.0274.3362.8478.0874.1875.6275.08
Logics-Parsing-Omni94.6576.3467.5375.5867.3465.3672.26
Qwen3-Omni-30B-A3B87.0758.6059.3575.2365.1959.5966.44
Qwen3.5-397B-A17B93.5172.1663.87––––
GPT-5.490.9281.1660.50––––

ChemOCR & PDMX-Synth

ChemOCR

ModelParamsCategoryAvg. Sim. ↑Tani@1.0 ↑
DeepSeek-OCR 23BGeneral parsing MLLM74.949.6
Youtu-Parsing-Omni5BUnified parsing MLLM74.654.2
ChemDFM-X13BChemistry MLLM70.936.5
GPT-4o–Proprietary general MLLM36.83.4
Qwen2.5-VL-7B7BOpen-source general MLLM25.50.4
InternVL2.5-4B4BOpen-source general MLLM4.40.0

PDMX-Synth

ModelCategoryCER ↓SER ↓LER ↓
Youtu-Parsing-OmniUnified parsing MLLM22.7326.7333.20
LEGATOSpecialized OMR model23.3025.8031.70
GPT-5.6Proprietary general MLLM45.0254.7487.52
Gemini-3-ProProprietary general MLLM54.2668.1082.33
Logics-Parsing-OmniGeneral parsing MLLM72.4481.9381.34
GOT-OCR2.0General parsing MLLM93.9898.5497.76

Quick Start

1. Installation

git clone https://github.com/TencentCloudADP/youtu-parsing.git
cd youtu-parsing/youtu_parsing_omni

# choose one mode per Python environment (Python >= 3.10, CUDA GPUs for inference)
bash scripts/setup_env.sh                 # vLLM serving + plugin (transformers==5.2.0)
bash scripts/setup_env.sh --transformers  # Transformers inference (transformers==5.10.2)
  • vLLM serving and Transformers inference pin different transformers versions (5.2.0 and 5.10.2); install them into separate Python environments. peft must not be installed in the serving environment (the script removes it).
  • ffmpeg must be available for audio / video inputs.
# serving (vllm==0.19.0, transformers==5.2.0)
pip install -r requirements/vllm.txt
pip install transformers==5.2.0   # overrides vllm's transformers<5 pin
pip uninstall -y peft
pip install --no-deps ./vllm-plugin-vita-omni
# Transformers inference (separate env, transformers==5.10.2)
pip install -r requirements/transformers.txt

2. Serve with vLLM

MODEL=tencent/Youtu-Parsing-Omni DATA_ROOT=/path/to/media GPU=0 bash scripts/vllm.sh

This starts an OpenAI-compatible server on http://127.0.0.1:8000/v1 (served model name Youtu-Parsing-Omni) with the vllm-plugin-vita-omni model implementation and the runtime settings of the reported results.

VariableDefaultMeaning
MODELrequiredHugging Face model id (tencent/Youtu-Parsing-Omni) or a local checkpoint directory
DATA_ROOTrequiredthe only directory the server may read local media from (--allowed-local-media-path)
GPU0GPU the server runs on (CUDA_VISIBLE_DEVICES)
PORT8000port of the server
  • Engine settings: --max-model-len 65536 --max-num-batched-tokens 65536 --max-num-seqs 1, --gpu-memory-utilization 0.70, --limit-mm-per-prompt '{"image": 8, "video": 4, "audio": 8}', --seed 1234, bfloat16; vLLM defaults for everything else.
  • The server listens on 127.0.0.1 only and runs in the foreground (logs go to the terminal); Ctrl-C stops it. vLLM's internal port is 30000 (override with VLLM_PORT).
  • The script also exports the media token budgets read by the plugin (YOUTU_VITA_*, see vllm-plugin-vita-omni).
  • MODEL is passed to vllm serve as is: tencent/Youtu-Parsing-Omni is downloaded from the Hugging Face Hub (cached in HF_HOME); a local checkpoint directory works as well.

3. Parse a file

The media file must lie below DATA_ROOT.

python examples/infer_vllm.py --task document           --media /path/to/media/page.png
python examples/infer_vllm.py --task natural_image      --media /path/to/media/photo.jpg
python examples/infer_vllm.py --task graphics_chart     --media /path/to/media/chart.png
python examples/infer_vllm.py --task graphics_flowchart --media /path/to/media/flowchart.png
python examples/infer_vllm.py --task graphics_geometric --media /path/to/media/geometry.png
python examples/infer_vllm.py --task audio              --media /path/to/media/speech.wav
python examples/infer_vllm.py --task natural_video      --media /path/to/media/clip.mp4
python examples/infer_vllm.py --task textrich_video     --media /path/to/media/lecture.mp4

Use --api-base to target another server. The task prompts are listed in prompts/youtu_parsing_omni.json. Requests must put the media before the text and enable the parsing mode of the chat template shipped with the model (chat_template_kwargs = {"enable_thinking": false, "enable_parsing": true}), which renders the media token directly followed by the prompt, without role markers. As in the reported results, decoding is greedy, stops at <|image_pad|> / <|end_of_text|> (stop_token_ids, looked up through the server's /tokenize endpoint) and keeps special tokens, which carry the coordinates.

import requests
from openai import OpenAI

# token ids of <|image_pad|> and <|end_of_text|>
stop_token_ids = sorted(requests.post("http://127.0.0.1:8000/tokenize", timeout=60, json={
    "model": "Youtu-Parsing-Omni", "prompt": "<|image_pad|><|end_of_text|>",
    "add_special_tokens": False}).json()["tokens"])

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="EMPTY")
prompt = "Please perform end-to-end document parsing on the provided image. ..."  # see prompts json
response = client.chat.completions.create(
    model="Youtu-Parsing-Omni",
    messages=[{"role": "user", "content": [
        {"type": "image_url", "image_url": {"url": "file:///path/to/media/page.png"}},
        {"type": "text", "text": prompt},
    ]}],
    temperature=0.0,
    max_tokens=32768,
    extra_body={
        "chat_template_kwargs": {"enable_thinking": False, "enable_parsing": True},
        "skip_special_tokens": False,
        "min_tokens": 16,
        "stop_token_ids": stop_token_ids,
    },
)
print(response.choices[0].message.content)

Audio files are sent as audio_url. For videos send one file:// video_url below --allowed-local-media-path and add "mm_processor_kwargs": {"nframes": 64, "use_audio_in_video": true, "use_vision_in_video": true} to extra_body; the plugin then decodes the audio track together with the frames (see Video requests).

Transformers

Transformers inference requires transformers==5.10.2 (bash scripts/setup_env.sh --transformers, in an environment separate from vLLM). A minimal example is in examples/infer_transformers.py:

MODEL=tencent/Youtu-Parsing-Omni

python examples/infer_transformers.py --model $MODEL --task document           --media /path/to/media/page.png
python examples/infer_transformers.py --model $MODEL --task natural_image      --media /path/to/media/photo.jpg
python examples/infer_transformers.py --model $MODEL --task graphics_chart     --media /path/to/media/chart.png
python examples/infer_transformers.py --model $MODEL --task graphics_flowchart --media /path/to/media/flowchart.png
python examples/infer_transformers.py --model $MODEL --task graphics_geometric --media /path/to/media/geometry.png
python examples/infer_transformers.py --model $MODEL --task audio              --media /path/to/media/speech.wav
python examples/infer_transformers.py --model $MODEL --task natural_video      --media /path/to/media/clip.mp4
python examples/infer_transformers.py --model $MODEL --task textrich_video     --media /path/to/media/lecture.mp4

--task takes the same values as examples/infer_vllm.py and selects the prompt from prompts/youtu_parsing_omni.json; the media path is not restricted to a DATA_ROOT here. Hub ids are downloaded to --download-dir (default ~/.cache/youtu-parsing-omni). The model is loaded with trust_remote_code=True, which executes the Python code shipped with the checkpoint; when --model is a Hugging Face Hub id, pin a reviewed commit with --revision <commit-hash>. The reported results were produced with vLLM (scripts/vllm.sh).

Output format

The model answers with one fenced ```json block. Coordinates are encoded with dedicated tokens relative to a 0–1000 grid, e.g. "bbox": "<box><x_85><y_275><x_1000><y_1000></box>" (top-left x/y, bottom-right x/y); timestamps use HH:MM:SS. The top-level modality / subtype pair of each task is listed in the Introduction; image tasks return elements (plus reading_order for document-style outputs), audio and video tasks return temporal segments, and every output has a global_description.

{
  "modality": "image",
  "subtype": "natural_image",
  "elements": [
    {"id": "e_000", "category": "entity", "bbox": "<box><x_350><y_465><x_590><y_715></box>",
     "tag": "snake bookmark", "content": {"text": "", "caption": "A silver snake-shaped bookmark ..."}}
  ],
  "global_description": {"caption": "...", "narrative": "...", "scene": "..."}
}

OmniDocBench Evaluation

Inference runs in the vLLM environment; scoring uses the official OmniDocBench evaluator via Docker (ghcr.io/zeng-weijun/omnidocbench-eval:repro-ubuntu2204).

MODEL=tencent/Youtu-Parsing-Omni OMNIDOCBENCH=/path/to/OmniDocBench \
OUTPUT_DIR=outputs/omnidocbench_$(date +%Y%m%d_%H%M%S) bash scripts/eval_omnidocbench.sh
  • OMNIDOCBENCH: dataset directory containing images/ and OmniDocBench.json.
  • GPUS: GPUs to use (default: all visible), one vLLM server per GPU.
  • To resume, rerun with the existing OUTPUT_DIR path (not a new timestamp).
  • Outputs: predictions in <OUTPUT_DIR>/predictions/, final report in <OUTPUT_DIR>/results.md, logs in <OUTPUT_DIR>/logs/.

## Citation

If you find Youtu-Parsing-Omni useful in your research or applications, please consider citing our work:

```bibtex
@article{youtu-parsing-omni,
  title   = {Youtu-Parsing-Omni: One Encoder, One Schema, Every Modality},
  author={Tencent Youtu Lab},
  journal = {arXiv preprint arXiv:[TBD]},
  year    = {2026}
}

@article{youtu-parsing,
  title={Youtu-Parsing: Perception, Structuring and Recognition via High-Parallelism Decoding},
  author={Tencent Youtu Lab},
  year={2026},
  eprint={2601.20430},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2601.20430},
}

@article{youtu-vl,
  title={Youtu-VL: Unleashing Visual Potential via Unified Vision-Language Supervision},
  author={Tencent Youtu Lab},
  year={2026},
  eprint={2601.19798},
  archivePrefix={arXiv},
  primaryClass={cs.CV},
  url={https://arxiv.org/abs/2601.19798},
}

@article{youtu-llm,
  title={Youtu-LLM: Unlocking the Native Agentic Potential for Lightweight Large Language Models},
  author={Tencent Youtu Lab},
  year={2025},
  eprint={2512.24618},
  archivePrefix={arXiv},
  primaryClass={cs.CL},
  url={https://arxiv.org/abs/2512.24618},
}

Acknowledgements

We extend our gratitude to the following projects and communities that made Youtu-Parsing-Omni possible:

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
YoutuVITAForCausalLM
Ревизия весов
05d44d7

0 моделей