Edit2TikZ:面向TikZ科学图表编辑的综合性评测基准

发布时间:2026/9/3 3:25:35
Edit2TikZ:面向TikZ科学图表编辑的综合性评测基准 在很多写论文和做实验的团队里真正的痛点往往不是跑不完的模型而是“改图改到崩溃”。这里说的图不是深度学习可视化里的 feature map而是论文里那些坐标轴、柱状图、流程图、曲线拟合结果。做科研的人通常喜欢先用 Python 或 Matlab 画出初稿再为了出版要求手动调整字号、线条、标签和布局一旦审稿意见要求“把图中的横轴标签从 A 改成 B”要么回到生成脚本里重新渲染要么直接在矢量软件里手工拉扯。这便引出今天文章的主角Edit2TikZ一个面向科学图表编辑任务的综合 benchmark也是“用文本指令编辑 TikZ 图”这一研究方向的代表性评测基准。这篇文章会从三个层面展开先解决“TikZ 和图编辑到底有什么关系”再剖析 Edit2TikZ 作为 benchmark 的任务形态与评测难点最后给出做相关研究的工程建议和技术选型思路。无论你是做多模态大模型的算法工程师还是想在 LaTeX 工具链上做二次开发的科研人员都能从中获得一些能落地的启发。1. 科学图表编辑为什么比“画图”更难很多刚入门的研究者会有一个疑问现在多模态生成模型已经能画出相当漂亮的自然图像为什么还要单独研究“科学图表编辑”自然图像生成追求的是视觉真实感和风格一致性而科学图表则完全不同。科学图表不是“画得美”而是“画得准”。一张合格的实验对比图必须满足几类近乎苛刻的约束坐标轴数值区间要正确刻度间隔要合理柱状图高度必须和表格数据保持一致不同曲线要能区分但图例必须和曲线一一对应字体、字号、线段宽度必须符合论文模板或期刊排版要求修改一个局部元素时不能影响其他元素的相对位置和语义。自然图像生成领域的经典做法是“生成像素”。但对科学图表来说像素层面的生成很难保证数值精度。模型可能生成一根形状很平滑的折线但线上每个点实际对应的数值却是错的读者无法在论文里直接量取坐标但审稿人可以直观感受到坐标标注与曲线走势对不上。即便某个图表在视觉上很接近原图只要任何一个坐标轴标签或数值文本出现错乱它就是一张不合格的科学图表。所以“科学图表编辑”从本质上说不是图像问题而是一个“结构化图形理解 精确渲染”问题。这也是 TikZ 语言登上舞台的关键原因之一。2. TikZ 是什么为什么和图表编辑深度绑定2.1 TikZ 是 LaTeX 中的矢量绘图语言TikZ 是 LaTeX 生态中应用最广泛的绘图宏包之一全称是 TikZ ist kein Zeichenprogramm意思是“TikZ 不是画图程序”。它用文本指令描述几何对象、路径、坐标、颜色、文字标签和样式再通过 LaTeX 编译器把指令转换成精准的矢量 PDF 图形。对于没有接触过 TikZ 的人来说可以先看一个最简单的例子。下面这段代码会绘制一个带坐标轴的二维折线图% 文件路径figure.tex \documentclass[border2mm]{standalone} \usepackage{tikz} \begin{document} \begin{tikzpicture}[scale1.5] % 坐标轴 \draw[-] (-0.2,0) -- (6,0) node[right] {$x$}; \draw[-] (0,-0.2) -- (0,4) node[above] {$y$}; % 折线y 0.6x 0.5 \draw[domain0.2:5, smooth, thick, blue] plot (\x, {0.6*\x 0.5}) node[right] {$y0.6x0.5$}; % 在 x2.5 处绘制虚线辅助线 \draw[dashed, red] (2.5,0) -- (2.5,{0.6*2.50.5}) -- (0,{0.6*2.50.5}); % 标记交点 \filldraw[red] (2.5,{0.6*2.50.5}) circle (1.5pt); \end{tikzpicture} \end{document}把这段代码保存为figure.tex在已安装 TeX Live 的环境里执行pdflatex figure.tex就会生成一个 PDF 图形。可以看到左侧是数据坐标右侧是文字编译结果。和像素图不同TikZ 生成的图形是矢量对象在任意缩放比例下都不会模糊字体能自动与正文保持 LaTeX 风格一致。2.2 为什么模型输出 TikZ 代码比输出图片更适合做图表编辑如果想要让 AI 系统完成“科学图表编辑”就必须要选择一个“编辑结果表示形式”。可选方案大致有三种像素掩码编辑、基于 SVG 等矢量格式的输出、以及基于 TikZ 代码的输出。像素级方案最直接但有一个致命缺陷真实科学图表由大量小字号文本和精确坐标构成哪怕只看错一个数字整个图表的可信度就会崩塌。扩散模型逐步去噪的方式很难保证每一个文本 token 完全正确更不用说保持和 LaTeX 环境一致的排版。SVG 虽然也是矢量格式可一旦原始图不是 SVG就需要额外的矢量化转换步骤转换过程和场景越复杂误差越大。TikZ 的优势恰恰在于它是“语义化”的绘图语言。图中每条线、每个坐标、每个标签都以显式文字形式存在。当模型输出 TikZ 代码时实际上是在做结构化推理而不是像素采样。比如任务要求“把图中第二根柱子的颜色改成红色”在 TikZ 代码里只需要找到对应柱子的fill参数修改一个属性即可。这种属性级操作比操作像素直观得多也更容易自动评测。同时TikZ 天然和学术写作流程兼容。论文作者接受一份 TikZ 代码后可以把它直接嵌入到 LaTeX 文稿中不需要额外导出图片或处理分辨率问题。这就让“AI 编辑结果”具备了学术出版意义上的可用性。3. Edit2TikZ定位、任务形态与核心价值Edit2TikZ 的标题中出现了三个关键词Comprehensive、Challenging、Benchmark。翻译过来是一个综合性的、具有挑战性的、面向 TikZ 科学图表编辑的评测基准。如果一个 arXiv 论文标题直接打上 benchmark 标签通常说明它不只是提出一个模型而是为整个社区定义了一套任务、数据、评测指标和基线结果。Edit2TikZ 的核心思路可以概括为给定一张科学图表和一条编辑指示系统需要输出满足要求的新版 TikZ 代码。3.1 输入与输出按照常见图编辑任务的逻辑Edit2TikZ 的输入可以拆成两部分视觉信息一张已有的科学图表通常是论文里截取出来的 TikZ 渲染图或者图表截图文本指令一段描述编辑目标的话语例如“把纵轴标题从 Accuracy 改成 AUC”“把第二根柱子向上延长 20%”“在图例中添加第三条曲线”。输出是一个新的 TikZ 代码片段要求这段代码能保留原图的整体结构和无关区域同时精确地实现指令中要求的变化。这种设计很像图像编辑领域里的 InstructPix2Pix 范式只不过指令作用的对象是代码生成的图表输出也是代码。其关键差异在于“代码既是中间表示也是最终答案”。我们可以理解为模型必须在理解像素图之后反向生成源图对应的 TikZ 程序再在这个程序上完成修改。3.2 为什么这个任务有挑战性反推代码比写代码更难。如果让一个多模态大模型直接画“柱状图”模型只需要生成一个统计上合理的柱状图即使柱子高度和给定的数值表对不上很多评测指标也难以发现。但在 Edit2TikZ 中模型需要从渲染图中反推出代码结构。这要求模型具备“看到图形、理解坐标、知道文本标签对应哪个节点”的能力。任何一个坐标没对上视觉和代码就无法对齐。另外一条编辑指令在代码层面可能对应多处变化。指令说“把红色曲线改成蓝色”模型不仅需要找到曲线draw语句里的颜色参数还要确认图例项的颜色是否同步修改。一个科学图表里曲线、图例、坐标轴标签、辅助标注都可能存在颜色上的关联。只改一处而漏掉另一处从视觉结果看会非常明显。这种多步骤、多约束的推理恰好是当前很多视觉语言模型的薄弱环节。Edit2TikZ 被定义为 Challenging benchmark也就不难理解了。3.3 Edit2TikZ 与“一般图生成”的区别许多研究者和读者容易混淆的一组概念是Chart Generation、Chart Editing、Text-to-Image Editing、Diagram Understanding。方向输入输出核心难点图表生成数据表或自然语言描述图表图像或代码理解数据、选择合理视觉编码图表问答图表图像 自然语言问题文本答案细粒度视觉信息抽取自然图像编辑图片 编辑指令编辑后的图片保持身份/纹理一致、局部语义准确Edit2TikZ图表图像 编辑指令对应 TikZ 代码反推结构化代码、精确执行属性级修改从表格可以看出Edit2TikZ 位于“结构化输出”和“细粒度图像编辑”的交汇处。它关注的不是怎样生成一张新图而是怎样精准地修改已有图表并把修改结果表达为可编译的矢量代码。4. 从编辑器视角看 Edit2TikZ 的任务拆解既然 Edit2TikZ 是一个面向科学图表编辑的基准那么我们可以站在“人工编辑工作流”的角度看看它究竟要解决哪些编辑类型。4.1 可能被覆盖的编辑操作类型虽然目前我们没有拿到完整数据集的逐一标注列表但综合科研作者日常改图经验一套全面的科学图表编辑基准应该覆盖以下几类操作文本类修改修改坐标轴标题、修改图例文字、修改标签内容、修改注释。对于同一张图把“Accuracy”改成“Precision”需要同步修改对应文本节点和可能受影响的布局位置。数值与几何类修改延长某条曲线、移动某个数据点、调整柱状图高度、改变坐标轴范围。TikZ 中所有视觉对象都有明确坐标数值变化会直接反映到代码坐标参数上。样式类修改修改颜色、线宽、线型虚线/实线、填充样式、透明度。此类修改通常不需要移动对象位置但需要保持同类元素的一致性。结构类修改把一组柱状图叠加模式改成并列模式、把一个折线图转换成柱状图、新增或删除一条曲线。这类操作往往涉及节点数量和图例结构的同时改变难度最大。布局类修改调整标签位置、避免遮挡、修改坐标轴范围以完全显示新曲线。这个在真实论文修改中很常见。4.2 一条样例指令的侧面解读由于暂无原文示例下面用一个“示意性”的简单例子帮助理解。假设原图是一张简单的折线图TikZ 核心代码如下\begin{tikzpicture} \begin{axis}[ xlabel{Epoch}, ylabel{Loss}, legend posnorth east, width8cm, height6cm, ] \addplot coordinates {(1,0.9) (2,0.7) (3,0.5) (4,0.4)}; \addlegendentry{Train} \end{axis} \end{tikzpicture}如果给出的编辑指令是“将训练集曲线移到左侧并且添加一条验证集曲线”一个合格的编辑结果可能是\begin{tikzpicture} \begin{axis}[ xlabel{Epoch}, ylabel{Loss}, legend posnorth east, width8cm, height6cm, ] \addplot coordinates {(1,0.8) (2,0.6) (3,0.4) (4,0.3)}; \addlegendentry{Train} \addplot coordinates {(1,0.95) (2,0.8) (3,0.65) (4,0.55)}; \addlegendentry{Validation} \end{axis} \end{tikzpicture}这里不只是添加一行\addplot还需要保证所有数据点都在坐标轴范围内、图例自动增加、颜色区分不至于混淆。这样的任务对模型的底层推理能力要求明显高于普通“文本到图像”生成。4.3 自动评测可以怎样设计对 benchmark 来说有任务还不够还需要有可信的自动评测指标。Edit2TikZ 的具体指标应以论文原文和官方仓库公布的信息为准但任何类似的基准通常绕不开以下几个层面编译通过率是第一条硬门槛。模型生成的 TikZ 代码必须能被 LaTeX 正确编译。如果代码本身存在语法错误那么后面的一切评测都没有意义。这也是把 TikZ 作为输出格式的一大好处编译结果可以直接验证基础合法性。渲染图的视觉相似度是第二道关卡。将模型生成的代码渲染成 PDF 或 PNG 后可以与“标准答案图”计算相似度。不过图表这类视觉对象的底色多为白色且元素稀疏普通图像相似度指标对单个文本号的差异不敏感。因此通常还需要引入结构匹配方法例如对比坐标轴刻度、图例项数量、曲线长度等关键对象。编辑指令完成度是最有难度的评测。它要求判断输出是否真正执行了指令中的关键动作。例如指令是“改成红色”那么输出图中的相关对象是否变成红色。常用方法包括属性检测、基于视觉模型的问答式评测或者将模型输出代码转成结构化描述并和指令进行语义比对。人工评测依然是 final decision。特别是对于“修改后整体是否自然”“图例是否与图形匹配”“是否存在多余元素”等主观开放性问题人工评分通常比自动指标更能反映真实可用性。5. Edit2TikZ 的研究意义与价值5.1 推动多模态模型在科学数据上的理解如果 Edit2TikZ 所期望的能力真的被攻克那意义远不止于“会改图”。一个能准确根据文本指令编辑 TikZ 代码的模型某种程度上已经具备了对图表元素的精细感知能力比如识别出图中哪些线条属于同一个序列理解柱状图坐标轴刻度和柱子高度之间的数值映射知道图例文本和图形颜色之间的一致关系能区分“标签”“坐标轴”“数据曲线”等不同层级的视觉对象。这些能力恰是科学论文插图理解、科学数据可视化生成、学术图表问答等下游任务共同依赖的底座能力。所以一个高质量的 benchmark 往往能带动一系列上游能力的建设。5.2 对科学写作辅助工具链有直接帮助现在很多写作工具能帮用户生成文本、润色语句却几乎不能在“图表修改”上提供可靠帮助。主要原因有两个第一个是用户图表大多是图片没有可编辑的分层源码第二个是很多图表由 Python 生成修改源码需要在用户的本地重新运行脚本无法在线协作。TikZ 作为学术排版中常见的矢量语言具备很好的良构性和可维护性。更重要的是一段 TikZ 源码可以和文本放在同一个 LaTeX 工程里。如果未来出现一个以 Edit2TikZ 任务为核心的模型它能在 Overleaf 中直接读取用户的图表代码理解渲染后的效果并根据一段自然语言要求输出修订后的代码那么整个学术写作体验都会发生显著改变。5.3 为结构化视觉推理提供新的测试战场当前视觉语言模型在自然图像 caption 或 VQA 上取得的进展并不代表它们能很好地处理结构化图表。一张自然图片里的“第三只羊”含义比较模糊而一张柱状图里的“第三个柱子”则有严格的视觉和语义边界。在这种边界明确的场景下模型做错和做对的判定更清晰也更能暴露模型在空间关系、数值感知、程序生成等方面的短板。因此Edit2TikZ 这类 benchmark 可以作为多模态模型结构化推理能力的试金石。6. 面向科研生产力如何搭建 TikZ 执行与评测环境如果你被 Edit2TikZ 的 idea 吸引想先跑通 TikZ 编译工具链或者想基于 TikZ 做一个自动化图表编辑小工具下面这套环境准备步骤可以直接参考。6.1 本地安装 TeX Live / MacTeXTikZ 是 LaTeX 宏包所以第一件事是安装 TeX 发行版。最常用的是 TeX Live、MacTeX 和 MiKTeX。在 Ubuntu / Debian 系 Linux 上可以通过 apt 安装完整工具链sudo apt-get update sudo apt-get install texlive-latex-extra texlive-pictures如果你只需要测试 TikZ 图表也可以只安装核心包但对完整 TikZ 功能来说texlive-pictures是必要的。如果后续需要编译论文中经常出现的中文标签或特殊字体还需要额外安装texlive-lang-chinese等语言支持包。在 macOS 上最简单的方案是安装 MacTeXbrew install --cask mactexMacTeX 安装包比较大需要一定的耐心。如果不希望本地安装也可以直接使用 Overleaf 在线 LaTeX 编辑器无需任何耗时配置只要新建项目并把代码贴进去即可。6.2 最简单的自动化编译脚本在命令行里编译单个 TikZ 文件非常简单pdflatex -interactionnonstopmode figure.tex-interactionnonstopmode的作用是让编译器遇到错误时不暂停等待输入便于脚本批量处理。如果编译过程中出现问题通常会在日志中输出错误行号如果最终生成的 PDF 存在说明代码整体通过了编译。在 Python 环境中如果你需要批量编译若干组模型输出可以用subprocess封装一个函数import subprocess from pathlib import Path def compile_tikz(tex_path: Path) - bool: 编译一个 TikZ/LaTeX 文件返回是否成功生成 PDF。 result subprocess.run( [pdflatex, -interactionnonstopmode, -halt-on-error, str(tex_path)], capture_outputTrue, textTrue, cwdtex_path.parent, ) pdf_path tex_path.with_suffix(.pdf) return result.returncode 0 and pdf_path.exists()需要注意pdflatex编译过程通常需要运行两遍才能正确解析交叉引用但单独绘制 TikZ 图时一遍通常就足够了。如果图中包含\ref这类交叉引用则建议编译两遍。6.3 渲染 PDF 为图像方便视觉评测如果你的模型评测流程需要计算图像相似度需要把 PDF 转成 PNG。常用工具是pdftoppm它来自poppler-utils工具包pdftoppm -png -r 150 figure.pdf figure_preview这条命令会把figure.pdf的第 1 页转换成figure_preview-1.png分辨率 150 DPI。对于图表这种文字密集的对象150 DPI 已经能基本满足视觉对比需求。在 Python 中也可以用pdf2image库完成转换from pdf2image import convert_from_path images convert_from_path(figure.pdf, dpi150, first_page1, last_page1) images[0].save(figure_preview.png)需要注意的是pdf2image同样依赖系统中的pdftoppm工具。在 Windows 上使用前需要先安装 poppler 并配置环境变量。6.4 构建一个简易回归测试集如果你不是为了复现论文的实验而是想做一些工程化尝试比如“验证多个版本的模型是否回归变差”可以搭建一个非常简单的测试流程维护一组input.tex原始代码调用模型或程序生成edited.tex先尝试编译失败的样本直接记为 fail编译成功的样本再渲染 PNG计算和人工标注参考图的相似度。下面是一个用于评估的“伪代码级” Python 示例import json from pathlib import Path def evaluate_samples(sample_dir: Path): results [] for tex_file in sample_dir.glob(*_edited.tex): ok compile_tikz(tex_file) results.append({ sample: tex_file.stem, compile_ok: ok, # similarity: ... # 此处可接入相似度模型 }) return results if __name__ __main__: samples Path(./samples) result_list evaluate_samples(samples) print(json.dumps(result_list, indent2, ensure_asciiFalse))这种工程实现并不能完全复现 Edit2TikZ 论文中的评测指标却能帮助你围绕“TikZ 代码生成与编辑”快速建立实验闭环。7. 技术挑战模型要过哪几关才能做好 Edit2TikZ从算法角度来看一个模型如果想在 Edit2TikZ 这类 benchmark 上取得好成绩至少要跨过下面几道关卡。7.1 草图理解能力模型第一步要做的是“看图”。科学图表元素密度高文字混排在图形中。普通视觉编码器面对一张折线图时可能会把坐标轴刻度看成普通文字噪声把数据线误认为背景纹理。要让模型准确理解图表视觉编码器需要具备很好的细粒度目标检测能力或者通过额外 OCR 模块提取图纸上的文字信息与视觉特征融合。7.2 像素到代码的反向映射看懂图还远不够。模型需要在内部完成“图中的一条蓝色直线对应 TikZ 代码里的哪一条语句”这样的对齐。这其实是一种隐式程序解析。和代码生成反过来传统代码生成是从自然语言到指令而 Edit2TikZ 是从渲染结果到源代码。模型要对 TikZ 的渲染逻辑有很好的先验认知比如理解circle (1.5pt)渲染出来是一个小圆点node[right]会让文字出现在路径终点右侧。7.3 精确属性修改当模型确定了要修改的语句后它必须精确地修改对应属性。一个容易出错的地方是模型误把与目标对象外观相似的其他对象也一起修改。例如指令说“把训练集曲线改成虚线”模型可能会把所有曲线都改成虚线因为它对“训练集曲线”和图例的对应关系不够确定。7.4 长序列与代码一致性TikZ 代码通常不短尤其当图表包含多个数据系列和复杂注释时单段代码可能达到几百行。大模型在长序列生成中容易发生上下文丢失问题表现为生成到后半段时忘了图例颜色已经在前半段定义过导致语义冲突。这也是评测中使用“编译通过率”作为基础指标不够用的原因代码能编译但视觉结果不一定正确。7.5 泛化到多领域图表科学图表并不只有坐标折线图。还包括柱状图、饼图、箱线图、热力图、流程图、神经网络结构示意图甚至更复杂的二维坐标系示意图。不同图表在 TikZ 中的实现方式差异很大。神经网络结构图可能需要大量相对定位节点而不像坐标折线图依靠坐标轴环境。因此Edit2TikZ 中被定义为 Comprehensive很可能意味着它试图覆盖尽可能多的图表类型和编辑难度防止模型只在单一形态上刷到高分。8. 如果我想参与这个方向应该怎么做这里给对相关方向感兴趣的研究者和开发者一些务实建议。8.1 先手工积累 TikZ 语感不管你的研究方向是大模型还是智能体如果对 TikZ 语法本身不熟做评测和数据分析时会非常吃力。建议花一点时间系统阅读 TikZ 官方文档的教程部分特别是 coordinate system、node、basic drawing 和 plot 相关章节。然后尝试从零描述一张论文里常见的图表。8.2 从“编辑子任务”而不是“全流程”切入完整 Edit2TikZ 任务难度较高。如果你想做一个针对性工作可以先从子任务入手比如只做“坐标轴文本替换”或者只做“颜色属性修改”。这类子任务容易评估、容易可视化适合研究大模型是否具备属性级修改能力也能为研究团队积累中间结果。8.3 使用编译反馈作为可学习的信号TikZ 代码可以被编译器验证。这个特性意味着你可以构建一个带反馈的强化学习流程或搜索流程让模型先生成一份代码如果编译失败读取错误日志让模型尝试修复。这个过程在很大程度上类似于代码生成中的 “self-debugging”。和纯视觉生成模型相比结构化代码输出的好处在于反馈信号廉价且确定。8.4 关注视觉-代码对齐数据集建设当前很多大模型在通用代码生成上表现优秀但在 TikZ 特定语言上因为训练语料偏少而能力不足。如果社区能积累更多“图表渲染 — TikZ 源码 — 编辑指令”三元组数据会显著提高模型在任务上的微调效果。Edit2TikZ 这类 benchmark 出现后最大的短期价值或许正在于推动建设配套的数据生成流程和工具。9. 常见问题与误区问题常见误区建议理解Edit2TikZ 就是让模型用 TikZ 画图吗认为它是传统“文本生成图表”任务它的关键点在“编辑”输入通常包含原图和编辑指令比单纯生成更强调代码级局部修改评测主要看编译是否通过认为编译通过等于正确编译只是合法门槛视觉一致性和指令完成度才是更难评测的环节这类基准离工程落地很远认为只是学术圈自娱自乐一旦能力成熟可以直接嵌入 Overleaf、TeXStudio 等写作工具大模型的代码能力足够处理 TikZ认为会写 Python 就会自动会 TikZTikZ 属于领域专用语言训练语料少通用大模型并不一定能够熟练掌握细节渲染逻辑不如直接让模型生成 SVG认为 SVG 生态更通用SVG 也能表示矢量图但在 LaTeX 学术写作流程中 TikZ 与字体、公式、文风的一致性更好实际使用中还有一个容易忽视的坑TikZ 本身的版本兼容性。不同 TeX Live 版本对某些 TikZ 库或命令的支持程度不同。你在本地测试可以通过的代码放到新版本的 Overleaf 项目中可能因为宏包版本不同而表现异常。建议在跑 benchmark 前固定 TeX Live 发行版或使用 Docker 镜像确保评测环境一致。10. 总结与后续学习建议Edit2TikZ 不是一篇简单的“新数据集发布”消息它代表了一类重要趋势越来越多的科研任务开始从“生成一张图画”走向“对图画做结构化理解与编辑”。让模型输出 TikZ 代码这一设计把科学图表编辑从像素操作转换成了代码级修改极大增强了任务的精确度和自动评测可能性。如果你想跟进这个方向建议从三条路线中选择一条深耕第一是熟悉 TikZ 与 LaTeX 生态做一个可复现的项目环境第二是研究如何构建“渲染图—代码—指令”三元组数据扩充高质量训练语料第三是探索利用编译反馈来提升多模态语言模型的 TikZ 输出质量。无论哪条路线TikZ 本身都值得先当作一门“新语言”去积累熟练度。等你能一眼看出图中的元素大概率由什么代码生成时真正有难度的问题才刚向你展开。