docs/version3.x/module_usage/chart_parsing.md
多模态图表解析是一项OCR领域的前沿技术,专注于将各类可视化图表(如柱状图、折线图、饼图等)自动转化为底层数据表,并进行格式化输出。传统方法依赖于图表关键点检测等模型进行复杂串联编排,先验假设较多,鲁棒性较差,该模块中的模型使用最新的VLM技术,数据驱动,从海量的现实数据中学习鲁棒的特征。其应用场景覆盖金融分析、学术研究、商业报告等场景——例如快速提取财报中的增长趋势数据、科研论文中的实验对比数值,或市场调研中的用户分布统计,助力用户从“看图”转向“用数”。
<b>注:以上模型分数为内部评估集模型测试结果,共1801条数据,包括了各个场景(财报、法律法规、合同等)下的各种图表类型(柱状图、折线图、饼图等)的测试样本,暂时未有计划公开。</b>
❗ <b>注</b>:PP-Chart2Table模型于 2025.6.27 升级,如需使用升级前的模型权重,请点击<a href="https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-Chart2Table_infer.bak.tar">下载链接</a>
❗ 在快速开始前,请先安装 PaddleOCR 的 wheel 包,详细请参考 安装教程。
使用一行命令即可快速体验:
paddleocr chart_parsing -i "{'image': 'https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/chart_parsing_02.png'}"
上述示例默认使用 <code>paddle_dynamic</code> 推理引擎,请先按照飞桨框架安装完成 PaddlePaddle 安装。
如果选择 transformers 作为推理引擎,请确保已配置 Transformers 环境,然后执行如下命令:
# 使用 transformers 引擎进行推理
paddleocr chart_parsing -i "{'image': 'https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/chart_parsing_02.png'}" \
--engine transformers
在大多数场景下,默认的 paddle_dynamic 推理引擎通常具备更好的推理性能,建议优先使用。
<b>注:</b>PaddleOCR 官方模型默认从 HuggingFace 获取,如运行环境访问 HuggingFace 不便,可通过环境变量修改模型源为 BOS:PADDLE_PDX_MODEL_SOURCE="BOS",未来将支持更多主流模型源;
您也可以将开放文档类视觉语言模型模块中的模型推理集成到您的项目中。运行以下代码前,请您下载示例图片到本地。
from paddleocr import ChartParsing
model = ChartParsing(model_name="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")
上述示例默认使用 <code>paddle_dynamic</code> 推理引擎,请先按照飞桨框架安装完成 PaddlePaddle 安装。
如果选择 transformers 作为推理引擎,请确保已配置 Transformers 环境,然后执行如下代码:
from paddleocr import ChartParsing
model = ChartParsing(
model_name="PP-Chart2Table",
engine="transformers",
)
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")
在大多数场景下,默认的 paddle_dynamic 推理引擎通常具备更好的推理性能,建议优先使用。
运行后,得到的结果为:
{'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'}}
运行结果参数含义如下:
<ul> <li><code>image</code>: 表示输入待预测图像的路径</li> <li><code>result</code>: 模型预测的结果信息</li> </ul> 预测结果打印可视化如下:年份 | 单家五星级旅游饭店年平均营收 (百万元) | 单家五星级旅游饭店年平均利润 (百万元)
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
相关方法、参数等说明如下:
<b>说明:</b> 如果设置为<code>None</code>,则使用<code>PP-Chart2Table</code>。</td>
<td><code>str|None</code></td> <td><code>None</code></td> </tr> <tr> <td><code>model_dir</code></td> <td><b>含义:</b>模型存储路径。</td> <td><code>str|None</code></td> <td><code>None</code></td> </tr> <tr> <td><code>device</code></td> <td><b>含义:</b>用于推理的设备。<b>说明:</b> <b>例如:</b><code>"cpu"</code>、<code>"gpu"</code>、<code>"npu"</code>、<code>"gpu:0"</code></code>。 默认情况下,优先使用 GPU 0;若不可用则使用 CPU。
</td> <td><code>str|None</code></td> <td><code>None</code></td> </tr> <tr> <td><code>engine</code></td> <td><b>含义:</b>推理引擎。 <b>说明:</b>支持 <code>None</code>(默认值)、<code>paddle</code>、<code>paddle_dynamic</code>、<code>transformers</code>。保持为默认值 <code>None</code> 时,本地推理默认使用 <code>paddle_dynamic</code> 引擎。详细说明、取值、兼容性规则与示例请参见 <a href="../inference_engine.md">推理引擎与配置说明</a>。</td> <td><code>str|None</code></td> <td><code>None</code></td> </tr> <tr> <td><code>engine_config</code></td> <td><b>含义:</b>推理引擎配置。 <b>说明:</b>推荐与 <code>engine</code> 搭配使用。详细字段、兼容性规则与示例请参见 <a href="../inference_engine.md">推理引擎与配置说明</a>。</td> <td><code>dict|None</code></td> <td><code>None</code></td> </tr> </tbody> </table><b>说明:</b> 由于多模态模型对输入要求不同,请根据具体模型设定输入格式。
<ul> <li>PP-Chart2Table的输入形式为<code>{'image': image_path}</code></li> </ul> </td> <td><code>dict</code></td> <td>无</td> </tr> <tr> <td><code>batch_size</code></td> <td><b>含义:</b>批大小<b>说明:</b> 可设置为任意正整数。</td>
<td><code>int</code></td> <td>1</td> </tr> </table>当前模块暂时不支持微调训练,仅支持推理集成。关于该模块的微调训练,计划在未来支持。
关于推理引擎的详细说明、取值、兼容性规则与示例请参见 <a href="../inference_engine.md">推理引擎与配置说明</a>。
<strong>测试环境说明:</strong>
<ul> <li><strong>测试数据:</strong>[示例图片](https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/medal_table.jpg)</li> <li><strong>硬件配置:</strong> <ul> <li>GPU:NVIDIA A100 40G</li> <li>CPU:Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz</li> </ul> </li> <li><strong>软件环境:</strong> <ul> <li>Ubuntu 22.04 / CUDA 12.6 / cuDNN 9.5</li> <li>paddlepaddle-gpu 3.2.1 / paddleocr 3.5 / transformers 5.4.0 / torch 2.10</li> </ul> </li> </ul>