跳转至

DaVinci: Reinforcing Visual-Structural Syntax in MLLMs for Generalized Scientific Diagram Parsing

会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=OAXECnLxuk
代码: https://github.com/zengxingchen/Diagram-to-TikZCode
领域: 多模态VLM
关键词: 图表解析, TikZ 代码生成, 强化学习, GRPO, 矢量化奖励

一句话总结

DaVinci 用「SFT 先学视觉基元 + GRPO 再学结构关系」的两阶段框架训练一个 7B 的 MLLM,把科学示意图解析成可编译的 TikZ 代码,配合自建的 TikZ30K 数据集(规范画图顺序 + 注入注释)和一套从矢量化表示中无误差提取信号的混合奖励,最终在编译率与视觉保真度上反超 GPT-5、Claude-Sonnet-4 等闭源大模型。

研究背景与动机

领域现状:科学示意图(论文里的框架图、流程图、神经网络结构图等)广泛存在,但它们大多是栅格位图,无法直接编辑、复用。把位图反解析成结构化的程序表示(diagram-to-code)是打通编辑与复用的关键。在众多表示里,TikZ 因为语法声明式、数学表达能力强、又能编译成 PDF/SVG 矢量格式,成为 MLLM 做图到代码生成的首选目标,DATIkZ 系列工作已经积累了大规模的「图-TikZ 代码」数据集做监督微调(SFT)。

现有痛点:即便有大规模 SFT,现有 MLLM 在这个任务上仍然吃力。解析示意图要求像素级精度——要精确指定线、形状、文字等各种图形基元,还要描述它们之间的空间关系,同时严格满足 TikZ 苛刻的语法约束。纯 SFT 学到的更多是「逐 token 模仿参考代码」,难以保证编译通过和几何对齐。

核心矛盾:问题的根本原因有两层。其一是数据噪声:TikZ 这类绘图语言的渲染结果与代码书写顺序基本无关(除变量声明外),于是同一张图在训练集里可能对应多种被任意打乱顺序的代码序列,对自回归语言模型来说,相似的视觉内容映射到大量随机排列的代码,严重稀释了训练信号;而且原始代码缺乏结构/语义提示,模型对长代码序列容易逻辑不一致、漏画组件。其二是奖励信号不可靠:要做强化学习就得评估生成图,但常用的 OCR 抽文字、像素级 MSE/SSIM 比图,对充满符号和图形元素的示意图都误差很大,把噪声直接传进奖励里。

本文目标:(1) 给冷启动准备一份干净、结构化、带规划提示的高质量数据;(2) 设计一套不依赖易错 OCR / 像素度量、能精确刻画文字对齐与几何精度的奖励,让强化学习真正优化到「视觉保真 + 可编译」。

切入角度:作者把任务拆成两层能力——视觉基元的识别(线/形/文字怎么画)和它们之间的结构关系(怎么排布、怎么连)。前者用监督学习快速冷启动,后者用强化学习精修。同时观察到 TikZ 编译出的 PDF 本身就携带每个文字/几何对象的精确矢量元数据,可以「无误差」地取出来当奖励的真值来源。

核心 idea:用「SFT 学基元 + GRPO 学结构」的两阶段框架,配合规范化画图顺序、注释规划脚手架的 TikZ30K 数据,以及从矢量化表示无误差提取的混合奖励,把示意图解析做到反超闭源大模型。

方法详解

整体框架

把示意图解析形式化成一个条件序列生成任务:给定输入图像 \(I_{in}\),目标是生成一段 TikZ 代码 \(C_{pred}=(t_1,\dots,t_L)\),编译渲染后的图像 \(I_{pred}=\text{Render}(C_{pred})\) 要忠实重建 \(I_{in}\),即用参数 \(\theta\) 的 MLLM 建模 \(p(C_{pred}\mid I_{in})\) 并自回归解码。

整条管线分两阶段:先用自建的 TikZ30K 做监督冷启动,让基座模型(Qwen2.5-VL-7B-Instruct)学会视觉基元与语法规则,得到 DaVinci-SFT-7B;再以它初始化策略,用 GRPO 强化学习精修结构关系,奖励由「编译产物 + 矢量化表示 + 渲染图」三种模态共同构成,得到最终的 DaVinci-7B;推理时输出 TikZ 代码,可进一步编译成 SVG/PDF 供下游编辑。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入:栅格科学示意图"] --> B["TikZ30K 数据集<br/>规范画图顺序 + 注入注释"]
    B --> C["两阶段训练<br/>SFT 学视觉基元"]
    C --> D["两阶段训练<br/>GRPO 学结构关系"]
    E["矢量化无误差混合奖励<br/>文字 + 几何 + 图像 + 编译"] --> D
    D --> F["输出 TikZ 代码 → 编译 SVG/PDF"]

关键设计

1. TikZ30K:把「画图顺序」和「注释」当成被忽视的监督信号

针对「同一张图对应多种乱序代码、稀释训练信号」这个痛点,作者复现 DATIkZ 的采集流程(从 TEX.SE、arXiv、GitHub 收集 366,075 段可编译 TikZ,严格限定 2023 年 12 月前以避免与 DATIkZv3 测试集污染),再做两层清洗:先用启发式规则剔除截断图等低质样本降到 258,421,再用 Qwen-2.5-VL-32B 打语义类别标签和 5 分质量分,只留 4-5 分的 225,648 条。

真正的创新在于识别并修复两个被低估的特征。其一是画图顺序规范化(Code Reordering):TikZ 渲染与代码顺序无关,原始代码常常是「先画中心节点、突然跳去画 node 3、再倒着画 2 和 1、甚至先画边再画节点」这种对人类无所谓、但对自回归模型极其有害的乱序,作者用 Qwen3-Coder-480B 按「语义引导、逻辑递进」的绘制协议重排代码,并做重排前后渲染一致性校验。其二是注释即规划脚手架(Comment Injection):原始 TikZ 是密集的低层绘图指令,缺乏结构/语义线索,于是用 LLM 系统性地补上把绘制过程拆解成有意义子任务的注释(如「从最左边开始:画第一个圆,标号 1,向右连线」),这些注释充当规划锚点,引导模型一步步完成长序列绘制、减少漏画与逻辑不一致。最终对 225,648 条按 token 长度分层抽样出 58,000 条,其中 30,000 做 SFT(29,859 条通过增强后校验,即 TikZ30K)、28,000 做 RL。

2. 矢量化无误差的混合奖励:绕开 OCR 和像素度量

针对「OCR 抽文字、像素度量比图都误差大、把噪声传进奖励」这个痛点,作者的核心洞察是:TikZ 编译出的 PDF 本身就以原生矢量元素保留了每个文字/几何对象的精确几何与排版元数据,因此可以用 PyMuPDF 直接读出真值,无需任何识别。混合奖励是四个互补分量的加权和(论文不为各分量设特殊权重):

\[R_{hybrid}=R_{text}(V_{in},V_{pred})+R_{geom}(V_{in},V_{pred})+R_{img}(I_{in},I_{pred})+R_{pass}(C_{pred})\]

空间-文字奖励 \(R_{text}\) 从两图的 PDF 矢量表示里取出文字内容与包围框,先按完全相同文本贪心匹配,再对剩余元素用带自适应阈值的 Levenshtein 距离配对,一对多冲突时选 Distance-IoU(dIoU)最高的配对,最后把每对 dIoU(原范围 \([-1,1]\))映射到 \([0,1]\) 求和、按两侧元素最大数归一化:\(R_{text}=\frac{1}{\max(|B_{pred}|,|B_{gt}|)}\sum_{(b_p,b_g)}\frac{\text{dIoU}(b_p,b_g)+1}{2}\)几何奖励 \(R_{geom}\) 同样从 PDF 取出线、矩形、圆等几何基元及属性,按几何类型用匈牙利算法做二分图最优一对一匹配,代价函数 \(C(e_p,e_g)\) 综合归一化质心距离、相对尺寸、朝向/长宽比,再用指数衰减把代价转成相似度分并归一化:\(R_{geom}=\frac{1}{\max(|E_{pred}|,|E_{gt}|)}\sum_{(e_p,e_g)}\exp(-k\cdot C(e_p,e_g))\)图像保真奖励 \(R_{img}\) 结合感知度量 DreamSim(特征空间)与裁剪后的 MSE(像素空间)。编译成功奖励 \(R_{pass}\) 不单独加分,而是反向惩罚:一旦代码编译失败,就把其余三个分量全部赋为最小值,确保不可编译代码拿到最低混合奖励。

3. 两阶段训练:SFT 学视觉基元 + GRPO 学结构关系

把「识别基元」和「排布结构」两层能力拆开训练,是这篇工作让 7B 小模型反超大模型的关键。第一阶段在 TikZ30K 上对 Qwen2.5-VL-7B-Instruct 全参数 SFT 两个 epoch 完成冷启动,让模型先掌握各类视觉基元与 TikZ 语法。第二阶段用 GRPO(PPO 的一个变体,通过组内相对比较估计优势、无需显式 critic 模型)精修:给定提示,当前策略采样 \(G\) 个候选 TikZ 代码,每个算混合奖励 \(R_{hybrid}^{(k)}\),再用组内标准化得到优势 \(\hat A_k=\big(R_{hybrid}^{(k)}-\text{mean}\{R_{hybrid}^{(j)}\}\big)/\text{std}\{R_{hybrid}^{(j)}\}\),据此更新策略。RL 阶段用全局 batch 512、rollout batch 256、rollout 数 10,在 8×H100-80G 上训 500 步。这一阶段直接优化「可编译 + 视觉忠实」,把 SFT 阶段学到的基元能力组织成正确的结构关系。

损失函数 / 训练策略

SFT 阶段为标准的自回归语言建模目标,全参数微调 2 epoch;RL 阶段为 GRPO 目标,优势由式中的组内标准化奖励给出,混合奖励四分量等权相加,编译失败时其余分量取最小值。

实验关键数据

主实验

评测基准为 DATIkZv3 官方测试集(542 张视觉复杂多样的图)。代码层面看 Pass@1 编译率、文本编辑距离 TED、CrystalBLEU;图像层面看 DreamSim(DSIM)、SigLIP、SSIM、MSE、LPIPS。

模型 Pass@1 ↑ TED ↓ cBLEU ↑ DSIM ↑ SSIM ↑ MSE ↓ LPIPS ↓
Gemini-2.5-Pro-Thinking 69.93 53.77 6.17 88.20 75.86 66.62 21.64
GPT-5-Default 72.88 53.17 3.22 83.78 73.73 73.57 25.37
Claude-Sonnet-4-Thinking 86.90 54.38 3.31 82.89 72.21 73.89 25.80
Qwen2.5-VL-72B 80.04 54.80 4.18 79.35 72.42 77.63 27.24
DetikZify-V2-8B 78.60 55.66 7.19 82.63 74.30 68.42 23.30
DaVinci-SFT-7B 84.50 56.21 7.52 81.15 72.65 73.90 26.10
DaVinci-7B 97.60 55.13 6.57 84.83 73.65 61.81 22.32

DaVinci-7B 编译率近乎满分(97.60%),超过所有开源模型,并在编译率、DSIM、MSE 等多项指标上反超 GPT-5、Claude-Sonnet-4。Gemini-2.5-Pro 在 DSIM/LPIPS 上更高,但编译率只有 69.93%(常漏掉 LaTeX 库导入或基本符号导致渲染失败),存在明显短板。

人类评测(Best-Worst Scaling)也印证:在非闭源组里 DaVinci-7B 得分 0.36 居首;在闭源组里 DaVinci-7B(-0.01)优于 GPT-5-Default(-0.13)和 Claude-Sonnet-4-Thinking(-0.35),仅次于 Gemini-2.5-Pro-Thinking(0.50)。

消融实验

数据策略消融(Pass@1)

配置 Pass@1 ↑ 说明
Baseline: Qwen2.5-VL-7B 59.59 基座
+ Original30K 69.74 仅原始代码(未优化顺序/注释)
+ Reordering30K 78.78 加画图顺序规范化(+9.04%)
+ TikZ30K 84.50 再加注释注入(再 +5.72%)

奖励消融(基于 DaVinci-SFT-7B)

奖励设置 DSIM ↑ MSE ↓ Texual ↑ Geometry ↑
Base (\(R_{img}+R_{pass}\)) 85.00 64.58 37.23 41.44
Base + SSIM 84.67 64.89 37.45 41.87
Base + \(R_{text}\) 84.85 63.35 41.58 42.12
Base + \(R_{text}+R_{geom}\) 84.75 62.30 42.28 44.10

关键发现

  • 画图顺序规范化贡献最大:单独重排代码就把编译率从 69.74% 提到 78.78%(+9.04%),注释注入再加 5.72%,说明结构化数据本身就是强信号。
  • 矢量化文字/几何奖励确实有效:加入 \(R_{text}\) 把文字分从 37.23 拉到 41.58,再加 \(R_{geom}\) 把几何分从 41.44 拉到 44.10,且 MSE 同步下降;而加常规 SSIM 奖励几乎没有增益,印证「像素度量不如矢量基元度量」。
  • 高代码相似度并非必要:SFT 模型 cBLEU 最高,但 RL 后 DaVinci-7B 的 cBLEU 反而下降,其余所有指标却都改善——视觉等价的图可由语法多样的 TikZ 表达,严格的代码级相似度既不必要也未必可取。
  • 「思考」未必有用:开启显式推理链并不稳定提升解析效果,GLM-4.5V-Thinking 的编译率(62.92%)反而低于非思考版(67.90%);作者推测对结构化代码生成而言,生成代码本身就是一种隐式推理。

亮点与洞察

  • 用编译产物的矢量元数据当奖励真值:TikZ→PDF 天然携带每个文字/几何对象的精确坐标,绕开了 OCR 和像素度量这两个噪声大户,把奖励从「估计」变成「读取」,这是把 RL 用在图到代码任务上的关键解锁点。
  • 把数据噪声当一等公民来治理:渲染顺序无关性导致的「乱序代码」是个很隐蔽的训练杀手,作者识别并用 LLM 重排+注释脚手架来根治,比单纯堆数据更有效,这个思路可迁移到任何「输出顺序自由但自回归建模」的代码/序列生成任务。
  • 能力分层训练:SFT 管基元、RL 管结构关系,让 7B 小模型在编译率上反超百倍参数的闭源模型,说明任务结构化拆解比盲目堆参数更划算。

局限与展望

  • 剩余失败集中在密集可视化:散点图等需要海量数据点的图,模型容易过量生成、超出上下文长度导致编译失败,这是 97.60% 之外的主要漏洞。
  • 奖励依赖可编译的 PDF 矢量表示\(R_{text}/R_{geom}\) 都建立在「能编译出 PDF」之上,对编译失败样本只能退化到最小奖励,无法提供细粒度梯度信号。
  • 「思考无益」结论留作未来工作:作者只观察到显式推理链不稳定提升,但没深入解释机制,inline 注释 vs 独立推理的取舍仍待研究。
  • 数据与方法绑定 TikZ:整套矢量化奖励依赖 TikZ→PDF 的特性,迁移到 SVG、Mermaid 等其他绘图格式需要重新设计提取管线。

相关工作与启发

  • vs DetikZify (DATIkZ 系列): 他们靠大规模 SFT + MCTS 推理提升感知相似度,本文复用其采集方法但加了画图顺序规范化与注释增强,并用 GRPO 强化学习替代纯 SFT,在编译率(97.60% vs 78.60%)上大幅领先。
  • vs SVG/图表 RL 工作(如基于像素 L2、DreamSim、CNN 特征的奖励): 他们的奖励难以精确刻画示意图的空间-文字对齐与几何特征,本文改用矢量化表示无误差提取文字与几何基元,奖励更精准。
  • vs 闭源大模型(GPT-5 / Claude-Sonnet-4): 它们通用能力强但缺乏对 TikZ 语法与结构的专门优化,常漏库导入/符号导致编译失败,本文用专门数据 + 任务专属奖励让 7B 模型在编译率与多项视觉指标上反超。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 用编译产物矢量元数据构造无误差奖励 + 把画图顺序/注释当监督信号,两个切口都很新。
  • 实验充分度: ⭐⭐⭐⭐⭐ 对比闭源/开源/专用模型,含数据与奖励双重消融及人类评测。
  • 写作质量: ⭐⭐⭐⭐ 动机与方法链条清晰,公式与算法交代完整。
  • 价值: ⭐⭐⭐⭐⭐ 让小模型在实用指标(编译率)上反超闭源大模型,数据与代码开源,落地价值高。