多模态大模型解析表格任务:效果分析与实战总结
多模态大模型在简单表格解析上表现良好,但在处理合并单元格及长表时效果不佳。实测显示 GPT-4-o、Claude 3.5 等闭源模型与 Qwen2-VL、MiniCPM 等开源模型均存在识别错误。主要瓶颈在于视觉语言模型的 Tokenizer 对空间结构不敏感及预训练数据中复杂表格不足。建议生产环境结合传统 OCR 布局分析方案,谨慎依赖纯多模态大模型处理复杂表格任务。

多模态大模型在简单表格解析上表现良好,但在处理合并单元格及长表时效果不佳。实测显示 GPT-4-o、Claude 3.5 等闭源模型与 Qwen2-VL、MiniCPM 等开源模型均存在识别错误。主要瓶颈在于视觉语言模型的 Tokenizer 对空间结构不敏感及预训练数据中复杂表格不足。建议生产环境结合传统 OCR 布局分析方案,谨慎依赖纯多模态大模型处理复杂表格任务。

近期在探索多模态大模型(VLM)的落地应用场景时,除了常见的问答交互外,文档解析被视为最具潜力的方向之一。多模态大模型具备强大的 OCR 能力,且知识加工对于大模型应用至关重要。然而,现有的文档拆解 API 或项目在复杂场景下表现往往不尽如人意,特别是涉及夹杂公式的文本、复杂表格等结构。
基于此思路,我们尝试利用多模态大模型进行表格解析任务。经过一系列实测,发现虽然简单表格处理效果尚可,但在面对合并单元格及长表时,现有模型的表现存在显著瓶颈。本文旨在分享测试过程中的技术细节、结果分析以及针对该问题的思考。
本次测试涵盖了多个主流模型,包括闭源上限模型 GPT-4o、Claude 3.5,以及开源模型 Qwen2-VL-7B、MiniCPM2.6-V、InternVL-2.5-8B 和 Qwen2-VL-72B。
测试对象为一个规则表格,主要难点在于包含合并单元格。从直观感受来看,此类表格难度中等。
此案例增加了文字密度,并引入了交错的合并单元格(如第 6、7 行的 2、4 列)。
这是一个视觉上较为复杂的长表格,包含多层嵌套和密集信息。
综合评估,在复杂表格和长表场景下,多模态大模型的可用水平估计仅为 20%-30%,距离生产环境要求仍有较大差距。即便进行了微调,若数据量不足或模型基座不够强,效果改善依然有限。
注意:以上结论主要针对合并单元格及长表场景。对于简单短表,多模态效果确实不错,但考虑到传统方法在此类场景下同样成熟且性价比更高,引入大模型可能并非最优解。
测试中使用了统一的系统提示词,旨在规范模型输出为 HTML 表格格式。尽管尝试过多种调优,但对最终效果的提升并不明显。
## Role
你是一位有多年经验的 OCR 表格识别专家。
## Goals
需要通过给定的图片,识别表格里的内容,并以 html 表格结果格式输出结果。
## Constrains
- 需要认识识别图片中的内容,将每个表格单元格中的内容完整的识别出来,并填入 html 表格结构中;
- 图片中的表格单元格中可能存在一些占位符需要识别出来,例如 "-"、"—"、"/" 等;
- 输出表格结构一定遵循图片中的结构,表格结构完全一致;
- 特别注意图片中存在合并单元格的情况,结构不要出错;
- 对于内容较多的图片,一定要输出完整的结果,不要断章取义,更不要随意编造;
- 最终输出结果需要是 html 格式的表格内容。
## Initialization
请仔细思考后,输出 html 表格结果。
以 Qwen2-VL-7B 为例,双卡并行推理配置如下:
vllm serve ./Qwen2-VL-7B-Instruct/ \
--served-model-name Qwen2-VL-7B-Instruct \
--port 54188 \
--host 0.0.0.0 \
--trust-remote-code \
--gpu-memory-utilization 0.98 \
--tensor-parallel-size 2
参数说明:
./Qwen2-VL-7B-Instruct/:模型本地路径。--served-model-name:调用时的模型名称标识。--tensor-parallel-size:多卡并行数量,显存不足时可通过增加显卡数量解决。使用 OpenAI SDK 兼容接口进行调用,支持 Base64 编码的图片输入。
from openai import OpenAI
import base64
api_key = "EMPTY"
base_url = "http://0.0.0.0:54188/v1"
client = OpenAI(
api_key=api_key,
base_url=base_url
)
image_path = "test.png"
with open(image_path, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
base64_image = encoded_string.decode('utf-8')
response = client.chat.completions.create(
model="Qwen2-VL-7B-Instruct",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{base64_image}"
}
},
{
"type": "text",
"text": """## Role 你是一位有多年经验的 OCR 表格识别专家。 ## Goals 需要通过给定的图片,识别表格里的内容,并以 html 表格结果格式输出结果。 ## Constrains - 需要认识识别图片中的内容,将每个表格单元格中的内容完整的识别出来,并填入 html 表格结构中; - 图片中的表格单元格中可能存在一些占位符需要识别出来,例如"-"、"—"、"/"等; - 输出表格结构一定遵循图片中的结构,表格结构完全一致; - 特别注意图片中存在合并单元格的情况,结构不要出错; - 对于内容较多的图片,一定要输出完整的结果,不要断章取义,更不要随意编造; - 最终输出结果需要是 html 格式的表格内容。 ## Initialization 请仔细思考后,输出 html 表格结果。 """
}
]
}
]
)
res = response.choices[0].message.content
print(res)
为了优化 HTML 表格的展示效果,可额外添加 CSS 样式:
<style>
table {
border-collapse: collapse;
width: 40%;
margin: 0 auto;
}
th, td {
border: 1px solid black;
padding: 8px;
text-align: left;
}
</style>
<div>{生成的表格结果}</div>
在尝试通过微调提升效果时,发现即使收敛很快,效果提升也不明显。可能的原因包括:
参考 CC-OCR 榜单(CC-OCR: A Comprehensive and Challenging OCR Benchmark for Evaluating Large Multimodal Models in Literacy),在表格任务上的表现普遍不理想。这进一步印证了当前多模态大模型在结构化文档理解方面的短板。该榜单链接:https://arxiv.org/abs/2412.02210
鉴于多模态大模型在复杂表格解析上的不确定性,在生产环境中建议采取以下策略:
多模态大模型在文档解析领域展现了巨大的潜力,特别是在非结构化文本的理解上。然而,在表格解析这一特定任务上,尤其是涉及合并单元格和长表时,其表现尚未达到稳定可用的标准。目前的瓶颈主要源于模型架构对空间结构的感知能力不足以及训练数据的匮乏。开发者在构建 RAG 或文档处理系统时,应理性评估任务复杂度,避免盲目依赖单一的大模型方案,采用混合技术栈可能是更稳健的选择。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online