nvidia/NVIDIA-Nemotron-Parse-2.0 · Hugging Face
摘要
NVIDIA 发布 Nemotron Parse 2.0,这是一个文档图像解析模型,可将扫描的 PDF 和图像转换为带有布局、边界框和阅读顺序的结构化文本,并增加了多语言 OCR 改进和图表感知解析功能。
查看缓存全文
缓存时间: 2026/08/06 16:38
nvidia/NVIDIA-Nemotron-Parse-2.0 · Hugging Face 来源:https://huggingface.co/nvidia/NVIDIA-Nemotron-Parse-2.0
模型概述
描述:
NVIDIA Nemotron Parse 2.0 可将文档图像转换为结构化的机器可读表示,包含文本、布局类别、边界框和阅读顺序信息。给定红绿蓝(RGB)文档图像和任务提示,模型会为标题、段落、说明文字、表格、图表、页眉、页脚、脚注、图片和参考文献条目等文档元素生成格式化文本和空间标注。与 NVIDIA Nemotron Parse v1.2 相比,NVIDIA Nemotron Parse 2.0 增加了约 2 万 token 的词表扩展,以更高效地支持多语言;新增了图表感知的文档解析功能(通过 <chart> 类 token 实现);并更新了面向图表/表格密集型文档的训练覆盖。NVIDIA Nemotron Parse 2.0 面向文档理解、信息检索、数据提取和多模态数据整理工作流。该模型可用于商业或非商业用途。
许可/使用条款:
管辖条款:您使用此模型受 NVIDIA 开放模型许可协议(https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/)的约束。使用此模型附带的 tokenizer 受 CC-BY-4.0 许可(https://creativecommons.org/licenses/by/4.0/)的约束。
部署地区:
全球
使用场景:
NVIDIA Nemotron Parse 2.0 专为构建文档智能、检索增强生成(RAG)、数据整理、信息提取和智能体 AI 应用的开发者和团队设计。它可用于将扫描或渲染的 PDF、演示幻灯片、表单、报告、表格以及混合内容文档页面转换为结构化输出,以支持下游索引、检索、分析、模型训练数据创建和人工审核流程。
能力亮点:
- 扩展的多语言 OCR 支持,在 CJK 和印度系文字文档文本方面有显著提升。
- 改进了文档页面中包含非正式手写或笔记类内容的手写文本提取。
- 图表转表格解析:可识别图表区域并将可见图表信息转换为结构化文本,供下游使用。
- 改进的表格处理,包括更强的表格检测、结构恢复和文本提取,尤其适用于表格密集型文档。
发布日期:
Hugging Face 2026年8月3日,通过 URL(https://huggingface.co/nvidia/NVIDIA-Nemotron-Parse-2.0)
参考文献:
- Hugging Face Transformers mBART 文档(https://huggingface.co/docs/transformers/en/model_doc/mbart)
- NVIDIA C-RADIO(https://huggingface.co/nvidia/C-RADIO)
模型架构:
**架构类型:**基于 Transformer 的视觉编码器-解码器模型
网络架构:
- 视觉编码器:基于 NVIDIA C-RADIO 的 ViT-H 模型
- 适配层:1D 卷积和归一化层,在解码前压缩视觉隐序列
- 解码器:包含 10 个块的 mBART 解码器
- 辅助预测头:一个训练时的解码器预测头单独保存在
auxiliary_prediction_heads.safetensors.extra中,用于未来的多 token 预测研究。标准生成使用绑定的解码器输入/输出嵌入;默认的model.safetensors、Transformers 示例和 vLLM 示例均不加载此辅助头。 - Tokenizer:该 tokenizer 包含 72,256 个条目,与 NVIDIA Nemotron Parse v1.2 相比扩展了约 2 万 token,以提高多语言的 token 效率。模型还包含任务/控制 token,如
<parse>,<bbox>,<table>,<image>,以及图表类 token<chart>。使用此模型附带的 tokenizer 受 CC-BY-4.0 许可(https://creativecommons.org/licenses/by/4.0/)的约束。 - 参数数量:< 1B
输入:
**输入类型:**图像、文本
输入格式:
- 图像:红绿蓝(RGB)
- 文本:提示字符串
输入参数:
- 图像:二维(2D)
- 文本:一维(1D)
与输入相关的其他属性:
- 推荐最大输入分辨率(宽、高):1664, 2048
- 推荐最小输入分辨率(宽、高):1024, 1280
- 通道数:3
- 提示格式:由支持的 control token 组成的任务提示。默认提示提取边界框、语义类别和 Markdown 格式文本:
<parse><bbox>。当检测到图表内容时,模型可以使用<chart>输出图表区域。
输出:
**输出类型:**文本
**输出格式:**字符串
**输出参数:**一维(1D)
与输出相关的其他属性: Nemotron Parse 2.0 返回一个字符串,编码文档文本、语义元素类别和边界框。本仓库中的后处理工具可以将生成的边界框转换回原始图像坐标,并在支持的情况下将表格或图表相关文本转换为 LaTeX、HTML、Markdown、JSON 或 CSV。我们的 AI 模型设计用于和/或优化为在 NVIDIA GPU 加速系统上运行。通过利用 NVIDIA 硬件和软件框架,与仅 CPU 的解决方案相比,该模型可实现更快的训练和推理时间。
快速开始
在环境中安装依赖
您可以使用公共镜像 nvcr.io/nvidia/pytorch:25.03-py3,并在其上安装以下库版本:
pip install accelerate==1.12.0
pip install albumentations==2.0.8
pip install transformers==5.6.1
pip install timm==1.0.22
pip install open_clip_torch==3.2.0
pip install einops==0.8.1
使用示例
import torch
from PIL import Image, ImageDraw
from transformers import AutoModel, AutoProcessor, AutoTokenizer, GenerationConfig
from postprocessing import extract_classes_bboxes, transform_bbox_to_original, postprocess_text
# 加载模型和处理器
model_path = "nvidia/NVIDIA-Nemotron-Parse-2.0" # 或使用本地路径
device = "cuda:0"
model = AutoModel.from_pretrained(
model_path,
trust_remote_code=True,
torch_dtype=torch.bfloat16
).to(device).eval()
tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
# 加载图像
image = Image.open("path/to/your/image.jpg")
task_prompt = "<parse><bbox>"
# task_prompt = "<parse><bbox><chart>"
# 处理图像
inputs = processor(images=[image], text=task_prompt, return_tensors="pt", add_special_tokens=False).to(device)
generation_config = GenerationConfig.from_pretrained(model_path, trust_remote_code=True)
# 生成文本
outputs = model.generate(**inputs, generation_config=generation_config)
# 解码生成的文本
generated_text = processor.batch_decode(outputs, skip_special_tokens=True)[0]
后处理
from PIL import ImageDraw
from postprocessing import extract_classes_bboxes, transform_bbox_to_original, postprocess_text
classes, bboxes, texts = extract_classes_bboxes(generated_text)
bboxes = [transform_bbox_to_original(bbox, image.width, image.height) for bbox in bboxes]
# 指定后处理输出格式
table_format = "latex" # latex | HTML | markdown | json | json_hierarchical | csv
text_format = "markdown" # markdown | plain
blank_text_in_figures = False # 设置为 True 以移除 'Picture' 类中的文本
texts = [
postprocess_text(
text,
cls=cls,
table_format=table_format,
text_format=text_format,
blank_text_in_figures=blank_text_in_figures,
)
for text, cls in zip(texts, classes)
]
for cl, bb, txt in zip(classes, bboxes, texts):
print(cl, ": ", txt)
draw = ImageDraw.Draw(image)
for bbox in bboxes:
draw.rectangle((bbox[0], bbox[1], bbox[2], bbox[3]), outline="red")
表格输出格式
table_format 支持的值:latex | HTML | markdown | json | json_hierarchical | csv
使用 vLLM 进行推理
已测试的 vLLM 版本: v0.20-v0.26。当使用包含 Nemotron Parse remote-code 支持的 vLLM 构建版本时,Nemotron Parse 2.0 可以通过 vLLM 提供服务。在 A100 和 A10 系统上,我们建议使用 --attention-backend=TRITON_ATTN 运行 vllm serve。在服务镜像上安装以下依赖:
pip install albumentations timm open_clip_torch einops
此导出保持 lm_head.weight 与 decoder.embed_tokens.weight 绑定,不会实体化重复的输出头张量。当前的 vLLM 0.20 Nemotron Parse 构建版本在未打补丁的情况下会创建单独的输出头。如果您的 vLLM 构建版本尚不支持绑定的 Nemotron Parse 输出嵌入,请获取随附的运行时补丁,并在启动 vLLM 之前将其添加到 PYTHONPATH:
PATCH_ROOT=$(python - <<'PY'
from huggingface_hub import snapshot_download
print(snapshot_download(
"nvidia/NVIDIA-Nemotron-Parse-2.0",
allow_patterns="vllm_tied_patch/sitecustomize.py",
))
PY
)
export PYTHONPATH="${PATCH_ROOT}/vllm_tied_patch:${PYTHONPATH}"
vLLM 推理示例
选项 1:端到端 Python 推理
from vllm import LLM, SamplingParams
from PIL import Image
def main():
sampling_params = SamplingParams(
temperature=0,
top_k=1,
repetition_penalty=1.1,
max_tokens=9000,
skip_special_tokens=False,
)
llm = LLM(
model="nvidia/NVIDIA-Nemotron-Parse-2.0",
max_num_seqs=64,
limit_mm_per_prompt={"image": 1},
dtype="bfloat16",
trust_remote_code=True,
)
image = Image.open("<path_to_image>")
prompts = [
{
"prompt": "<parse><bbox>",
"multi_modal_data": {
"image": image,
},
},
{
"encoder_prompt": {
"prompt": "<parse>",
"multi_modal_data": {
"image": image,
},
},
"decoder_prompt": "<bbox>",
},
]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Decoder prompt: {prompt!r}, Generated text: {generated_text!r}")
if __name__ == "__main__":
main()
选项 2:vLLM serve
vllm serve nvidia/NVIDIA-Nemotron-Parse-2.0 \
--dtype bfloat16 \
--max-num-seqs 8 \
--limit-mm-per-prompt '{"image": 1}' \
--trust-remote-code \
--port 8000 \
--chat-template chat_template.jinja
然后通过 OpenAI 兼容 API 运行推理:
import base64
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
)
with open("<path_to_image>", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode("utf-8")
prompt_text = "<parse><bbox>"
resp = client.chat.completions.create(
model="nvidia/NVIDIA-Nemotron-Parse-2.0",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt_text,
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{img_b64}",
},
},
],
}
],
max_tokens=9000,
temperature=0.0,
extra_body={
"repetition_penalty": 1.1,
"top_k": 1,
"skip_special_tokens": False,
},
)
print(resp.choices[0].message.content)
提示和 logits 处理器选项
推荐的默认提示以 Markdown 格式提取边界框、语义类别和文本:
<parse><bbox>
若要提取嵌入图像或图形中显示的文本,请使用:
<parse><bbox><image>
如果只需要边界框和类别,请使用:
<parse>
本仓库包含两个可选的 logits 处理器:
NemotronParseRepetitionStopProcessor:在生成过程中检测重复的 n-gram,当重复的结构化输出表明可能出现幻觉时,强制模型关闭坐标块。NemotronParseTableInsertionLogitsProcessor:强制每个块遵循表格结构,这在模型处理表格图像裁剪时可能很有用。
请参阅 example_with_processor.py 了解 Python 模型用法。对于 vLLM,请将 logitsprocs/ 导出到 PYTHONPATH,并将所需的处理器传递给 vllm serve,例如:
vllm serve nvidia/NVIDIA-Nemotron-Parse-2.0 \
--dtype bfloat16 \
--max-num-seqs 4 \
--limit-mm-per-prompt '{"image": 1}' \
--attention-backend=TRITON_ATTN \
--trust-remote-code \
--logits-processors nemotron_parse_vllm_logitprocs:NemotronParseTableInsertionLogitsProcessor \
--port 8000
使用 vLLM OpenAI 兼容服务器的推理示例可在 vllm_example.py 中找到。
软件集成:
运行时引擎:
- Transformers
- vLLM
支持的硬件微架构兼容性:
- NVIDIA Ampere
- NVIDIA Blackwell
- NVIDIA Hopper
- NVIDIA Turing
支持的操作系统:
- Linux
将基础模型和微调模型集成到 AI 系统中时,需要使用特定于用例的数据进行额外测试,以确保安全有效的部署。遵循 V 模型方法论,在单元和系统层面进行迭代测试和验证,对于降低风险、满足技术和功能要求,以及在部署前确保符合安全和道德标准至关重要。
模型版本:
Nemotron Parse 2.0
训练、测试和评估数据集:
训练数据集
数据模态:
- 图像
- 文本
图像训练数据规模:
- 100 万到 10 亿张图像
文本训练数据规模:
- 10 亿到 10 万亿 tokens
数据集采集方法:
- 混合:自动化、人工、合成
数据集标注方法:
- 混合:自动化、人工、合成
属性: 训练集包含数百万个图像-文本项,聚合自大型文档、表格和布局数据集。数据由文档页面和表格图像配对 OCR 文本、边界框和布局标签组成。来源包括渲染的数字文档、科学论文、PDF、维基百科风格页面,以及合成的文档、表格、单词和字符渲染。标注来自 OCR 和布局模型、第三方 OCR 服务、合成生成流程和人工标注。
测试和评估数据集
测试和评估使用内部和公共文档理解基准,涵盖 OCR 质量、布局结构、表格解析、阅读顺序和视觉定位。数据集采集和标注方法为混合式,包括自动化、模型派生、人工标注和合成标注。
评估结果
基准覆盖:
- ParseBench 从文本保真度、语义格式
相似文章
使用合成数据构建快速多语言OCR模型
NVIDIA推出Nemotron OCR v2,一个使用合成数据生成技术构建的快速多语言OCR模型。该模型通过采用统一的基于FOTS的架构,在检测、识别和关系组件之间实现特征复用,在单个A100 GPU上达到34.7页/秒的性能。
nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-BF16 · Hugging Face
NVIDIA 发布了 Nemotron-Labs-3-Puzzle-75B-A9B,这是一种从 Nemotron-3-Super 衍生而来的压缩混合 MoE 大型语言模型,实现了约 2 倍更高的服务器吞吐量和更高的并发性,同时在推理、编码和长上下文基准测试中保持强劲的准确度。
nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16 · Hugging Face
NVIDIA发布Nemotron-3-Ultra-550B-A55B,这是一个5500亿参数(550亿活跃参数)的前沿大语言模型,采用混合LatentMoE架构,结合Mamba-2、MoE和注意力层,支持高达100万令牌的上下文长度和可配置的推理模式。它支持11种语言,并针对复杂的智能体工作流、长上下文分析和高精度推理进行了优化。
nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
NVIDIA 发布了 Nemotron-Labs-3-Puzzle-75B-A9B,它是 Nemotron-3-Super 的压缩版本,推理效率更高,基准测试性能强劲。
nvidia/nemotron-3.5-asr-streaming-0.6b
NVIDIA 发布 Nemotron 3.5 ASR,这是一个6亿参数的多语言流式语音识别模型,支持40种语言区域,采用缓存感知的FastConformer-RNNT架构实现低延迟转录。该模型支持可配置的块大小,并已在OpenMDW-1.1许可证下准备商业化使用。