PaddleOCR 文档类视觉语言模型(DocVLM)模块使用教程:PP-DocBee 系列文档理解与表格转 Markdown 实战 📅 发布时间:2026/9/20 10:34:20 👁 浏览次数: PaddleOCR 文档类视觉语言模型DocVLM模块使用教程PP-DocBee 系列文档理解与表格转 Markdown 实战【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR导读本教程面向希望在项目中引入多模态文档理解能力的开发者围绕 PaddleOCR 的文档类视觉语言模型DocVLM模块展开。文档类视觉语言模型将计算机视觉与自然语言处理融为一体能够直接“看懂”文档图像中的版面、表格、图表与文字并回答针对文档内容的自然语言问题突破传统 OCR 只能输出文本、无法理解语义关系的局限。读完本文你将掌握 PP-DocBee 系列模型的选型与下载、命令行一行推理、Python API 集成、predict / predict_iter 两种调用方式以及推理结果的结构化处理与二次开发边界。一、模块概述什么是文档类视觉语言模型传统文档处理方法通常局限于特定格式如固定版式的票据、表单或预定义类别如身份证、发票遇到复杂版面、跨栏排版、图文混排的文档时泛化能力明显不足。文档类视觉语言模型Document VLM通过融合视觉与语言信息将图像理解与文本生成统一到同一个多模态模型中视觉侧模型能够识别文档图像中的版面结构、表格线、图表、插图等视觉元素语言侧模型能够理解文本内容及其相互之间的语义关系并依据用户的query生成结构化回答如 Markdown 表格、摘要、抽取结果。这种设计使得文档处理更加智能化、灵活化在自动化办公、合同/财报解析、信息提取等领域具有广阔的应用前景。在 PaddleOCR 中这一能力被封装为DocVLM模型类对应 CLI 子命令doc_vlm与文本检测、文本识别、表格结构识别等传统模块共同构成完整的多模态文档处理矩阵。从源码结构看DocVLM位于 paddleocr/_models/doc_vlm.py它继承自 paddleocr/_models/_doc_vlm.py 中的BaseDocVLM而BaseDocVLM又继承自 paddleocr/_models/base.py 的PaddleXPredictorWrapper本质上是 PaddleX 预测器create_predictor的一层轻量封装。类似的图表解析模型ChartParsing同样继承自BaseDocVLM可见这一封装结构在 PaddleOCR 中被复用。二、支持模型列表推理耗时仅包含模型推理耗时不包含前后处理耗时。模型模型下载链接模型存储大小GB模型总分介绍PP-DocBee-2B推理模型4.2765PP-DocBee 是飞桨团队自研的一款专注于文档理解的多模态大模型在中文文档理解任务上具有卓越表现。该模型通过近 500 万条文档理解类多模态数据集进行微调优化数据集覆盖通用 VQA 类、OCR 类、图表类、text-rich 文档类、数学和复杂推理类、合成数据类、纯文本数据等并设置了不同训练数据配比。在学术界权威的几个英文文档理解评测榜单上PP-DocBee 基本都达到了同参数量级别模型的 SOTA。在内部业务中文场景类的指标上PP-DocBee 也高于当时的热门开源和闭源模型。PP-DocBee-7B推理模型15.8-同属 PP-DocBee 系列参数量更大适合对效果要求更高的场景。PP-DocBee2-3B推理模型7.6852PP-DocBee2 是飞桨团队自研的文档理解多模态大模型在 PP-DocBee 的基础上进一步优化了基础模型并引入新的数据优化方案提高数据质量仅使用自研数据合成策略生成的约 47 万条数据便使 PP-DocBee2 在中文文档理解任务上表现更佳。在内部业务中文场景指标上PP-DocBee2 相较 PP-DocBee 提升约 11.4%同时也高于同规模的热门开源和闭源模型。注上表“模型总分”为内部评估集模型测试结果该评估集所有图像分辨率为 (height, width) (1680, 1204)共 1196 条数据覆盖财报、法律法规、理工科论文、说明书、文科论文、合同、研报等场景目前暂无公开计划。因此该分数仅作为横向对比参考不代表公开数据集上的绝对值。值得特别说明的是虽然文档表格中DocVLM的默认模型写作PP-DocBee-2B但从当前仓库源码看doc_vlm.py 中DocVLM.default_model_name的返回值为PP-DocBee2-3B即不显式指定model_name时实际加载的是 PP-DocBee2-3B。这是文档与实现之间的细微差异读者在实际使用时应以源码行为为准不传model_name时默认使用 PP-DocBee2-3B。三、快速开始3.1 环境准备在快速开始前请先安装 PaddleOCR 的 wheel 包详细步骤参考 安装教程。由于下方示例默认使用paddle_dynamic推理引擎还需按照 飞桨框架安装 完成 PaddlePaddle 框架的安装。模型源说明PaddleOCR 官方模型默认从 HuggingFace 获取。如果运行环境访问 HuggingFace 不便可通过环境变量将模型源切换为 BOS百度对象存储PADDLE_PDX_MODEL_SOURCEBOS。未来将支持更多主流模型源。3.2 命令行一行推理安装完成后使用一行命令即可快速体验paddleocr doc_vlm -i {image: https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/medal_table.png, query: 识别这份表格的内容, 以markdown格式输出}该命令的执行链路在源码中清晰可循CLI 入口 paddleocr/_cli.py 中的_register_models将DocVLM注册为名为doc_vlm的子命令doc_vlm.py 中的DocVLMSubcommandExecutor负责解析-i传入的输入参数通过 paddleocr/_utils/cli.py 的perform_simple_inference完成推理并打印结果。input参数在 _doc_vlm.py 中被custom_type(dict)校验为字典格式。除了-iCLI 子命令还支持以下常用参数定义见 paddleocr/_common_args.py 的add_common_cli_optsCLI 参数含义默认值--model_name模型名称如PP-DocBee2-3B无使用默认模型--model_dir本地模型存储目录无自动下载--device推理设备如cpu、gpu、npu、gpu:0优先 GPU 0不可用则 CPU--engine推理引擎可选paddle、paddle_static、paddle_dynamic、transformers、onnxruntime默认paddle_dynamic--enable_hpi是否启用高性能推理False--use_tensorrt是否使用 Paddle Inference 的 TensorRT 子图引擎False--precisionTensorRT 精度可选fp32、fp16fp32--enable_mkldnn是否启用 MKL-DNN 加速True--cpu_threadsCPU 推理线程数103.3 Python API 集成你也可以将 DocVLM 模型推理集成到自己的项目中。运行以下代码前请先下载示例图片奖牌榜表格图到本地命名为medal_table.pngfrom paddleocr import DocVLM model DocVLM(model_namePP-DocBee2-3B) results model.predict( input{image: medal_table.png, query: 识别这份表格的内容, 以markdown格式输出}, batch_size1 ) for res in results: res.print() res.save_to_json(f./output/res.json)DocVLM从 paddleocr/init.py 顶层导出可直接from paddleocr import DocVLM导入。运行后终端打印的原始结果为{res: {image: medal_table.png, query: 识别这份表格的内容, 以markdown格式输出, result: | 名次 | 国家/地区 | 金牌 | 银牌 | 铜牌 | 奖牌总数 |\n| --- | --- | --- | --- | --- | --- |\n| 1 | 中国CHN | 48 | 22 | 30 | 100 |\n| 2 | 美国USA | 36 | 39 | 37 | 112 |\n| 3 | 俄罗斯RUS | 24 | 13 | 23 | 60 |\n| 4 | 英国GBR | 19 | 13 | 19 | 51 |\n| 5 | 德国GER | 16 | 11 | 14 | 41 |\n| 6 | 澳大利亚AUS | 14 | 15 | 17 | 46 |\n| 7 | 韩国KOR | 13 | 11 | 8 | 32 |\n| 8 | 日本JPN | 9 | 8 | 8 | 25 |\n| 9 | 意大利ITA | 8 | 9 | 10 | 27 |\n| 10 | 法国FRA | 7 | 16 | 20 | 43 |\n| 11 | 荷兰NED | 7 | 5 | 4 | 16 |\n| 12 | 乌克兰UKR | 7 | 4 | 11 | 22 |\n| 13 | 肯尼亚KEN | 6 | 4 | 6 | 16 |\n| 14 | 西班牙ESP | 5 | 11 | 3 | 19 |\n| 15 | 牙买加JAM | 5 | 4 | 2 | 11 |\n}}运行结果中各字段含义如下image输入待预测图像的路径query输入待预测的文本查询信息result模型预测的结果信息此处为 Markdown 格式的表格。预测结果打印可视化如下| 名次 | 国家/地区 | 金牌 | 银牌 | 铜牌 | 奖牌总数 | | --- | --- | --- | --- | --- | --- | | 1 | 中国CHN | 48 | 22 | 30 | 100 | | 2 | 美国USA | 36 | 39 | 37 | 112 | | 3 | 俄罗斯RUS | 24 | 13 | 23 | 60 | | 4 | 英国GBR | 19 | 13 | 19 | 51 | | 5 | 德国GER | 16 | 11 | 14 | 41 | | 6 | 澳大利亚AUS | 14 | 15 | 17 | 46 | | 7 | 韩国KOR | 13 | 11 | 8 | 32 | | 8 | 日本JPN | 9 | 8 | 8 | 25 | | 9 | 意大利ITA | 8 | 9 | 10 | 27 | | 10 | 法国FRA | 7 | 16 | 20 | 43 | | 11 | 荷兰NED | 7 | 5 | 4 | 16 | | 12 | 乌克兰UKR | 7 | 4 | 11 | 22 | | 13 | 肯尼亚KEN | 6 | 4 | 6 | 16 | | 14 | 西班牙ESP | 5 | 11 | 3 | 19 | | 15 | 牙买加JAM | 5 | 4 | 2 | 11 |可以看到模型直接将复杂表格图像转化为结构完整的 Markdown 表格这正是文档类视觉语言模型在信息结构化抽取场景中的典型应用。四、DocVLM核心参数详解4.1 实例化参数DocVLM的实例化参数如下此处以PP-DocBee-2B为例说明参数含义参数参数说明参数类型默认值model_name含义模型名称。说明设置为None时实际使用源码中default_model_name指定的默认模型当前为PP-DocBee2-3B详见 doc_vlm.py。str\|NoneNonemodel_dir含义模型存储路径。传入后将从本地目录加载模型不再自动下载。str\|NoneNonedevice含义用于推理的设备。示例cpu、gpu、npu、gpu:0。默认情况下优先使用 GPU 0若不可用则使用 CPU。str\|NoneNoneengine含义推理引擎。说明支持None默认值、paddle、paddle_dynamic。保持默认值None时本地推理默认使用paddle_dynamic引擎。详细说明、取值、兼容性规则与示例参见推理引擎与配置说明。str\|NoneNoneengine_config含义推理引擎配置。说明推荐与engine搭配使用用于精细化控制引擎行为。详细字段、兼容性规则与示例参见推理引擎与配置说明。dict\|NoneNone从实现角度看见 base.py 与 paddleocr/_common_args.py这些参数最终会被转换为 PaddleXcreate_predictor的初始化参数device为空时通过get_default_device()自动探测可用设备engine为空或为paddle时默认构造{paddle_static: ...}静态图引擎配置而paddle_dynamic与transformers等引擎则不附加额外配置。此外PaddleOCR 还透传了use_tensorrt、precision仅支持fp32/fp16、enable_mkldnn、mkldnn_cache_capacity、cpu_threads、enable_cinn等底层优化参数默认值定义见 paddleocr/_constants.py供有性能调优需求的用户使用。4.2predict()与predict_iter()方法调用DocVLM的predict()方法进行推理预测该方法返回一个结果列表。另外本模块还提供了predict_iter()方法。两者在参数接受和结果返回方面完全一致区别在于predict_iter()返回的是一个generator能够逐步处理和获取预测结果适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用两种方法中的任意一种。predict()方法参数如下参数参数说明参数类型默认值input含义待预测数据必填。说明由于多模态模型对输入要求不同请根据具体模型设定输入格式。例如对于 PP-DocBee 系列模型输入形式应为{image: image_path, query: query_text}。dict无batch_size含义批大小。说明可设置为任意正整数。int1从源码看base.py 第 53-58 行predict()本质上是list(self.predict_iter(*args, **kwargs))即一次性消费生成器并返回完整列表而predict_iter()直接透传到底层paddlex_predictor.predict()保留流式处理能力。两者的底层实现完全一致只是返回方式不同。4.3 结果对象打印、保存与属性访问每个样本的预测结果均为对应的 Result 对象支持打印、保存为 JSON 文件等操作方法方法说明参数参数类型参数说明默认值print()打印结果到终端format_jsonbool是否对输出内容使用 JSON 缩进格式化Trueindentint指定缩进级别美化输出 JSON 数据仅当format_json为True时有效4ensure_asciibool控制是否将非 ASCII 字符转义为 UnicodeTrue时全部转义False保留原始字符仅当format_json为True时有效Falsesave_to_json()将结果保存为 JSON 格式文件save_pathstr保存的文件路径当为目录时保存文件命名与输入文件类型命名一致无indentint指定缩进级别美化输出 JSON 数据仅当format_json为True时有效4ensure_asciibool控制是否将非 ASCII 字符转义为 Unicode仅当format_json为True时有效False此外还支持通过属性获取预测结果属性属性说明json获取预测的 JSON 格式结果从仓库测试用例 tests/models/test_doc_vlm.py 可以看到DocVLM 推理返回的每个结果对象包含input_path、page_index、input_img、result四个键其中result即模型生成的文本回答。该测试使用与文档示例一致的medal_table.png图片通过check_simple_inference_result校验推理结果完整性可作为二次集成的参考基线。五、二次开发当前能力边界当前模块暂时不支持微调训练仅支持推理集成。关于该模块的微调训练官方计划在未来支持。因此现阶段针对 DocVLM 的“二次开发”主要体现为三种形式应用层集成通过上文 Python API 将DocVLM嵌入自有业务流水线结合predict_iter()的流式处理与save_to_json()的结果落盘构建批量文档解析服务模型选择与本地化部署通过model_name在 PP-DocBee-2B / PP-DocBee-7B / PP-DocBee2-3B 之间切换通过model_dir加载本地模型、device指定 CPU/GPU/NPU 设备满足离线或受限网络环境的部署需求引擎级调优借助engine与engine_config切换推理后端详见推理引擎与配置说明并结合use_tensorrt、precision、enable_mkldnn等底层参数进行性能优化。值得注意的是DocVLM 的封装基类BaseDocVLM同时服务于图表解析ChartParsing等模型说明该封装具备良好的扩展性未来新增文档理解类模型时大概率沿用同一套 API 约定开发者基于DocVLM写好的集成代码可以平滑迁移。六、FAQQ1为什么命令行示例没指定--model_name也能运行ADocVLM内部有默认模型名。按当前仓库源码 doc_vlm.pydefault_model_name返回PP-DocBee2-3B不传model_name时自动使用该默认模型。Q2运行环境无法访问 HuggingFace 怎么办APaddleOCR 官方模型默认从 HuggingFace 获取可通过环境变量切换模型源PADDLE_PDX_MODEL_SOURCEBOS从百度对象存储下载模型。也可预先手动下载模型包并解压通过model_dir参数指定本地路径完全离线加载。Q3predict()与predict_iter()有什么区别A两者接受的参数与返回结果完全一致底层都调用 PaddleX 预测器的predict。区别在于predict()一次性返回结果列表内部将生成器转为list而predict_iter()返回generator可逐步处理结果更适合大批量数据与内存受限场景。Q4输入input的格式是什么A由于多模态模型对输入要求不同需根据具体模型设定。PP-DocBee 系列要求字典格式{image: image_path, query: query_text}其中image为图像路径本地路径或 URLquery为自然语言查询指令。Q5DocVLM 支持微调训练吗A当前版本不支持。本模块目前仅支持推理集成微调训练能力计划在未来版本支持。Q6模型总分的评估基准是什么A表内总分为内部评估集测试结果1196 条数据分辨率 1680×1204覆盖财报、合同、研报、论文等场景该评估集目前没有公开计划分数仅作为模型间横向对比参考。七、相关资源导航模块使用文档本文即出自 docs/version3.x/module_usage/doc_vlm.md同目录下还包含文本检测、文本识别、表格结构识别等各模块教程核心实现paddleocr/_models/doc_vlm.py、paddleocr/_models/_doc_vlm.py、paddleocr/_models/base.pyCLI 注册与公共参数paddleocr/_cli.py、paddleocr/_common_args.py测试用例tests/models/test_doc_vlm.py安装与引擎配置安装教程、飞桨框架安装、推理引擎与配置说明。【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考