ChartCoder: Advancing Multimodal Large Language Model for Chart-to-Code Generation

📄 arXiv: 2501.06598v3 📥 PDF

作者: Xuanle Zhao, Xianzhen Luo, Qi Shi, Chi Chen, Shuo Wang, Zhiyuan Liu, Maosong Sun

分类: cs.AI

发布日期: 2025-01-11 (更新: 2025-07-02)

备注: Accepted by ACL 2025 Main, Camera Ready

🔗 代码/项目: GITHUB


💡 一句话要点

提出ChartCoder,首个图表到代码生成的多模态大语言模型,并构建大规模数据集Chart2Code-160k。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 多模态大语言模型 图表到代码生成 代码LLM 数据集构建 Snippet-of-Thought 图表理解 代码生成 数据可视化

📋 核心要点

  1. 现有MLLM在图表理解中存在信息损失,且图表到代码生成任务面临可执行性低和数据不足的挑战。
  2. ChartCoder利用代码LLM作为语言骨干,并提出Snippet-of-Thought方法,增强代码可执行性和图表细节恢复。
  3. ChartCoder在Chart2Code-160k数据集上进行训练,实验结果表明其性能超越现有开源MLLM。

📝 摘要(中文)

多模态大语言模型(MLLMs)在图表理解任务中表现出卓越的能力。然而,使用文本描述解释图表通常会导致信息丢失,因为它无法完全捕捉图表中嵌入的密集信息。相比之下,将图表解析为代码提供了无损表示,可以有效地包含所有关键细节。尽管现有的开源MLLMs在图表理解任务中取得了成功,但在应用于图表到代码任务时,它们仍然面临两个主要挑战:(1)生成代码的低可执行性和图表细节的糟糕恢复;(2)缺乏大规模和多样化的训练数据。为了应对这些挑战,我们提出了ChartCoder,这是第一个专门用于图表到代码的MLLM,它利用代码LLM作为语言骨干来增强生成代码的可执行性。此外,我们引入了Chart2Code-160k,这是第一个用于图表到代码生成的大规模和多样化数据集,并提出了Snippet-of-Thought (SoT)方法,该方法将直接的图表到代码生成数据转换为逐步生成。实验表明,ChartCoder仅使用7B参数,在图表到代码基准测试中超越了现有的开源MLLM,实现了卓越的图表恢复和代码可执行性。

🔬 方法详解

问题定义:现有方法在图表理解任务中,使用文本描述会造成信息损失,无法充分捕捉图表中的细节。而将图表解析为代码可以提供无损表示。然而,现有开源MLLM在图表到代码生成任务中,生成的代码可执行性低,且无法很好地恢复图表细节,同时缺乏大规模多样化的训练数据。

核心思路:ChartCoder的核心思路是利用代码LLM作为语言骨干,增强生成代码的可执行性。此外,通过构建大规模数据集Chart2Code-160k,并提出Snippet-of-Thought (SoT)方法,将直接的图表到代码生成数据转换为逐步生成,从而提升模型的学习效果。

技术框架:ChartCoder的整体框架包含一个视觉编码器(用于处理图表图像),一个代码LLM(作为语言骨干),以及一个训练策略。视觉编码器将图表图像转换为视觉特征,代码LLM接收视觉特征和文本提示,生成对应的代码。Snippet-of-Thought方法用于生成逐步的训练数据。

关键创新:ChartCoder的关键创新在于:(1) 它是第一个专门针对图表到代码生成的MLLM;(2) 它利用代码LLM作为语言骨干,显著提升了生成代码的可执行性;(3) 它构建了大规模多样化的Chart2Code-160k数据集,并提出了Snippet-of-Thought方法,为图表到代码生成任务提供了新的训练范式。

关键设计:ChartCoder使用了7B参数的代码LLM作为语言骨干。Snippet-of-Thought方法将图表到代码的生成过程分解为多个步骤,例如,首先识别图表类型,然后提取数据,最后生成代码。Chart2Code-160k数据集包含16万个图表到代码的样本,涵盖多种图表类型和代码风格。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

ChartCoder在图表到代码的基准测试中,仅使用7B参数就超越了现有的开源MLLM,在图表恢复和代码可执行性方面都取得了显著提升。这表明ChartCoder在图表到代码生成任务中具有强大的能力,并且具有很大的潜力。

🎯 应用场景

ChartCoder在数据可视化、自动化报表生成、数据分析等领域具有广泛的应用前景。它可以帮助用户快速将图表转换为可执行的代码,从而加速数据分析和可视化流程,提高工作效率。未来,ChartCoder可以进一步扩展到支持更多类型的图表和编程语言,并应用于更复杂的场景。

📄 摘要(原文)

Multimodal Large Language Models (MLLMs) have demonstrated remarkable capabilities in chart understanding tasks. However, interpreting charts with textual descriptions often leads to information loss, as it fails to fully capture the dense information embedded in charts. In contrast, parsing charts into code provides lossless representations that can effectively contain all critical details. Although existing open-source MLLMs have achieved success in chart understanding tasks, they still face two major challenges when applied to chart-to-code tasks: (1) Low executability and poor restoration of chart details in the generated code and (2) Lack of large-scale and diverse training data. To address these challenges, we propose \textbf{ChartCoder}, the first dedicated chart-to-code MLLM, which leverages Code LLMs as the language backbone to enhance the executability of the generated code. Furthermore, we introduce \textbf{Chart2Code-160k}, the first large-scale and diverse dataset for chart-to-code generation, and propose the \textbf{Snippet-of-Thought (SoT)} method, which transforms direct chart-to-code generation data into step-by-step generation. Experiments demonstrate that ChartCoder, with only 7B parameters, surpasses existing open-source MLLMs on chart-to-code benchmarks, achieving superior chart restoration and code excitability. Our code is available at https://github.com/thunlp/ChartCoder.