Nemotron OCR v2 利用合成数据实现快速多语言识别
Hugging Face Blog··作者 Hugging Face Blog
关键信息
该模型使用共享检测骨干网络,在识别和关系建模之间复用特征,从而在不牺牲准确率的情况下实现高速度。合成数据管道具有语言无关性,只要有可用字体和源文本即可扩展至任何文字系统。
资讯摘要
Nemotron OCR v2 通过利用合成数据而非真实世界标注图像,显著提升了多语言OCR性能。使用六种语言共1200万张合成图像,其归一化编辑距离(NED)从0.56–0.92降至0.035–0.069。该模型架构复用了共享骨干网络中的特征,用于文本识别和阅读顺序预测,单张A100 GPU可实现每秒34.7页的速度。
合成数据流水线基于改进版SynthDoG构建,生成精确的单词级、行级和段落级边界框。源文本来自mOSCAR——一个大型多语言语料库,确保各语言分布的真实性和多样性。这种方法避免了人工标注的高昂成本,同时在包括CJK和西里尔文在内的多种文字系统中保持高精度。
资讯正文
合成数据生成提供了一种摆脱这些权衡的方法。通过程序化地将文本渲染到图像上,我们既能获得网络抓取的数据规模,又能保证人工标注的标签纯净度。每个边界框、文字转录和阅读顺序关系都是精确已知的,因为我们自己放置了它们,并且可以完全控制训练集中出现的布局、字体样式和边缘情况。挑战在于真实感:模拟多样化的布局和真实的文档场景很困难,但只要使用合适的渲染引擎,并在字体、颜色、背景、增强和布局结构方面进行充分随机化,就足以构建出足够的不变性,使基于合成数据训练的模型能够很好地泛化到真实文档上。
采用这种方法,我们开发了Nemotron OCR v2,这是一个既准确又快速的多语言OCR模型。准确性由数据驱动:在六种语言中,1200万张合成训练图像使非英语语言的NED(归一化编辑距离)分数从0.56–0.92降至0.035–0.069。速度则由架构驱动:一个共享的目标检测主干网络,其特征被识别模块和关系模型共同使用,消除了冗余计算,使得单张A100 GPU每秒可处理34.7页文档。该合成数据流水线足够通用,可以扩展到任何拥有字体和源文本的语言。
该数据集可在nvidia/OCR-Synthetic-Multilingual-v1公开获取,模型则可在nvidia/nemotron-ocr-v2找到。你也可以直接在浏览器中访问Nemotron OCR v2的演示页面尝试该模型。
Nemotron OCR v1是一个强大的英文OCR模型,但它并未针对多语言训练,因此在面对其他语言时无法准确读取文档。在我们的SynthDoG基准测试中,v1对日语、韩语、俄语和中文的NED分数介于0.56至0.92之间。在这种错误率下,模型输出与真实值几乎没有相似之处。
部分问题源于字符集限制。v1模型仅支持855个字符,根本无法覆盖CJK(中文、日文、韩文)或西里尔字母等脚本。我们曾进行一项实验,将字符集扩大到14,244个字符以涵盖所有目标语言。这带来了一些改善,但由于缺乏实际包含这些字符的训练数据,提升效果有限。模型理论上可以输出正确的字符,但它从未学过这些字符的外观。瓶颈在于数据,而非架构。
收集并标注六种语言数百万张现实世界图像,同时标记单词级、行级和段落级边界框以及阅读顺序图,成本将极其高昂。我们需要一种不同的方法。
我们的关键洞察是,多语言OCR训练数据的核心配方本质上与语言无关。你需要两个要素:
- 来自目标语言的真实分布的源文本
- 能够渲染该语言脚本的字体
有了这两个条件,合成渲染器就能免费生成无限量的带注释训练图像,且在每一层级粒度上都具备像素级精确的真实标签。
构建一个快速的多语言OCR模型:使用合成数据
我们使用的源文本来自mOSCAR,这是一个大规模的多语言网络语料库,涵盖拉丁文、CJK(中文、日文、韩文)、西里尔文、阿拉伯文、天城文和泰文等多种文字系统的163种语言子集。从mOSCAR中采样可获得符合每种语言词汇分布、句子长度和字符频率真实情况的文本,这比词典词汇或机器生成的文本更具代表性。
我们的处理流程建立在Donut项目中的SynthDoG(合成文档生成器)的一个大幅修改版本之上。原始的SynthDoG能生成带有页面级文本标签的文档图像,我们在此基础上进行了多项重要扩展。
多层次边界框。标准的SynthDoG仅提供页面级别的文本标注。我们的流程同时生成三个层级的像素级精确标注:单词、行和段落。每个层级都包含轴对齐的边界框和四点四边形,并通过索引关联单词与其父级行和段落。
阅读顺序的关系图谱。大多数公开可用的OCR数据集不包含阅读顺序标注,这使得训练能够理解文档结构而不仅仅是检测文本的模型变得困难。我们借鉴了HierText数据集的做法,该数据集率先引入了分层(单词、行、段落)标注及其结构关系。我们的合成流程为每个样本生成一个关系图,明确标识哪些单词组成某一行,哪些行组成某一自然段,以及它们应按何种顺序阅读。这是Nemotron OCR v2中关系模型组件的核心功能,它能有效处理多列布局、表格等复杂结构,避免简单自上而下、自左向右合并导致的输出混乱。
多样化的版式模式。我们设计了一组版式模板,覆盖多种现实世界文档场景:多栏连续文本、散乱的场景文本风格单词、垂直排列的文本列(对日文和中文尤为重要)、带标题和边框的表格、带点线引导符的目录页、类似PowerPoint幻灯片的页面,以及带有标题和正文的Word文档样式页面。每次生成随机选择一种版式模式,使模型在训练过程中接触到广泛的文档结构。
针对CJK语言的行级识别。在多语言版本的设计中,一个重要决策是从词级识别转向行级识别。中文和日文单词之间没有空格分隔,因此不存在自然的词边界用于切分;韩语则空格使用不一致。通过以行为单位进行识别,识别器可以自然地处理这些语言,无需额外的词分割步骤。英文版本仍沿用词级识别,因其更合适。
开源字体池。我们从Google Fonts和Noto系列等开源字体集合中,为每种语言收集了165至1258种独特字体,涵盖衬线体、无衬线体、手写体、装饰体及可变字重等多种风格。
增强。每页渲染后都会经过一系列随机增强操作,以提高模型的泛化能力。在文本层面,这些增强包括边框/轮廓效果、阴影、立体感以及在字形边缘添加散点噪声。自定义效果通过随机场调节笔画透明度和笔画宽度变化。在图像层面,我们应用形态学操作(膨胀、腐蚀)、中值模糊和弹性扭曲,并通过最小文本高度进行控制,避免破坏小字号文本。在整页层面,流水线还会应用对比度和亮度抖动、高斯模糊和运动模糊、颜色偏移、阴影叠加以及加性高斯噪声。背景可以是图像纹理或纯色,也可选择在单个单词或行后添加半透明色调矩形。
以下是六种语言的原始合成图像示例。每张图像均采用随机布局模式、字体选择、背景和增强堆栈生成:
以下是一个带注释的示例,展示了层级结构。虚线表示段落边界,着色区域显示行级分组(按段落着色),箭头指示段落内各行之间的阅读顺序。
以下是跨多种语言的更多带注释示例,展示了该流水线生成的布局、书写系统和增强风格范围。每个子标题说明了该示例突出的特点:
整个数据集包含六种语言共1220万条样本:
下载:nvidia/OCR-Synthetic-Multilingual-v1
我们描述的流水线设计为通用架构。本次发布选择了六种语言,但新增一种语言只需提供覆盖该书写系统的源文本和字体,无需修改模型架构或人工标注。渲染流水线可在单台机器上每天生成数百万张带标注的页面,使得快速构建新语言的大规模训练集成为可能。随着mOSCAR覆盖163种语言子集,以及Noto字体家族支持几乎所有正在使用的Unicode书写系统,这种方案具备广泛扩展的清晰路径。
Nemotron OCR v2 是一个基于此合成数据及约68万张真实世界图像训练的生产就绪、可商用OCR模型。它采用三组件端到端架构:
- 文本检测器(RegNetX-8GF骨干网络):定位图像中的文本区域
- 文本识别器(预归一化Transformer):转录检测到的区域
- 关系模型:预测逻辑分组、阅读顺序和版式关系
提供两种变体:
与其他OCR流水线的重要区别在于:Nemotron OCR v2 多语言版本是一个统一模型,能同时处理五种语言。您无需提前知道文档语言或选择特定语言版本。相比之下,PP-OCR v5(PaddleOCR)和OpenOCR等流水线工具提供针对每种语言的专用模型,虽然在其目标语言上表现良好,但需要先进行语言检测,或退回到性能整体较弱的基础版本。
该架构基于FOTS(Fast Oriented Text Spotting)设计,将检测与识别统一到一个网络中,并共享卷积主干。检测主干(RegNetX-8GF)对输入图像进行一次处理,生成特征图,供三个组件复用。文本识别器接收来自检测区域的校正特征裁剪,并使用小型Transformer解码。关系模型则利用来自同一特征图的每区域嵌入,通过紧凑的Transformer编码器进行推理。由于昂贵的卷积计算仅执行一次,下游组件带来的开销极小。这种特征复用正是模型高效性的来源,使其在单张A100 GPU上实现34.7页/秒的处理速度。
在SynthDoG生成的页面上的归一化编辑距离(越低越好)。v2多语言模型在合成数据上训练后,将所有目标语言的NED分数从无法使用的水平降至接近零:
请注意,“PaddleOCR(专用)”列使用的是针对特定语言的模型(例如韩语使用韩语模型),这是当你已知语言时的最佳情况。Nemotron OCR v2多语言模型即使在这些专用变体上也表现更优,且仅用一个模型即可覆盖全部语言。
在OmniDocBench基准测试中——这是一个包含英文、中文和混合语言内容的真实文档OCR测试集——Nemotron OCR v2多语言模型以34.7页/秒的速度达到具有竞争力的准确率,比PaddleOCR v5快超过28倍:
NED分数(越低越好)。速度是在单张A100 GPU上使用v2批处理流水线测量的。所有对比模型均采用默认检测器+识别器流水线进行评测,禁用了可选扩展功能。
关于不同版本速度差异的说明:v1和v2英文版本比v2多语言版本更快,因为多语言识别器更大(6层Transformer,词汇表为14,244个词元 vs 3层,词汇表为855个词元)。识别器会处理每一个检测到的文本区域,因此更重的识别器直接影响密集文本页面的吞吐量。v2英文版略快于v1,是因为主干网络从RegNetY更换为了RegNetX。
- 模型:nvidia/nemotron-ocr-v2
- 演示:nvidia/nemotron-ocr-v2 Space
- 数据集:nvidia/OCR-Synthetic-Multilingual-v1
- 许可证:NVIDIA Open Model License(模型),CC-BY-4.0(数据集)
感谢Bo Liu、Théo Viel和Mike Ranzinger为本工作贡献代码、策略及额外验证。
来源与参考
收录于 2026-04-18