我最早以为,中文图表理解这件事,只要模型识字就行。毕竟图表无非是文字、数字和线条的组合。结果一张简单的饼图把我治了:“线上渠道 45%”、“线下渠道 30%”、“其他 25%”,我问“线下渠道比其他多多少”,模型一本正经地答:“5%”。它没错,但这只是数字相减,它忽略了问题的意图是对两个扇区做比较。这件事让我开始较真:Qwen-VL 和 InternVL,到底谁更会读中文图表?

在开源多模态大模型里,阿里的 Qwen-VL 和上海AI实验室等机构主导的 InternVL 是最常被拿来对比的两个。它们都能识图、聊图、看文档,但在“中文图表理解”这个细分任务上,差异比很多人想象中大。这篇文章我会从架构、中文特殊性、实际体验和评测局限四个角度展开,最后给你一个可操作的选型建议。这里说的 Qwen-VL 和 InternVL,都指它们最新的开源系列(Qwen2-VL 和 InternVL2),因为我对比时发现,早期版本和最新版本在多模态能力上简直是两个模型。
图表理解不是识字,是“读图+推理”
一张图表至少包含三层信息:
- 文字层:标题、坐标轴标签、图例、数据标注。这一层主要靠OCR能力,但中文图表里的文字不是标准印刷体,常有旋转、手写、模糊、小字号。
- 结构层:饼图的扇区大小、折线的上升下降、柱子的高低、多系列的分布。模型需要理解“粗细”“长短”“颜色深浅”这些视觉元素对应的数值含义。
- 推理层:比较、求和、找极值、算增长率。这需要把前两层提取到的零散信息组织成逻辑链条。
中文图表还有一个英文不常出现的麻烦:单位混写。“1.2亿”“8,500万”“同比增长5%”经常出现在同一张图里,模型既要懂汉字数字,也要理解“亿”和“万”的换算。许多翻译模型在这一步就露馅了。
两种架构哲学:看得细 vs 想得深
我查阅了Qwen2-VL官方博客和InternVL的GitHub仓库,发现两者对“视觉信号如何变成语言模型能处理的序列”给出了不同答案。
| 维度 | Qwen-VL(以Qwen2-VL为例) | InternVL(以InternVL2为例) |
|---|---|---|
| 视觉编码器 | 改进版ViT,支持原生动态分辨率,图像按内容自适应切块 | InternViT,通过像素混合压缩视觉token |
| 语言底座 | Qwen2系列 | 可插拔,常用InternLM2.5或Qwen2 |
| 视觉-语言对齐 | MLP投影 + M-RoPE统一图像坐标 | 渐进式像素对齐 + 特征对齐,双流融合 |
| 视觉token策略 | 动态分辨率,token数随图像细节变化,长图优先保真 | Pixel Shuffle合并相邻patch,固定token预算,注重效率 |
“看得细”意味着什么?举个例子,一张财报截图里,坐标轴数值字体很小,但图例中又有大号标题。Qwen-VL的动态分辨率会把图像分成多个子块,每个子块单独编码,再用M-RoPE标记子块的空间位置,于是模型既能看清小字,又知道它们属于同一张图。InternVL的Pixel Shuffle则先把相邻像素按2×2拼成一个token,相当于先做了一次“图像压缩”,细节自然损失一些,但换来更长的上下文能力,可以做多图对比和复杂推理。
InternVL 的“想得深”也不是免费的午餐。为了让语言模型直接对接视觉特征,它采用了渐进式对齐:先锁定视觉编码器,只更新 LLM 与投影层,等整体对齐后再放开微调。这个过程对算力要求很高。而 Qwen-VL 直接用 MLP 投影,简单粗暴,但这反而让它在海量数据上更容易收敛。所以两者没有绝对优劣,只是妥协方向不同。
中文图表的四个“坑”
这些坑是我在测试中文财务图表时反复遇到的,它们比英文图表更难处理:
- 单位藏在角落里:“净利润(亿元)”写在图顶,坐标轴只有数字0、10、20。模型必须把图顶的单位和坐标轴数字联系起来,才能回答“2023年净利润是多少”。
- 百分号和百分点:增长5%和增加5个百分点,英文都叫percent,中文是两种概念。很多模型会把它们混为一谈,导致对“同比增长率”这类指标的回答出错。
- 汉字数字与阿拉伯数字混排:“2019年,营收突破六千万”这种表达,模型需要理解汉字数字和阿拉伯数字是同一量纲。
- 图例位置飘忽:中文图表里图例可能放在右下角、顶部,甚至沿着折线逐一标注。模型必须自己建立图例和数据图形的映射。
如果一个模型没有见过大量类似布局的中文图表,它很难在四者同时出现的场景下保持稳定。
一个具体的对比场景
我用一张某公司财报截图(折线图,标题是“近五年净利润增长趋势”,纵轴“同比增长率(%)”)分别问两个模型:“2021年比2020年高了多少个百分点?”
Qwen-VL 答:“2021年比2020年高了2.1个百分点。”
InternVL 答:“2021年比2020年高了2.1%。”
从数值看都一样,但一个说“个百分点”,一个说“%”。在严谨的财务报告里,这意味着结论性质不同:一个是百分点差值,一个是相对增长率。这个细节暴露了模型对中文量词的掌握深度。
InternVL 也不是没有优势。当我追问:“如果2021年的净利润为3.4亿元,且2022年同比增长12%,那么2022年比2020年增长了多少?” 这时需要两步推理,InternVL 在输出中间步骤时往往更规范——它会先列公式,再代入数字。Qwen-VL 偶尔会直接给结果,缺少过程。
这两种风格没有绝对好坏,取决于你要的是“读图抄数”还是“看图计算”。
公开评测的局限
你可能已经注意到,我没有给出一串榜单分数。原因在于,OpenCompass 的 MMBench 中文榜上,这两个模型的得分咬得很紧,但这类评测有一个天然的盲区:题目是固定的,模型可能在预训练或指令微调阶段见过类似题目,背答案也能得高分。而真实世界里的中文图表,“布局不规范、数据有噪声”才是常态。
另外,多模态评测还有一个隐性陷阱:相同的问题,换一种问法,结果可能完全不同。比如“哪一年最高”和“峰值出现在哪一年”在语义上等价,但模型可能一个答对,一个答错。这就是指令跟随的稳定性问题,也是我不能只给你看一个总分的原因。
我最早也迷信“谁分高谁更强”,直到我用自己下载的十几张真实财报截图测试,发现有些模型在榜单上名列前茅,一旦遇到被水印遮挡的坐标轴就彻底崩溃。那一刻我明白了:跑分测的是上限,真实场景看的是下限。
所以,如果你要选型,最靠谱的流程是:拿你自己业务里的图片整理一个20题的测试集,分别让两个模型跑一遍,甚至让它们解释“为什么这么答”,再决定用哪个。
我的最终建议
- 如果任务以看图提取信息为主(例如OCR发票、读取PDF里的图表数据),选 Qwen-VL,它的动态分辨率对细枝末节更友好。
- 如果任务要求基于图表做多步推理和计算(例如财务分析、数据洞察),重点考察 InternVL 搭配大语言模型的版本(如 InternVL2-26B/76B),它的推理链条更清晰。
- 如果预算有限且要求灵活,可以组合使用:先让 Qwen-VL 把图表结构转录成Markdown表格,再交给普通LLM做计算。这是我目前最推荐的一种“取长补短”方案。
部署方面,除了精度,还要考虑显存和速度。Qwen2-VL-7B 和 InternVL2-7B 在单张 24GB 显卡上都能跑;但如果你选择 26B 或 76B,即使量化也要多张卡,延迟也会明显增加。建议先从小模型试起,确认效果再升级。
最后,我想说一个观点:这两个模型都在快速迭代,今天的对比结果三个月后可能完全反转。真正值得你花时间理解的,是“动态分辨率”和“token压缩”这两个设计理念。它们决定了多模态模型如何处理一张信息密度极高的图表——是保住细节,还是牺牲细节换取全局理解。想通了这一点,你就能随时判断新模型到底强在哪。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/379.html