PaddleOCR 图表解析模块(Chart Parsing)实战指南:基于 PP-Chart2Table 将图表一键转换为结构化数据 📅 发布时间:2026/9/12 4:46:49 👁 浏览次数: PaddleOCR 图表解析模块Chart Parsing实战指南基于 PP-Chart2Table 将图表一键转换为结构化数据【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR图表解析是 OCR 领域的前沿方向它让模型不再只是看图识字而是能够理解柱状图、折线图、饼图等图表的内在语义直接输出可供数据分析、金融研究、学术论文复现使用的表格数据。本文基于 PaddleOCR 仓库中的 图表解析模块使用教程系统讲解多模态图表解析模型 PP-Chart2Table 的能力、CLI 与 Python API 的完整调用方式、三种推理引擎的选型与性能对比并结合仓库源码剖析ChartParsing的底层实现链路。读完本文你将能够在自己项目中一键完成图表 → 数据表的自动化转换。一、什么是图表解析从看图到用数多模态图表解析是一项面向可视化图表的自动化数据提取技术其核心目标是将柱状图、折线图、饼图等各类图表自动转化为底层数据表并进行格式化输出。在传统方案中图表解析依赖图表关键点检测等模型进行复杂串联编排这类方法存在较多先验假设例如假设图表类型固定、坐标轴规范、文字清晰等一旦遇到真实世界中形态各异的图表鲁棒性就会明显下降。而本模块采用的模型基于最新的 VLMVision-Language Model视觉语言模型技术以数据驱动的方式从海量现实数据中学习鲁棒特征摆脱了对人工规则和先验假设的依赖。图表解析的典型应用场景覆盖金融分析快速提取财报中的增长趋势数据用于量化分析与投资决策学术研究抽取科研论文中的实验对比数值辅助复现实验结果商业报告解析市场调研中的用户分布统计支撑业务洞察。其价值在于帮助用户从看图转向用数让图表中蕴含的结构化信息真正进入数据管道。二、支持模型列表当前图表解析模块提供如下模型模型模型下载链接模型参数规模B模型存储大小GB模型分数介绍PP-Chart2Table推理模型0.581.480.60PP-Chart2Table 是飞桨团队自研的一款专注于图表解析的多模态模型在中英文图表解析任务中展现出卓越性能。团队专为图表解析设计了 Shuffled Chart Data Retrieval 训练任务并结合精心设计的令牌掩码策略显著提升其在图表转数据表任务上的性能。此外团队通过精心设计的数据合成流程增强了 PP-Chart2Table 的能力该流程利用高质量的种子数据并结合 RAG 和大语言模型人格设计以生成更丰富多样化的数据。为了处理大量未标记的分布外OOD数据团队采用了两阶段大模型蒸馏训练过程确保模型在广泛的真实世界数据集中具有出色的适应性和泛化能力。在内部业务的中英文场景测试中PP-Chart2Table 不仅达到同参数量级模型中的 SOTA 水平更在关键场景中实现了与 7B 参数量级 VLM 模型相当的精度。注以上模型分数为内部评估集模型测试结果共 1801 条数据包括了各个场景财报、法律法规、合同等下的各种图表类型柱状图、折线图、饼图等的测试样本暂时未有计划公开。❗注PP-Chart2Table 模型于 2025.6.27 升级如需使用升级前的模型权重请点击 下载链接。从模型规模上看PP-Chart2Table 参数量仅 0.58B约 5.8 亿参数存储大小 1.4GB属于轻量级多模态模型却能在关键业务场景中达到 7B 量级 VLM 模型的精度水平这正得益于其专为图表解析设计的训练任务、数据合成与两阶段蒸馏方案。三、快速开始❗ 在快速开始前请先安装 PaddleOCR 的 wheel 包详细请参考 安装教程。3.1 使用命令行一键体验安装完成后使用一行命令即可快速体验图表解析paddleocr chart_parsing -i {image: https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/chart_parsing_02.png}上述示例默认使用paddle_dynamic推理引擎请先按照 飞桨框架安装 完成 PaddlePaddle 安装。指定 transformers 引擎如果选择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指定 onnxruntime 引擎如果选择onnxruntime作为推理引擎请确保已配置 ONNX Runtime 环境然后执行如下命令# 使用 onnxruntime 引擎进行推理 paddleocr chart_parsing -i {image: https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/chart_parsing_02.png} \ --engine onnxruntime在大多数场景下默认的paddle_dynamic推理引擎通常具备更好的推理性能建议优先使用。注PaddleOCR 官方模型默认从 HuggingFace 获取如运行环境访问 HuggingFace 不便可通过环境变量修改模型源为 BOSPADDLE_PDX_MODEL_SOURCEBOS未来将支持更多主流模型源。从源码角度理解这条命令chart_parsing子命令由 ChartParsingSubcommandExecutor 注册其subparser_name返回chart_parsing并通过 add_simple_inference_args 添加-i/--input必填与--save_path参数。CLI 入口在 paddleocr/_cli.py 中完成子命令的装配。输入参数会经过custom_type(dict)校验见 _doc_vlm.py确保传入的是{image: ...}形式的字典。3.2 在 Python 项目中集成推理您也可以将图表解析模型推理集成到自己的项目中。运行以下代码前请先下载 示例图片 到本地from paddleocr import ChartParsing model ChartParsing(model_namePP-Chart2Table) results model.predict( input{image: chart_parsing_02.png}, batch_size1 ) for res in results: res.print() res.save_to_json(f./output/res.json)上述示例默认使用paddle_dynamic推理引擎请先按照 飞桨框架安装 完成 PaddlePaddle 安装。指定 transformers 引擎如果选择transformers作为推理引擎请确保已配置 Transformers 环境然后执行如下代码from paddleocr import ChartParsing model ChartParsing( model_namePP-Chart2Table, enginetransformers, ) results model.predict( input{image: chart_parsing_02.png}, batch_size1 ) for res in results: res.print() res.save_to_json(f./output/res.json)指定 onnxruntime 引擎如果选择onnxruntime作为推理引擎请确保已配置 ONNX Runtime 环境然后执行如下代码from paddleocr import ChartParsing model ChartParsing( model_namePP-Chart2Table, engineonnxruntime, ) results model.predict( input{image: chart_parsing_02.png}, batch_size1 ) for res in results: res.print() res.save_to_json(f./output/res.json)在大多数场景下默认的paddle_dynamic推理引擎通常具备更好的推理性能建议优先使用。3.3 运行结果解析运行后得到的结果为{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 风格表格甚至能正确处理负利润如 2020 年的 -3.87说明其不仅提取了文字标签还理解了坐标轴的数值对应关系这正是 VLM 相比传统检测-识别串联方案的核心优势。3.4ChartParsing实例化参数说明ChartParsing实例化文档类视觉语言模型具体说明如下参数参数说明参数类型默认值model_name含义模型名称。说明如果设置为None则使用PP-Chart2Table。str\|NoneNonemodel_dir含义模型存储路径。str\|NoneNonedevice含义用于推理的设备。说明例如cpu、gpu、npu、gpu:0。默认情况下优先使用 GPU 0若不可用则使用 CPU。str\|NoneNoneengine含义推理引擎。说明支持None默认值、paddle、paddle_dynamic、transformers、onnxruntime。保持为默认值None时本地推理默认使用paddle_dynamic引擎。详细说明、取值、兼容性规则与示例请参见 推理引擎与配置说明。str\|NoneNoneengine_config含义推理引擎配置。说明推荐与engine搭配使用。详细字段、兼容性规则与示例请参见 推理引擎与配置说明。dict\|NoneNone从源码实现看ChartParsing类继承自BaseDocVLM见 chart_parsing.py其default_model_name属性返回PP-Chart2Table因此model_name留空时会自动回退到默认模型。实例化流程最终由 PaddleXPredictorWrapper 的_create_paddlex_predictor通过create_predictor完成模型加载若依赖缺失会抛出包含安装指引的RuntimeError。3.5predict()与predict_iter()方法说明调用图表解析模型的predict()方法进行推理预测该方法会返回一个结果列表。另外本模块还提供了predict_iter()方法。两者在参数接受和结果返回方面是完全一致的区别在于predict_iter()返回的是一个generator能够逐步处理和获取预测结果适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。predict()方法参数有input、batch_size具体说明如下参数参数说明参数类型默认值input含义待预测数据必填。说明由于多模态模型对输入要求不同请根据具体模型设定输入格式。PP-Chart2Table 的输入形式为{image: image_path}dict无batch_size含义批大小说明可设置为任意正整数。int1源码中两者的实现关系非常清晰见 base.pypredict_iter()直接透传底层paddlex_predictor.predict()返回生成器而predict()则是list(self.predict_iter(...))一次性收集全部结果。因此批处理大批量数据时优先考虑predict_iter()以节省内存。CLI 路径内部同样使用predict_iter逐条处理并打印耗时见 _utils/cli.py 的perform_simple_inference。3.6 预测结果处理打印与保存对预测结果进行处理每个样本的预测结果均为对应的 Result 对象且支持打印、保存为json文件的操作方法方法说明参数参数类型参数说明默认值print()打印结果到终端format_jsonbool是否对输出内容进行使用JSON缩进格式化Trueindentint指定缩进级别以美化输出的JSON数据使其更具可读性仅当format_json为True时有效4ensure_asciibool控制是否将非ASCII字符转义为Unicode。设置为True时所有非ASCII字符将被转义False则保留原始字符仅当format_json为True时有效Falsesave_to_json()将结果保存为 json 格式的文件save_pathstr保存的文件路径当为目录时保存文件命名与输入文件类型命名一致无indentint指定缩进级别以美化输出的JSON数据使其更具可读性仅当format_json为True时有效4ensure_asciibool控制是否将非ASCII字符转义为Unicode。设置为True时所有非ASCII字符将被转义False则保留原始字符仅当format_json为True时有效False此外也支持通过属性获取预测结果具体如下属性属性说明json获取预测的json格式的结果四、二次开发当前模块暂时不支持微调训练仅支持推理集成。关于该模块的微调训练计划在未来支持。这意味着现阶段使用 PP-Chart2Table 的正确姿势是直接调用官方预训练权重进行推理将其作为数据提取流水线中的一个独立环节例如串联到PDF/图片 → 图表区域检测 → 图表解析 → 数据入库的整体流程中。五、推理引擎关于推理引擎的详细说明、取值、兼容性规则与示例请参见 推理引擎与配置说明。PaddleOCR 3.5 引入了统一的推理引擎配置方式使用engine选择底层推理引擎使用engine_config传递该引擎的专属配置。各引擎类别与取值对应关系如下引擎类别engine取值说明飞桨框架paddle、paddle_static、paddle_dynamic基于飞桨框架运行。Transformerstransformers基于 Hugging Face Transformers 运行。ONNX Runtimeonnxruntime基于 ONNX Runtime 运行。其中paddle_dynamic指飞桨动态图推理相比静态图更加灵活、易于调试transformers便于与 Hugging Face 生态集成onnxruntime用于加载并执行 ONNX 格式模型。显式设置engine后enable_hpi等兼容参数不再生效。5.1 速度数据不同推理引擎在 PP-Chart2Table 上的耗时对比如下modelenginePreprocessing (ms)Inference (ms)PostProcessing (ms)End-to-End (ms)PP-Chart2Tablepaddle_dynamic53.0017863.950.3017917.78PP-Chart2Tabletransformers23.9512217.370.4712269.98测试环境说明测试数据示例图片硬件配置GPUNVIDIA A100 40GCPUIntel(R) Xeon(R) Gold 6248 CPU 2.50GHz软件环境Ubuntu 22.04 / CUDA 12.6 / cuDNN 9.5paddlepaddle-gpu 3.2.1 / paddleocr 3.5 / transformers 5.4.0 / torch 2.10 / onnxruntime-gpu 1.23.2从数据可以看出transformers引擎在该测试场景下整体端到端耗时约 12.27s低于paddle_dynamic约 17.92s推理阶段差异明显而两引擎的前后处理开销均极小毫秒级。需要说明的是该数据为特定硬件与软件版本下的单点测试结果实际性能会随 GPU 型号、批大小、输入分辨率等因素变化建议结合自身环境实测选型。六、FAQ本节为预留的常见问题解答区域。使用过程中如有疑问建议优先参考 推理引擎与配置说明 确认引擎环境与参数并通过环境变量PADDLE_PDX_MODEL_SOURCEBOS解决模型下载源访问不便的问题。小结PaddleOCR 的图表解析模块以轻量级多模态模型 PP-Chart2Table 为核心通过paddleocr chart_parsing一行命令或ChartParsingPython API 即可将各类图表还原为结构化数据表。配合predict_iter()的内存友好特性、三种推理引擎的灵活切换以及print()/save_to_json()的输出处理能力它可以无缝嵌入金融分析、学术研究与商业报告的自动化数据提取流水线中。相关源码入口可继续深入阅读 chart_parsing.py、base.py 与 推理引擎文档 获取更底层细节。【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考