合成布局,更优的竖排日文OCR:深入 Synth-JDoc
Based on: Synth-JDoc: Synthesizing a Japanese Document Image Dataset for OCR with Diverse Layouts and Embedded Images — Keito Sasagawa, Shuhei Kurita, Daisuke Kawahara
将一份多栏日本政府文档输入大型视觉语言模型(LVLM),并要求其转录页面内容,模型可能会以一种非常特定的方式失败。在 Synth-JDoc 论文的一个例子中,模型读取了“A1”部分,跳过了下一个垂直栏中的文本,直接跳到了“Q2”。
日本文档可以结合横排文本(yokogaki)和竖排文本(tategaki)。在竖排日文中,字符从上到下排列,行从右到左排列。论文指出,竖排日文在 OCR 训练数据中代表性不足,且当前 LVLM 在处理竖排日文时的表现明显差于横排日文。
为了弥补这一差距,Keito Sasagawa、Shuhei Kurita 和 Daisuke Kawahara 开发了 Synth-JDoc。他们的论文 “Synth-JDoc: Synthesizing a Japanese Document Image Dataset for OCR with Diverse Layouts and Embedded Images” 描述了一个基于 HTML/CSS 渲染、嵌入图形的文本到图像生成以及图像退化的合成数据流水线。
最终数据集包含 17,970 张精心策划的文档图像。在对真实世界竖排日文文档的评估中,在 Synth-JDoc 上微调的模型在五种模型家族中的四种模型家族的两种评估设置下均取得了最佳报告分数。项目代码已在 GitHub (llm-jp/synth-jdoc) 上开源,数据集托管在 Hugging Face (llm-jp/Synth-JDoc) 上。
以下是关于竖排日文 OCR 问题的技术拆解、Synth-JDoc 如何构建其合成页面以及其实验结果的展示。

为什么垂直日语对 LVLM 来说很困难
文档转录不仅需要识别单个字符,模型还必须遵循页面的阅读顺序。
垂直日语文档带来了一个特别的挑战:
- 垂直方向性: 垂直行中的字符从上到下阅读,而行则从右到左进行。
- 多栏布局: 论文将多栏阅读顺序描述为从最上方的栏位按顺序进展到最下方的栏位。
- 混合书写风格: 日语文档可能在同一页面上包含垂直和水平书写。
论文的动机示例是一个真实的文档页面,其中原始的 Qwen3-VL 模型省略了从上数的第二栏。微调后的模型没有跳过该文本。作者认为,需要一个包含垂直文本、多栏布局和插入图像的日语 OCR 数据集,以改善此类文档的阅读。
从真实文档构建该数据集成本高昂。手动标注不易扩展,而使用 OCR 系统提取训练文本会引入识别错误,并且需要收集源文档图像。现有的合成方法也存在局限:SynthDoG 可以生成日语文档图像,但产生的布局不太逼真,而 JSSODa 支持一到四栏布局中的垂直和水平文本,但使用白底黑字且没有插入图像。
Synth-JDoc 架构:代码驱动的合成
Synth-JDoc 采用三阶段流水线:文档元素准备、文档图像合成以及噪声应用。
+-------------------------------------------------------------------------+
| 阶段 1:文档元素准备 |
| - 文本来源:JSSODa 语料库(JUMAN 词典名词 -> llm-jp-3.1) |
| - 段落分割与标题生成 |
| - 通过线性分配问题将段落与图像占位符匹配 |
| - 图像提示词生成(Qwen3-30B)-> Z-Image-Turbo |
| - 图像说明生成(Qwen3-VL-30B),短说明与长说明比例为 9:1 |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| 阶段 2:HTML/CSS 文档渲染 |
| - 8 种布局组合:横排/竖排 x 1、2、3、4 列 |
| - 49 种日本 Google Fonts 字体 |
| - 25% 的标题出现概率;单列或跨列插图 |
| - Web 浏览器渲染 |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| 阶段 3:噪声流水线(17,970 张精选图像) |
| - 40% 干净的程序化渲染 |
| - 30% 扫描样噪声 |
| - 30% Augraphy 退化处理 |
+-------------------------------------------------------------------------+
1. 文档元素准备
流水线首先从 JSSODa 获取文本。该数据集的文本是通过从 JUMAN 词典中提取名词,并提示 llm-jp-3.1-13b-instruct4 生成与每个名词相关的句子而创建的。Synth-JDoc 使用相同的模型为每段文本生成一个标题。
接下来,文本在双换行符(\n\n)处被分割成段落。为了创建图文混排的文档,流水线会插入图像占位符:
- 每篇文档的图像数量随机选择,范围从零到段落数的一半。
- 占位符随机插入在段落之前或之后。
- 系统通过线性分配问题,最小化占位符与段落之间距离的平方和,从而将占位符与段落配对。
对于每一对配对的占位符,Qwen3-30B-A3B-Instruct-2507 会根据关联的段落生成图像生成提示词。随后,Z-Image-Turbo 生成图像。最后,Qwen3-VL-30B-A3B-Instruct 生成图像说明。简洁的说明和多句长说明的使用比例为 9:1。
2. 基于浏览器的布局合成
准备好文本、标题、图像和说明后,Synth-JDoc 构建 HTML/CSS 页面,并在 Web 浏览器中将它们渲染为图像。
- 布局组合: 数据集均匀分布在八种组合中:横排或竖排书写,每种包含一至四列。
- 排版多样性: 字体从 Google Fonts 提供的 49 种日本字体中随机选择。
- 布局变化: 标题以 25% 的概率出现。在具有两列或更多列的布局中,图像可以保留在一列内或跨越所有列。插图说明样式,包括“Figure N:”和“Fig. N:”,也是随机化的。
由于文本直接渲染到合成文档中,该流水线避免了从现有文档图像中提取标签时产生的 OCR 识别错误。
3. 噪声与扫描仪模拟
最终训练集结合了干净的合成图像、扫描样图像和经过 Augraphy 处理的图像。
- 干净渲染(40%): 应用噪声前的合成文档。
- 扫描样噪声(30%): 高斯噪声、旋转、透视变换、垂直和水平阴影、暗角效果以及偶尔的全局模糊。
- Augraphy 处理(30%): 一个包含三个阶段的文档退化流水线:
- 墨水阶段:
InkBleed(墨水晕染)和InkMottling(墨水斑驳)。 - 纸张阶段: 添加颜色和纹理图案。
- 后处理阶段: 进一步退化,如污渍、涂鸦、阴影和模拟折痕。
- 墨水阶段:
在手动过滤掉存在合成错误或潜在版权问题的图像后,最终的 Synth-JDoc 训练集包含 17,970 张图像。
实验结果:VJRODa 基准测试
研究人员在 VJRODa 数据集上对模型进行了评估,该数据集包含 100 张真实世界的竖排日文文档图像及其对应的文本。论文指出,VJRODa 由真实的 PDF 页面构建而成;其局限性部分提到,这些 PDF 由政府部门发布,内容相对清晰整洁。
五个开源 LVLM 进行了全量微调,更新了所有模块参数:
Qwen2.5-VL-7B-InstructQwen3-VL-8B-InstructInternVL3-8B-hfInternVL3.5-VL-8B-hfGemma 3 12B IT
训练使用 batch size 为 32,优化器为 AdamW,学习率为 2e-05。提示词要求每个模型以标准日文阅读顺序输出图像中的所有文本。论文在微调设置中保持了训练配置和训练数据量的一致性。
评估指标与重复陷阱
作者报告了两个指标:
- 字符错误率 (CER $\downarrow$): 模型输出与真实文本之间的编辑距离,除以真实文本的字符数并乘以 100。数值越低越好。
- SacreBLEU (BLEU $\uparrow$): 字符级分词后的字符级 BLEU 分数。数值越高越好。
- 文本预处理: 在评分前进行 Unicode NFKC 归一化和空白字符移除。
结果在两种输出设置下报告:
- 原始输出 (Raw Output): 基于模型生成的原始输出计算分数。
- 去除重复 (Remove Repetition): 在移除尾部重复字符串后计算分数。
第二种设置很重要,因为 LVLM 可能会重复相同的字符串。论文使用这两种设置来区分重复生成行为的变化与核心字符识别性能的变化。
性能细分
| 模型 | 训练数据集 | 原始 CER ($\downarrow$) | 原始 BLEU ($\uparrow$) | 去重后 CER ($\downarrow$) | 去重后 BLEU ($\uparrow$) |
|---|---|---|---|---|---|
| Qwen2.5-VL-7B | Zero-Shot Base | 154.0 | 20.1 | 88.5 | 22.0 |
| + JSSODa | 65.1 | 51.5 | 40.5 | 61.1 | |
| + Nano Banana Pro | 161.0 | 20.9 | 135.0 | 24.4 | |
| + Synth-JDoc (Ours) | 34.5 | 66.8 | 32.0 | 69.5 | |
| Qwen3-VL-8B | Zero-Shot Base | 116.0 | 32.6 | 45.6 | 52.5 |
| + JSSODa | 130.0 | 29.9 | 65.5 | 49.4 | |
| + Nano Banana Pro | 177.0 | 16.1 | 138.0 | 17.3 | |
| + Synth-JDoc (Ours) | 43.9 | 57.4 | 25.0 | 70.8 | |
| InternVL3-8B | Zero-Shot Base | 121.0 | 26.0 | 66.5 | 40.8 |
| + JSSODa | 251.0 | 26.1 | 73.5 | 54.9 | |
| + Nano Banana Pro | 173.0 | 15.3 | 140.0 | 19.3 | |
| + Synth-JDoc (Ours) | 70.9 | 47.8 | 38.9 | 68.1 | |
| InternVL3.5-VL-8B | Zero-Shot Base | 121.0 | 29.2 | 56.1 | 41.0 |
| + JSSODa | 57.9 | 62.3 | 37.2 | 71.9 | |
| + Nano Banana Pro | 173.0 | 15.6 | 117.0 | 18.8 | |
| + Synth-JDoc (Ours) | 36.8 | 66.7 | 25.9 | 78.3 | |
| Gemma 3 12B IT | Zero-Shot Base | 125.0 | 17.5 | 67.9 | 23.3 |
| + JSSODa | 77.6 | 27.9 | 67.4 | 27.2 | |
| + Nano Banana Pro | 196.0 | 8.5 | 145.0 | 9.3 | |
| + Synth-JDoc (Ours) | 128.0 | 18.7 | 96.3 | 26.5 |
对于 Qwen2.5-VL、Qwen3-VL、InternVL3 和 InternVL3.5,Synth-JDoc 微调行在原始输出和去除重复两种设置下均取得了最佳的 CER 和 BLEU 分数。
- 在 Qwen3-VL-8B 上,去重后的 CER 从 45.6 降至 25.0,而 BLEU 从 52.5 升至 70.8。
- 在 InternVL3.5-8B 上,去重后的 CER 从 56.1 降至 25.9,而 BLEU 升至 78.3。
- 在 JSSODa 上微调改善了一些模型,但并未改善所有设置。例如,Qwen3-VL 的原始 CER 从 116.0 上升至 130.0。
真实世界案例研究
论文中的定性示例使用了一份关于国民年金通知书 (Nenkin Tokubetsubin) 的文档。
基础 Qwen3-VL-8B 模型在第一部分输出了“A1”,然后跳过了第二列的文本,直到第三部分的“Q2”才继续。其 CER 为 47.4。经过 Synth-JDoc 微调的模型没有跳过该列,其 CER 为 3.84。
两个具有启发性的实验结果
本文还测试了该方法的两个重要边界。
1. Nano Banana Pro 基线
研究人员使用 Nano Banana Pro (gemini-3-pro-image-preview) 生成了一个基线数据集。提示词指定了与 Synth-JDoc 相同的文本、标题、图片说明、书写方向和列数。当存在图片说明时,提示词还要求生成相应的图片。
生成的图像看起来可能很逼真,细节包括木制书桌和页面折痕。但论文报告了几种文档生成失败的情况:
- 字符扭曲: 生成的日文字符可能会变形。
- 文本不匹配: 图像中的文本可能与提示词不同。
- 垂直布局失败: 模型无法可靠地创建具有垂直书写文本的多列文档。在一个例子中,一个请求垂直书写两列布局的提示词生成了两个单独的垂直书写页面。
Nano Banana Pro 的微调设置通常会使结果相对于原始模型退化。论文指出有一个例外:Qwen2.5-VL 的 BLEU 略有提高,尽管其 CER 明显恶化。
2. Gemma 3 分辨率限制
Synth-JDoc 并未提升 Gemma 3 的性能。作者将此结果归因于 Gemma 3 处理输入图像的方式。
Qwen2.5-VL 和 Qwen3-VL 使用原生动态分辨率,而 InternVL3 和 InternVL3.5 使用动态分块策略。这些方法可以处理具有不同纵横比和分辨率的图像。相比之下,论文指出 Gemma 3 将输入图像调整为固定的 1:1 分辨率。
Synth-JDoc 包含具有不同分辨率的文档图像。因此,作者假设 Gemma 3 的固定调整大小阻止了它从数据集中学习。他们将其作为证据,表明 OCR 性能取决于数据集设计和模型架构。

消融实验:图像与标题
作者还测试了嵌入图像及其标题的影响。在添加噪声之前,他们用背景色掩蔽了图像、标题或两者,然后在这些变体上训练了 Qwen3-VL-8B 和 InternVL3.5-VL-8B。
| 消融设置 (Qwen3-VL-8B) | 原始 CER ($\downarrow$) | 原始 BLEU ($\uparrow$) | 去重后 CER ($\downarrow$) | 去重后 BLEU ($\uparrow$) |
|---|---|---|---|---|
| 完整 Synth-JDoc | 43.9 | 57.4 | 25.0 | 70.8 |
掩蔽图像 (w/o image) |
60.5 | 48.1 | 36.8 | 67.4 |
掩蔽标题 (w/o caption) |
120.0 | 30.2 | 51.2 | 54.5 |
同时掩蔽 (w/o image + caption) |
55.7 | 48.9 | 39.3 | 64.8 |
| 消融设置 (InternVL3.5-8B) | 原始 CER ($\downarrow$) | 原始 BLEU ($\uparrow$) | 去重后 CER ($\downarrow$) | 去重后 BLEU ($\uparrow$) |
|---|---|---|---|---|
| 完整 Synth-JDoc | 36.8 | 66.7 | 25.9 | 78.3 |
掩蔽图像 (w/o image) |
45.5 | 58.8 | 38.6 | 65.2 |
掩蔽标题 (w/o caption) |
54.3 | 57.9 | 39.9 | 72.7 |
同时掩蔽 (w/o image + caption) |
59.3 | 57.6 | 47.1 | 66.4 |
同时移除图像和标题使 Qwen3-VL 的去重后 CER 从 25.0 上升至 39.3。对于 InternVL3.5,该指标从 25.9 上升至 47.1。
对于这两种模型,完整的 Synth-JDoc 数据集均优于掩蔽图像或标题的变体。作者将此归因于同时包含这两种元素的合成页面代表了视觉上更多样化且更逼真的文档。
局限性与未来工作
论文指出了几个尚未解决的约束条件:
- 布局多样性: Synth-JDoc 涵盖了一到四列的横向和纵向布局,但报纸等真实文档可能具有更复杂的阅读顺序。
- 结构化元素: 作者将图表和表格确定为合成流程未来的目标。
- 解码器重复: 贪婪解码在某些情况下仍会产生重复的输出。作者建议,调整解码超参数可能有助于抑制这种行为。
- 测试集多样性: VJRODa 由相对干净的政府 PDF 图像组成,因此无法全面衡量该流程噪声增强技术的价值。
- NSFW 过滤: 构建流程未包含 NSFW(不适宜工作场所)内容过滤。作者指出,可以在文本准备、提示生成、图像生成或图像字幕生成阶段引入此功能,并且应在每个阶段对文本和图像进行过滤。
为什么这对文档 AI 团队很重要
对于从事日文文档 OCR 的团队来说,这篇论文提供了几个基于证据的教训。
1. 程序化布局控制保留了预期文本
Synth-JDoc 通过 HTML 和 CSS 直接渲染准备好的文本。这避免了 OCR 衍生标签错误,并让作者能够明确控制书写方向、分栏、标题、字体、图片位置和标题样式。
与 Nano Banana Pro 的比较并没有证明所有文本到图像的方法都不适合 OCR 数据生成。它确实表明,在这个实验中,高性能的文本到图像基线在处理精确字符和竖排多栏布局时遇到了困难。
2. 图片和标题改变了训练结果
消融研究发现,掩码嵌入的图片或标题会降低 Qwen3-VL-8B 和 InternVL3.5-VL-8B 的性能。在这个数据集中,这些元素相对于相应的掩码变体提高了结果。
3. 数据集设计和模型架构相互作用
论文中 Gemma 3 的结果是一个有用的警示。作者假设,固定的 1:1 图像缩放使得该模型难以从 Synth-JDoc 的多样化文档分辨率中受益,而具有原生动态分辨率或动态平铺的模型则有了显著改进。
通过发布代码和数据,Sasagawa、Kurita 和 Kawahara 为训练和研究竖排日文文档图像的 OCR 提供了一个公共资源。鉴于该研究聚焦于日文竖排文本,其结论对处理高密度、复杂排版的中文字符识别同样具有借鉴意义,但需注意中日文字在字形结构和布局习惯上的差异可能影响模型泛化。