☰
Youtu-Parsing-Omni快速上手:从环境部署到解析第一份文档的完整指南
2026/11/4 11:56:23 网站建设 项目流程

Youtu-Parsing-Omni快速上手:从环境部署到解析第一份文档的完整指南

【免费下载链接】Youtu-Parsing-Omni项目地址: https://ai.gitcode.com/tencent_hunyuan/Youtu-Parsing-Omni

Youtu-Parsing-Omni 是腾讯优图开源的 5B 参数全模态文档解析模型,一个模型即可将文档页、自然图像、图表、几何图、音频和视频解析为统一的结构化 JSON,在 OmniDocBench v1.6 上取得 96.96 的总体分。本文带你从零完成环境部署、启动解析服务,并成功解析出第一份文档。

🧩 认识 Youtu-Parsing-Omni:一个模型搞定 8 类解析任务

与其他 OCR 工具只做文字识别不同,Youtu-Parsing-Omni 采用单一全模态编码器 + 统一 JSON 输出(OmniSchema)的设计,8 类输入只需切换一个--task参数:

输入类型--task参数主要输出内容
文档页document带 bbox 的版面元素、文本 / LaTeX 公式 / 表格、阅读顺序
自然图像natural_image实体与文字(带 bbox)、标签、描述
统计图表graphics_chartMarkdown 表格、注释、图题
流程图graphics_flowchartMermaid 流程图代码
几何图形graphics_geometric点、线、弧、形状与几何关系
音频audio分段时间戳、说话人、ASR 文本、声学事件
自然视频natural_video动作片段、交互、镜头运动、音轨
富文本视频textrich_videoOCR + ASR 片段与整段视频的 Markdown 报告

模型规模仅 5B 参数(bfloat16),却能比肩甚至超越部分 30B+ 的通用模型——这正是"快速部署、高性价比"的来源。

✅ 环境要求与快速环境配置

运行前提:

  • Python >= 3.10
  • NVIDIA CUDA GPU
  • ffmpeg(音频/视频输入必需)

关键约束:官方提供两种推理方式,各自锁定不同的transformers版本,必须装在两个独立的 Python 环境中:

推理方式transformers 版本特点
vLLM 服务部署5.2.0高吞吐、OpenAI 兼容接口,推荐
Transformers 直接推理5.10.2更简单,适合本地单卡验证

一键安装步骤:

git clone https://gitcode.com/tencent_hunyuan/Youtu-Parsing-Omni cd Youtu-Parsing-Omni bash scripts/setup_env.sh # 方式一:vLLM 服务环境(transformers==5.2.0) bash scripts/setup_env.sh --transformers # 方式二:Transformers 推理环境(transformers==5.10.2)

💡 注意:vLLM 服务环境中peft必须被移除(安装脚本已自动处理),否则服务无法启动。

手动安装(vLLM 方式):

pip install -r requirements/vllm.txt pip install transformers==5.2.0 pip uninstall -y peft pip install --no-deps ./vllm-plugin-vita-omni

🚀 三步启动 vLLM 解析服务

服务化部署只需设置变量并执行一条命令:

MODEL=tencent/Youtu-Parsing-Omni DATA_ROOT=/path/to/media GPU=0 bash scripts/vllm.sh
变量默认值含义
MODEL必填模型 ID 或本地 checkpoint 目录
DATA_ROOT必填服务端唯一允许读取的媒体文件根目录
GPU0指定运行 GPU(CUDA_VISIBLE_DEVICES)
PORT8000服务端口

启动成功后,服务监听在http://127.0.0.1:8000/v1,完全兼容 OpenAI API,模型名为Youtu-Parsing-Omni。官方已固定好与论文结果一致的推理参数(bfloat16、--max-model-len 65536、--gpu-memory-utilization 0.70),无需自行调参。

📄 解析你的第一份文档

将文档页面图片放入DATA_ROOT目录下,然后执行:

python examples/infer_vllm.py --task document --media /path/to/media/page.png

其他任务同理,只改--task和--media:

python examples/infer_vllm.py --task audio --media /path/to/media/speech.wav python examples/infer_vllm.py --task natural_image --media /path/to/media/photo.jpg python examples/infer_vllm.py --task textrich_video --media /path/to/media/lecture.mp4

直接用 OpenAI API 调用时的 3 个要点:

  1. messages中媒体内容必须排在文本之前;
  2. 在extra_body中开启解析模式:chat_template_kwargs = {"enable_thinking": false, "enable_parsing": true},该模板会把媒体 token 与任务提示直接拼接(见 chat_template.jinja);
  3. 保持skip_special_tokens = False——坐标信息就承载在特殊 token 中,丢弃后 bbox 会缺失。

🔁 备选路线:Transformers 直接推理

不想起服务?在transformers==5.10.2的环境中一条命令即可:

MODEL=tencent/Youtu-Parsing-Omni python examples/infer_transformers.py --model $MODEL --task document --media /path/to/media/page.png
  • 推理时以trust_remote_code=True加载,执行的就是本仓库随模型一起发布的 Python 代码(如 modeling_youtu_vita.py);
  • 使用 Hub 模型名时,建议用--revision <commit-hash>固定经过审查的版本;
  • 模型权重会下载到--download-dir(默认~/.cache/youtu-parsing-omni)。

🧾 读懂输出:结构化 JSON 怎么解析

模型永远回答一个 JSON 代码块,示例(自然图像任务):

{ "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"} ], "global_description": {"caption": "..."} }

解析输出的 4 个要点:

要素说明
bbox专用 token 编码,基于 0–1000 归一化网格,如<x_85><y_275>表示左上角 x/y
时间戳统一HH:MM:SS格式
elements/segments图像任务返回elements(文档类另有reading_order);音频/视频返回按时间排列的segments
global_description所有任务都包含的全局描述(caption / narrative / report)

解码采用贪心策略(temperature=0),在EOS/<|end_of_text|>处停止,因此输出稳定可直接入库。

📁 项目文件导航:快速定位核心代码

文件作用
config.json模型主配置:hidden_size 2560、40 层 decoder、model_type: youtu_vita
modeling_youtu_vita.py模型实现(YoutuVITAForCausalLM)
configuration_youtu_vita.py配置类(AutoConfig)
processing_youtu_vita.py多模态处理器(AutoProcessor)
image_processing_youtu_vita.py图像预处理
video_processing_youtu_vita.py视频帧处理
feature_extraction_youtu_vita.py音频特征提取(log-mel,128 bins)
tokenization_youtu_vita.py、tokenizer.json分词器与词表
chat_template.jinja含解析模式的对话模板
generation_config.json生成参数(EOS 等)
model.safetensors5B 模型权重

🛠 常见问题速查

现象原因与解决办法
两种模式互相干扰 / 版本冲突vLLM(transformers 5.2.0)与 Transformers 推理(5.10.2)必须分开装在两个 Python 环境
服务启动报peft相关错误vLLM 服务环境不允许安装peft,执行pip uninstall -y peft
音频/视频解析失败系统缺少ffmpeg,先安装后再试
提示找不到本地媒体文件文件必须位于DATA_ROOT之下,否则服务端拒绝读取
结果里没有坐标请求时误开了skip_special_tokens,需设为False
多卡想并发跑评测用GPUS变量指定多卡,官方评测脚本会为每张卡各起一个 vLLM 服务

写在最后

从git clone到解析出第一份文档,整个过程不到 10 分钟:配置一个 Python 环境 → 启动 vLLM 服务 → 运行一条--task document命令。拿到结构化 JSON 后,你可以把它直接接入自己的知识库、RAG 流水线或文档数字化系统。更多任务提示词、评测脚本与结果细节,欢迎继续深入 README.md 查阅。

【免费下载链接】Youtu-Parsing-Omni项目地址: https://ai.gitcode.com/tencent_hunyuan/Youtu-Parsing-Omni

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询