使用合成数据构建快速多语言OCR模型
摘要
NVIDIA推出Nemotron OCR v2,一个使用合成数据生成技术构建的快速多语言OCR模型。该模型通过采用统一的基于FOTS的架构,在检测、识别和关系组件之间实现特征复用,在单个A100 GPU上达到34.7页/秒的性能。
查看缓存全文
缓存时间: 2026/04/20 17:27
使用合成数据构建快速多语言OCR模型
来源: https://huggingface.co/blog/nvidia/nemotron-ocr-v2 返回文章 (https://huggingface.co/blog)
Ryan Chesler的头像 (https://huggingface.co/emelryan)
- 问题:数据而非架构 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#the-problem-data-not-architecture)
- 通用合成数据管道 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#a-generic-synthetic-data-pipeline)
- 文本:mOSCAR (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#text-moscar)
- 渲染:改进型SynthDoG (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#rendering-modified-synthdog)
- 数据外观 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#what-the-data-looks-like)
- 数据集概览 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#dataset-at-a-glance)
- 可扩展性 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#extensibility)
- 模型:Nemotron OCR v2 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#the-model-nemotron-ocr-v2)
- 模型快速的原因 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#why-the-model-is-fast)
- 该架构基于FOTS(快速定向文本定位)设计,将检测和识别统一在单个网络中,共享卷积骨干网络。检测骨干网络(RegNetX-8GF)处理输入图像一次,生成的特征图被所有三个组件重用。文本识别器接收来自检测区域的校正特征裁剪,并通过小型Transformer进行解码。关系模型使用紧凑的Transformer编码器对源自相同特征图的各区域嵌入进行推理。因为昂贵的卷积运算仅进行一次,下游组件只需增加极少开销。这种特征重用是模型效率的驱动力,在单个A100 GPU上实现34.7页/秒的处理速度。(https://huggingface.co/blog/nvidia/nemotron-ocr-v2#the-architecture-is-based-on-the-fotshttpsarxivorgabs180101671-fast-oriented-text-spotting-design-which-unifies-detection-and-recognition-into-a-single-network-with-a-shared-convolutional-backbone-the-detection-backbone-regnetx-8gf-processes-the-input-image-once-and-produces-feature-maps-that-are-reused-by-all-three-components-the-text-recognizer-receives-rectified-feature-crops-from-detected-regions-and-decodes-them-with-a-small-transformer-the-relational-model-reasons-over-per-region-embeddings-derived-from-the-same-feature-maps-using-a-compact-transformer-encoder-because-the-expensive-convolutional-pass-happens-only-once-the-downstream-components-add-minimal-overhead-this-feature-reuse-is-what-drives-the-models-efficiency-enabling-347-pagessecond-on-a-single-a100-gpu)
- 结果:合成数据的优势 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#results-what-synthetic-data-buys-you)
- 多语言基准(SynthDoG) (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#multilingual-benchmark-synthdog)
- 真实世界基准(OmniDocBench) (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#real-world-benchmark-omnidocbench)
- 链接 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#links)
- 致谢 (https://huggingface.co/blog/nvidia/nemotron-ocr-v2#acknowledgments)
训练高质量的OCR模型需要大量标注的图像-文本对:包含精确边界框、转录内容,理想情况下还要包含单词、行和段落级别阅读顺序信息的图像。数据采集的每种方法都需要权衡利弊。现有的ICDAR和Total-Text等基准数据集具有干净的标签但规模有限,通常只有数万张图像,且偏向于英文和中文。手工标注产生最高质量的标签,但成本高且速度慢,对于构建强大的多语言模型所需的百万级图像规模来说不切实际。网络爬取的PDF提供了巨大的数据量,但嵌入的文本通常质量参差不齐:字符被记录为单个笔划而非单词、文本被烘焙到图像中而无法提取、或者扫描的页面应用了弱OCR模型且生成的文本层不可靠。你可以从网络PDF中提取有用信息,但需要大量过滤工作,且结果永远不会完全干净。
合成数据生成提供了一种解决这些权衡的办法。通过以程序方式将文本渲染到图像上,我们既获得了网络爬取的规模,又获得了手工标注的标签纯度。每个边界框、转录和阅读顺序关系都被精确已知,因为我们是放置它们的,我们对训练集中出现哪些布局、字体样式和边界情况有完全的控制。挑战在于真实性。模拟多样化的布局和真实的文档场景很困难,但通过合适的渲染引擎和在字体、颜色、背景、增强和布局结构上的强随机化,可以建立足够的不变性,使在合成数据上训练的模型能够很好地泛化到真实世界的文档。
使用这种方法,我们构建了Nemotron OCR v2 (https://huggingface.co/nvidia/nemotron-ocr-v2),一个既准确又快速的多语言OCR模型。准确性由数据驱动:六种语言的1200万张合成训练图像将非英语语言的NED分数从0.56-0.92降低到0.035-0.069。速度由架构驱动:共享检测骨干网络的特征被识别器和关系模型重用,消除了冗余计算,在单个A100 GPU上实现34.7页/秒。合成数据管道足够通用,可扩展到任何拥有字体和源文本的语言。
数据集公开发布在nvidia/OCR-Synthetic-Multilingual-v1 (https://huggingface.co/datasets/nvidia/OCR-Synthetic-Multilingual-v1),模型发布在nvidia/nemotron-ocr-v2 (https://huggingface.co/nvidia/nemotron-ocr-v2)。你可以在Nemotron OCR v2演示 (https://huggingface.co/spaces/nvidia/nemotron-ocr-v2)中直接在浏览器中试用该模型。
Nemotron OCR v2 HuggingFace Space演示,展示检测到的文本区域和提取的文本 (https://huggingface.co/spaces/nvidia/nemotron-ocr-v2/resolve/main/Screenshot%202026-04-09%20at%202.59.12%E2%80%AFPM.png)
问题:数据而非架构
Nemotron OCR v1是一个强大的英文OCR模型,但没有针对多语言目的进行训练,因此当接触其他语言时,它无法准确读取文档。在我们的SynthDoG基准上,v1在日语、韩语、俄语和中文上的归一化编辑距离(NED)分数在0.56到0.92之间。在这些错误率下,模型输出与真实情况几乎没有相似之处。
| 语言 | Nemotron OCR v1 NED |
|---|---|
| 日语 | 0.723 |
| 韩语 | 0.923 |
| 俄语 | 0.564 |
| 简体中文 | 0.784 |
| 繁体中文 | 0.700 |
问题的一部分在于字符集。v1模型仅支持855个字符,完全无法覆盖CJK(中文、日语、韩语)或西里尔字母。我们进行了一项实验,将字符集扩展到14,244个字符以覆盖所有目标语言。这有所帮助,但没有足够包含这些字符的训练数据,改进微乎其微。该模型理论上可以输出正确的字符,但从未学习过它们的外观。瓶颈是数据,而非架构。
在六种语言上收集和标注数百万真实世界图像,包含单词、行和段落级边界框以及阅读顺序图会成本高昂。我们需要不同的方法。
通用合成数据管道
我们的关键洞见是多语言OCR训练数据的配方本质上是与语言无关的。你需要两个要素:
- 目标语言的源文本,来自真实分布
- 能够渲染该语言脚本的字体
有了这些,合成渲染器可以免费生成无限的标注训练图像,在每个粒度级别都有像素级完美的真实情况。
文本:mOSCAR
对于源文本,我们使用mOSCAR (https://huggingface.co/datasets/oscar-corpus/mOSCAR),一个大规模多语言网络语料库,覆盖163个语言子集,跨越数十种脚本,包括拉丁文、CJK、西里尔字母、阿拉伯语、天城体和泰语。从mOSCAR采样使我们获得遵循每种语言真实词汇、句子长度和字符频率分布的文本。这远比词典单词列表或机器生成的文本更有代表性。
渲染:改进型SynthDoG
我们在Donut项目中经过大量修改的SynthDoG(合成文档生成器) (https://github.com/clovaai/donut/tree/master/synthdog)版本上构建了我们的管道。原始SynthDoG生成具有页面级文本标签的类似文档的图像。我们在几个重要方面扩展了它。
**多级边界框。**标准SynthDoG仅提供页面级文本。我们的管道同时在三个级别生成像素精确的标注:单词、行和段落。每个级别都包括轴对齐边界框和4点四边形,包含链接单词到其父行和段落的索引。
**用于阅读顺序的关系图。**大多数公开的OCR数据集都不包括阅读顺序标注。这使得很难训练理解文档结构而不仅仅是检测文本的模型。我们从HierText (https://github.com/google-research-datasets/hiertext)数据集获得灵感,该数据集率先使用具有结构关系的分层(单词、行、段落)标注。我们的合成管道为每个样本生成关系图,编码哪些单词组成每一行、哪些行组成每个段落以及它们应该按什么顺序读取。这是Nemotron OCR v2关系模型组件的动力,该组件处理多列布局、表格和其他结构,其中简单的从上到下、从左到右合并会产生乱码输出。
**多样化的布局模式。**我们创建了一组布局模板,涵盖一系列真实世界的文档场景:流动的多列文本、散散的类似场景文本的单词、垂直文本列(对日语和中文很重要)、带标题和边框的表格、带圆点领导者的目录页、PowerPoint风格的幻灯片以及Word风格的带标题和正文的页面。每次生成运行随机选择一个布局模式,因此模型在训练期间看到各种结构。
**CJK的行级识别。**多语言变体的一个重要设计决策是从单词级移到行级文本识别。中文和日语等语言单词之间没有空格,因此没有自然的单词边界可分割。韩语使用空格不一致。通过在行级运行,识别器自然处理这些语言,无需单独的单词分割步骤。英文变体在有意义的地方继续使用单词级识别。
**开源字体池。**我们从开源集合(包括Google Fonts和Noto字体族)为每种语言汇编了165到1,258个独特字体,涵盖衬线、无衬线、手写、装饰和可变权重样式。
**增强。**每个渲染页面经过随机增强堆栈以改进泛化。在文本级,这些包括边框/轮廓效果、阴影、挤压和在字形边缘撒上噪声。自定义效果使用随机场调节文本中的笔画不透明度和笔画宽度变化。在图像级,我们应用形态学操作(膨胀、腐蚀)、中值模糊和弹性失真,由最小文本高度门控以避免破坏小文本。在整页级,管道应用对比度和亮度抖动、高斯和运动模糊、色彩移位、阴影覆盖和加性高斯噪声。背景要么是图像纹理,要么是纯色,背后可选有半透明着色矩形。
数据外观
以下是所有六种语言的原始合成图像样本。每个图像生成时都有随机的布局模式、字体选择、背景和增强堆栈:
所有语言合成训练图像的马赛克 (https://huggingface.co/spaces/nvidia/nemotron-ocr-v2/resolve/main/mosaic_raw.jpg)
以下是展示分层结构的标注示例。虚线轮廓表示段落边界,着色区域显示行级分组(按段落着色),箭头追踪每个段落内行之间的阅读顺序。
带阅读顺序标注的英文段落布局 (https://huggingface.co/spaces/nvidia/nemotron-ocr-v2/resolve/main/en_5078_full_annotation.png)
以下是更多跨语言标注示例,展示管道生成的布局、脚本和增强样式的范围。每个字幕描述示例强调的内容:
跨语言和布局类型的标注示例 (https://huggingface.co/spaces/nvidia/nemotron-ocr-v2/resolve/main/examples_collage.jpg)
数据集概览
完整数据集包含六种语言的1220万样本:
| 语言 | 总样本 | 训练 | 测试 | 验证 |
|---|---|---|---|---|
| 英语 | 1,825,089 | 1,460,304 | 183,629 | 181,156 |
| 日语 | 1,889,137 | 1,502,712 | 193,779 | 192,646 |
| 韩语 | 2,269,540 | 1,814,994 | 227,091 | 227,455 |
| 俄语 | 1,724,733 | 1,380,404 | 171,678 | 172,651 |
| 简体中文 | 2,335,343 | 1,914,948 | 210,143 | 210,252 |
| 繁体中文 | 2,214,304 | 1,772,280 | 221,867 | 220,157 |
| 总计 | 12,258,146 | 9,845,642 | 1,208,187 | 1,204,317 |
下载:nvidia/OCR-Synthetic-Multilingual-v1 (https://huggingface.co/datasets/nvidia/OCR-Synthetic-Multilingual-v1)
可扩展性
我们描述的管道是故意通用的。我们在此版本中选择了六种语言,但添加新语言只需源文本和能覆盖该脚本的字体。模型架构或手工标注无需做任何改变。渲染管道可以在单机上每天生成数百万个标注页面,使得快速生成新语言的大规模训练集切实可行。由于mOSCAR覆盖163个语言子集,Noto字体族支持几乎每个活跃使用的Unicode脚本,所以有清晰的路径来广泛扩展这种方法。
模型:Nemotron OCR v2
Nemotron OCR v2 (https://huggingface.co/nvidia/nemotron-ocr-v2)是一个生产就绪、商业可用的OCR模型,在合成数据以及约680K真实世界图像上训练。它使用三组件端到端架构:
- 文本检测器(RegNetX-8GF骨干网络):定位图像中的文本区域
- 文本识别器(预范化Transformer):转录检测到的区域
- 关系模型:预测逻辑分组、阅读顺序和布局关系
有两个可用的变体:
| v2_english | v2_multilingual | |
|---|---|---|
| 语言 | 英语 | EN、ZH、JA、KO、RU |
| 区域级别 | 单词 | 行 |
| 识别器层 | 3 | 6 |
| 字符集 | 855 | 14,244 |
| 参数 | 54M | 84M |
与其他OCR管道的重要区别:Nemotron OC
相似文章
NVIDIA 发布 Nemotron 3 Nano Omni 模型,统一视觉、音频和语言处理,助力 AI Agent 效率提升高达 9 倍
NVIDIA 宣布推出 Nemotron 3 Nano Omni,这是一款开放的多模态模型,通过统一视觉、音频和语言处理,使 AI Agent 能够更快、更高效地运行。与其他开放式的 Omni 模型相比,其吞吐量最高可提高 9 倍。
@kwindla: https://x.com/kwindla/status/2062544580105359686
NVIDIA 发布了 Nemotron 3.5 ASR,这是一款开源的多语言语音转文字模型,在测试中延迟最低,提供多语言和纯英文两个版本,非常适合语音助手和自托管部署场景。
NVIDIA 发布了 Nemotron-TwoTower-30B-A3B-Base-BF16,这是一种基于 Nemotron 3 Nano 30B-A3B 主干构建的异常扩散型语言模型。
NVIDIA 发布了 Nemotron-TwoTower-30B-A3B-Base-BF16,这是一种基于扩散的语言模型,采用逐块自回归扩散方法,通过对令牌块进行迭代去噪来生成文本,实现了自回归基线 2.42 倍的生成吞吐量,同时保留了基准测试质量 98.7% 的水平。
NVIDIA 发布 Nemotron 3 Nano Omni:面向文档、音频和视频智能体的长上下文多模态智能
NVIDIA 发布 Nemotron 3 Nano Omni,这是一款新型长上下文多模态 AI 模型,能够以高准确性和高效率处理文档、音频、视频和文本。
TurboOCR v3 — 高速文档OCR服务器 (C++/CUDA),在RTX 5090上约520张/秒
TurboOCR v3 是一款自托管的高速OCR服务器,在RTX 5090上使用PP-OCRv6模型实现约每秒520张图片的处理速度,并新增了表格和公式的结构化解析功能。