news 2026/10/20 19:41:26

PaddleX 图表解析模块实战:基于 PP-Chart2Table 的多模态图表转表格指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PaddleX 图表解析模块实战:基于 PP-Chart2Table 的多模态图表转表格指南
  • 人工智能
  • 大模型
  • 低代码
  • 计算机视觉
  • 深度学习
  • 模型推理服务

【免费下载链接】PaddleX

All-in-One Development Tool based on PaddlePaddle

项目地址:https://gitcode.com/gh_mirrors/pa/PaddleX
点击查看免费下载

一、导读

图表解析(Chart Parsing)是 OCR 领域中面向多模态视觉语言模型(VLM)的新兴技术,其核心目标是将柱状图、折线图、饼图等各类可视化图表自动转换为底层数据表格并结构化输出。本文以 PaddleX 文档型视觉语言模型模块中的PP-Chart2Table模型为主线,完整讲解该模块的模型能力、Python API 快速集成、参数配置、结果处理、权重转换以及源码级实现原理。读完本文,你将能够:使用 PaddleX 的create_model在数行代码内完成图表到表格的推理;理解predict与结果对象的完整参数语义;掌握通过命令行将 Paddle 动态图权重转换为safetensors格式的流程;并从源码层面理解 PP-Chart2Table 的提示词模板与图像预处理细节。

二、模块概述:从"看图"到"用数据"

传统的图表解析方案通常依赖图表关键点检测等复杂模型的串联编排,涉及大量先验假设,鲁棒性不足。而本文档所属模块采用最新的 VLM 技术,以数据驱动的方式从海量真实数据中学习鲁棒特征,将各类图表直接映射为结构化表格输出。

该能力的应用场景覆盖金融分析、学术研究、商业报告等领域,典型用例包括:

  • 从财务报表中快速提取增长趋势数据;
  • 从科研论文中抽取实验对比数值;
  • 从市场调研中获取用户分布统计。

其价值在于帮助用户从"看图"转变为"用数据"——即让图表背后的数值可以被程序直接消费、计算和分析,而非仅停留在视觉理解层面。

三、支持的模型列表

说明:以下推理时间仅包含模型推理时间,不包含前后处理时间。

模型模型下载参数量(B)存储大小(GB)模型得分说明
PP-Chart2Table推理模型下载0.581.480.60PP-Chart2Table 是 PaddlePaddle 团队开发的中英文图表解析专用 SOTA 多模态模型。其高性能源于新颖的 "Shuffled Chart Data Retrieval" 训练任务,结合精细的 token 掩码策略,显著提升了图表转数据表格的能力;并借助基于高质量种子数据、RAG 与 LLM persona 设计的高级数据合成流水线扩充训练集;针对大规模无标注分布外(OOD)数据,采用两阶段蒸馏流程保证在真实数据上的适应性与泛化性。内部评测显示,PP-Chart2Table 不仅优于同规模模型,在关键应用上的精度也可与 70 亿参数的视觉语言模型(VLM)相当。

注意:上述模型得分为内部评测集模型测试结果,共 1801 条数据,涵盖柱状图、折线图、饼图等各类图表,以及财务报表、法律法规、合同等多种场景下的测试样本,目前暂无公开计划。

❗注意:PP-Chart2Table 模型已于 2025 年 6 月 27 日升级。如需使用旧版本模型的权重,请点击旧版权重下载链接获取。

从仓库源码看,PP-Chart2Table 被登记在文档型视觉语言模型(doc_vlm)模块的模型清单中(见 paddlex/modules/doc_vlm/model_list.py),与 PP-DocBee 系列、PaddleOCR-VL 系列并列;同时它出现在 PaddleX 官方模型的登记表中(见 paddlex/inference/utils/official_models.py),属于开箱即用的官方内置模型之一。

四、快速集成:数行代码完成图表推理

4.1 前置安装

❗ 快速集成前,请先安装 PaddleX wheel 包,具体安装流程请参阅 PaddleX 本地安装教程。

完成 whl 包安装后,即可通过几行代码完成文档型视觉语言模型模块的推理。你可以在该模块下自由切换模型,也可以将文档型视觉语言模型的推理能力集成进自己的项目。运行以下代码前,请先将示例图片下载到本地。

4.2 Python 推理代码

from paddlex import create_model model = create_model('PP-Chart2Table') results = model.predict( input={"image": "chart_parsing_02.png"}, batch_size=1 ) for res in results: res.print() res.save_to_json(f"./output/res.json")

运行后,得到的原始结果如下:

{'res': {'image': 'chart_parsing_02.png', 'result': '年份 | 单家五星级旅游饭店年平均营收 (百万元) | 单家五星级旅游饭店年平均利润 (百万元)\n2018 | 104.22 | 9.87\n2019 | 99.11 | 7.47\n2020 | 57.87 | -3.87\n2021 | 68.99 | -2.9\n2022 | 56.29 | -9.48\n2023 | 87.99 | 5.96'}}

结果参数含义:

  • image:待预测输入图片的路径;
  • result:模型预测得到的结果信息。

终端中可视化打印的预测结果如下:

年份 | 单家五星级旅游饭店年平均营收 (百万元) | 单家五星级旅游饭店年平均利润 (百万元) 2018 | 104.22 | 9.87 2019 | 99.11 | 7.47 2020 | 57.87 | -3.87 2021 | 68.99 | -2.9 2022 | 56.29 | -9.48 2023 | 87.99 | 5.96

可以看到,模型将一张"五星级旅游饭店年度营收与利润"的图表直接解析成了带表头与数值行的 Markdown 风格表格文本,数值列、年份列均被准确还原。

五、API 参数详解

5.1create_model参数

create_model用于实例化文档型视觉语言模型(此处以PP-Chart2Table为例),具体参数说明如下:

参数说明类型可选值默认值
model_name模型名称strNoneNone
model_dir模型存储路径strNoneNone
device模型推理设备str支持指定具体 GPU 卡号如"gpu:0"、其他硬件具体卡号如"npu:0"、CPU 为"cpu"gpu:0
use_hpip是否启用高性能推理插件。当前暂不支持boolNoneFalse
hpi_config高性能推理配置。当前暂不支持dict|NoneNoneNone

其中model_name必须指定。指定model_name后,默认使用 PaddleX 内置模型参数;在此基础上,若再指定model_dir,则使用用户自定义模型。

值得注意的细节:在 paddlex/inference/models/doc_vlm/predictor.py 中可以看到,当模型名属于 PP-Chart2Table 系列时,若指定use_hpip=True,推理框架会发出The PP-Chart2Table series does not support 'use_hpip=True' for now.的警告并忽略该选项,这与文档中"当前暂不支持高性能推理插件"的说明一致。

5.2predict()方法参数

调用文档型视觉语言模型的predict()方法进行推理预测,其参数包括input、batch_size,具体说明如下:

参数说明类型可选值默认值
input待预测数据dictDict。多模态模型对输入形式要求不同,需依据具体模型确定。具体而言:PP-Chart2Table 的输入形式为{'image': image_path}None
batch_size批大小int整数1

5.3 预测结果处理

每个样本的预测结果是对应的 Result 对象,支持打印与保存为json文件等操作:

方法说明参数类型参数说明默认值
print()将结果打印到终端format_jsonbool是否使用JSON缩进格式化输出内容True
indentint指定缩进级别以美化输出的JSON数据,提升可读性,仅在format_json为True时生效4
ensure_asciibool控制是否将非ASCII字符转义为Unicode。为True时所有非ASCII字符被转义;为False时保留原字符,仅在format_json为True时生效False
save_to_json()将结果保存为 json 格式文件save_pathstr文件保存路径。为目录时,保存的文件名与输入文件类型名一致None
indentint指定缩进级别以美化输出的JSON数据,提升可读性,仅在format_json为True时生效4
ensure_asciibool控制是否将非ASCII字符转义为Unicode。为True时所有非ASCII字符被转义;为False时保留原字符,仅在format_json为True时生效False

此外,还可以通过属性直接获取预测结果:

属性说明
json以json格式获取预测结果

在仓库中,该结果对象继承自文档型 VLM 的DocVLMResult类(见 paddlex/inference/models/doc_vlm/result.py),而DocVLMResult又继承自paddlex/inference/models/common/result中的BaseResult,因此天然支持print()、save_to_json()与json属性等统一的 PaddleX 结果接口能力。

关于 PaddleX 单模型推理 API 的更多用法,可参考 PaddleX 单模型 Python 脚本使用说明。

六、YAML 配置入口:命令行与引擎视角

除了 Python API,PaddleX 还提供了 YAML 配置文件作为统一入口。PP-Chart2Table 的模型配置位于 paddlex/configs/modules/chart_parsing/PP-Chart2Table.yaml,内容如下:

Global: model: PP-Chart2Table mode: predict # only support predict device: gpu:0 output: "output" Predict: batch_size: 1 model_dir: "/path/to/PP-Chart2Table" input: image: "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/chart_parsing_02.png" kernel_option: run_mode: paddle

关键字段解读:

  • Global.model:指定模型名称为PP-Chart2Table;
  • Global.mode:当前仅支持predict推理模式(注释明确标注# only support predict),与该模块暂不支持微调训练的现状一致;
  • Global.device:默认推理设备为gpu:0,可按npu:0、cpu等形式修改;
  • Predict.batch_size:批大小,默认 1;
  • Predict.input.image:输入图片路径,支持本地路径或 URL;
  • Predict.kernel_option.run_mode:运行内核模式,默认paddle。

七、源码视角:PP-Chart2Table 的推理链路

深入仓库源码,可以进一步理解 PP-Chart2Table 在 PaddleX 中是如何被加载与执行的。

7.1 模型构建与引擎支持

在 paddlex/inference/models/doc_vlm/predictor.py 的DocVLMLocalPredictor._build()中,PP-Chart2Table 系列通过PPChart2TableInference.from_pretrained()加载:

  • 当模型目录中存在safetensors权重时,会以use_safetensors=True, convert_from_hf=True的方式加载,即直接使用转换后的 HuggingFace 兼容格式权重;
  • 否则按默认 Paddle 动态图格式加载;
  • 同时以pad_token_id=processor.tokenizer.eos_token_id作为填充 token,保证生成阶段序列对齐。

此外,在 paddlex/inference/models/doc_vlm/init.py 的引擎映射中可以看到,PP-Chart2Table同时被登记到transformers引擎支持列表,意味着该模型也可借助 Transformers 预测器(DocVLMTransformersPredictor,见 paddlex/inference/models/doc_vlm/predictor.py)进行推理。

7.2 处理器与提示词模板

PP-Chart2Table 的处理器实现位于 paddlex/inference/models/doc_vlm/processors/GOT_ocr_2_0.py,这是理解模型行为的关键源码:

图像预处理(GOTImageProcessor):将输入图片统一 Resize 到1024×1024(bicubic 插值),再执行ToTensor与按MEAN=(0.48145466, 0.4578275, 0.40821073)、STD=(0.26862954, 0.26130258, 0.27577711)的归一化——这是与 GOT-OCR2 系列一致的 CLIP 风格图像归一化参数。

提示词模板(PPChart2TableProcessor):模型内部固定拼接了完整的对话式 prompt:

<|im_start|>system You should follow the instructions carefully and explain your answers in detail.<|im_end|><|im_start|>user <img><imgpad>×256</img> Chart to table<|im_end|><|im_start|>assistant

其中"Chart to table"即触发图表解析任务的指令文本,<imgpad>×256为视觉 token 占位。输入图像先经_load_image()读取并转为 RGB,再进入图像处理器;token 序列通过paddle.tile按批大小复制对齐。

输出后处理:postprocess()使用 tokenizer 的batch_decode对生成结果解码,默认skip_special_tokens=True,并关闭clean_up_tokenization_spaces,从而保留表格文本的原始格式(如|分隔符与换行)。

7.3 模型架构

模型主体类为PPChart2TableInference(见 paddlex/inference/models/doc_vlm/modeling/GOT_ocr_2_0.py),其配置类PPChart2TableConfig的model_type为pp_chart2table,架构与 HuggingFace transformers 生态中的 GOT-OCR2 对齐(见 paddlex/inference/models/doc_vlm/modeling/_config_pp_chart2table.py),并通过add_inference_operations("chart2table_generate")注册了专用的图表生成推理算子。这也解释了为什么权重转换后的产物可以直接服务于paddle_dynamic与transformers两类引擎。

八、二次开发:当前仅支持推理集成

当前模块暂不支持微调训练,仅支持推理集成。对微调训练的支持已在规划之中。如果你需要在自有数据上训练图表解析模型,现阶段需要等待该模块的微调能力上线,或在 PaddleX 生态的其他适用通道中寻找替代方案。

九、权重转换:pdparams → safetensors

该模块支持将 Paddle 动态图权重(.pdparams)转换为safetensors格式,以便直接供 PaddleX 的paddle_dynamic与transformers引擎使用。本模块支持权重转换的模型为:PP-Chart2Table。

以PP-Chart2Table为例,通过命令行执行权重转换:

python main.py -c paddlex/configs/modules/chart_parsing/PP-Chart2Table.yaml \ -o Global.mode=pdparams2safetensors \ -o Pdparams2safetensors.input_path=./path/to/model.pdparams \ -o Pdparams2safetensors.output_dir=./output/safetensors/

参数说明:

  • Global.mode:将运行模式设置为权重转换:pdparams2safetensors;
  • Pdparams2safetensors.input_path:输入的.pdparams权重文件路径(或包含该文件的目录);
  • Pdparams2safetensors.output_dir:转换后safetensors模型的输出目录。

转换完成后,输出目录中将包含model.safetensors、config.json、preprocess_config.json、inference.yml等文件,可直接用于推理。

结合前文源码可以理解这一步的必要性:DocVLMLocalPredictor在模型目录存在safetensors权重时会走use_safetensors=True, convert_from_hf=True的加载分支(见 paddlex/inference/models/doc_vlm/predictor.py),因此转换后的目录能够被推理链路无缝识别;而transformers引擎(DocVLMTransformersPredictor)正是通过AutoModelForImageTextToText+AutoProcessor消费这类 HuggingFace 兼容格式权重的。

其他相关参数可参考 PaddleX 通用模型配置参数说明。

十、小结

PP-Chart2Table 作为 PaddleX 文档型视觉语言模型模块中的图表解析主力模型,以 0.58B 参数量实现了对中英文各类图表的表格化输出,其使用门槛极低:安装 PaddleX 后,create_model+predict即可完成推理,print/save_to_json/json属性覆盖了结果查看与落盘的全部需求。从源码层面看,模型沿用了 GOT-OCR2 架构,内置"Chart to table"指令 prompt 与 1024×1024 的标准化图像预处理;权重转换能力则让 Paddle 动态图权重可以平滑迁移至safetensors格式,服务于paddle_dynamic与transformers两类引擎。对于金融分析、学术研究、商业报告等需要"以数据方式消费图表"的场景,该模块提供了一个开箱即用的落地方案。

  • 人工智能
  • 大模型
  • 低代码
  • 计算机视觉
  • 深度学习
  • 模型推理服务

【免费下载链接】PaddleX

All-in-One Development Tool based on PaddlePaddle

项目地址:https://gitcode.com/gh_mirrors/pa/PaddleX
点击查看免费下载

相关推荐

上一篇:Apache Pulsar 连接器管理实战:部署、配置、运行与监控 Pulsar IO Connectors
下一篇:gopls 功能全景指南:Go 语言服务器的 LSP 能力索引、实现原理与编辑器接入实战

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 5:51:46

iFlow CLI自定义Command实战:网页文章下载与中英对照翻译

最近我一直在折腾 iFlow CLI 的自定义 Command&#xff0c;起因是每天要看好几篇英文技术博客&#xff0c;一边开翻译网页一边复制粘贴实在太低效。后来我用 iFlow CLI 写了一个自定义 Command&#xff0c;把“网页文章下载 翻译”打包成一条命令&#xff0c;输入 URL 直接输出…

作者头像 李华
网站建设 2026/10/20 0:07:51

Matlab FFT频谱分析与滤波实战:从原理到代码调参

在信号处理这块&#xff0c;Matlab加FFT的组合我用了差不多十年&#xff0c;从本科课程设计做到实际工程项目&#xff0c;几乎每个阶段都在跟它打交道。频谱分析说到底就是把时域信号拆解成不同频率的成分&#xff0c;FFT是目前最高效的工具&#xff1b;滤波则是频谱分析的直接…

作者头像 李华
网站建设 2026/10/13 19:32:42

看空期权怎么选?行权价、期限与波动率的实战筛选逻辑

期权这东西&#xff0c;尤其是看空方向的期权&#xff0c;很多朋友一听就觉得是“赌跌”&#xff0c;要么觉得太复杂不敢碰&#xff0c;要么就是光盯着“亏光”和“暴富”两个极端。我平时跟人聊投资&#xff0c;发现大家对看空期权&#xff08;认沽期权、看跌期权&#xff09;…

作者头像 李华
网站建设 2026/10/14 18:39:28

广告聚合如何提升变现效率?Mediatom聚合主流广告源实操指南

做广告变现这几年&#xff0c;我最常被问的一句话是&#xff1a;为什么我接了那么多广告平台&#xff0c;收入还是上不去&#xff1f;这个问题表面看很复杂&#xff0c;但答案往往就藏在十几个字里——Mediatom把行业主流广告源全面聚合起来了。看到这个消息&#xff0c;做过变…

作者头像 李华