模块实战指南:从 PP-DocBee 系列到文档智能理解)
PaddleOCR 文档视觉语言模型DocVLM模块实战指南从 PP-DocBee 系列到文档智能理解【免费下载链接】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一、导读文档视觉语言模型Document Visual Language Model, DocVLM是 PaddleOCR 3.x 中面向文档智能理解Document Understanding的多模态推理模块它以图像 自然语言提问为输入直接输出对版面、表格、图表、文字关系等复杂文档内容的理解结果。本文以 docs/version3.x/module_usage/doc_vlm.en.md 为骨架结合仓库内 paddleocr/_models/doc_vlm.py、paddleocr/_models/base.py 等源码与 tests/models/test_doc_vlm.py 测试用例系统讲解 DocVLM 模块支持的模型列表、一行命令与 Python API 两种接入方式、全部核心参数、结果解析方法以及当前二次开发边界帮助你快速将文档理解能力集成到自己的 OCR 与 AI 工作流中。二、模块概述为什么需要文档视觉语言模型传统文档处理方法通常只能处理特定格式或预定义类别的内容例如规则模板下的票据、固定结构的表格。而文档视觉语言模型将视觉信息与语言信息进行统一建模通过计算机视觉理解图像中的版面结构、文字区域、图表元素通过自然语言处理理解语义与任务意图通过多模态对齐能力理解图像、文字及其关系甚至理解复杂版式内部的语义信息。这使得文档处理不再依赖预设规则泛化能力更强在自动化办公、信息抽取、文档结构化等场景中具有广阔的应用前景。在 PaddleOCR 中该能力封装为DocVLM推理封装类其底层复用 PaddleX 的create_predictor创建多模态推理器调用链为DocVLM → PaddleXPredictorWrapper → create_predictor见 paddleocr/_models/base.py。三、支持的模型列表说明下文推理时间仅包含模型推理耗时不包含前后处理时间。模型模型下载链接模型存储大小 (GB)总分说明PP-DocBee-2B推理模型4.2765PP-DocBee 是 PaddlePaddle 团队自研的专注文档理解的多模态大模型在中文文档理解任务上表现优异。模型使用近 500 万条文档理解多模态数据集进行微调优化数据涵盖通用 VQA、OCR、图表、文本丰富型文档、数学与复杂推理、合成数据、纯文本数据等并设置了不同的训练数据配比。在学术界多个权威英文文档理解评测榜单上PP-DocBee 在同等参数量级模型中基本达到 SOTA在内部业务中文场景指标上也优于当前流行的开源与闭源模型。PP-DocBee-7B推理模型15.8-与 PP-DocBee-2B 同一系列参数量更大PP-DocBee2-3B推理模型7.6852PP-DocBee2 是 PaddlePaddle 团队在 PP-DocBee 基础上进一步优化基座模型、引入新的数据优化方案以提升数据质量的系列。仅使用自研数据合成策略产出的少量 47 万条数据PP-DocBee2 在中文文档理解任务上表现更优在内部业务中文场景指标上较 PP-DocBee 提升约 11.4%同样优于同量级主流开源与闭源模型。注意上表各模型的总分为内部评测集测试结果。评测集中所有图片分辨率高、宽为 (1680, 1204)共 1196 条数据覆盖财报、法律法规、科技论文、说明书、人文论文、合同、调研报告等场景目前暂无公开计划。默认模型说明需要特别留意的是文档表格中说明model_name置为None时使用PP-DocBee-2B但当前仓库源码中 paddleocr/_models/doc_vlm.py 的default_model_name属性实际返回的是PP-DocBee2-3Bclass DocVLM(BaseDocVLM): property def default_model_name(self): return PP-DocBee2-3B因此在实际使用中未显式指定model_name时的默认行为以仓库源码为准即PP-DocBee2-3B。建议在使用时始终显式传入model_name避免歧义。四、快速开始4.1 环境准备❗ 开始前请先安装 PaddleOCR wheel 包详见 安装指南。由于文档中演示的命令默认使用paddle_dynamic推理引擎运行前还需按 PaddlePaddle 框架安装 安装对应版本的 PaddlePaddle。注意官方模型默认从 HuggingFace 下载。若无法访问 HuggingFace可设置环境变量PADDLE_PDX_MODEL_SOURCEBOS将模型源切换为 BOS百度对象存储。未来将支持更多模型源。4.2 一行命令体验paddleocr doc_vlm -i {image: https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/medal_table.png, query: 识别这份表格的内容, 以markdown格式输出}该命令由 paddleocr/_models/doc_vlm.py 中的DocVLMSubcommandExecutor注册的doc_vlm子命令提供。其内部实现路径为子命令解析器通过add_simple_inference_args注册-i/--input必填与--save_path参数见 paddleocr/_utils/cli.pyexecute_with_args将输入字符串按dict类型校验并解析为{image: ..., query: ...}最终调用perform_simple_inference完成推理与结果打印。4.3 Python API 集成你也可以将文档视觉语言模型模块的推理能力集成到自己的项目中。运行前请先将示例图片下载到本地from 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)运行后输出结果如下{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 |五、核心 API 详解5.1DocVLM构造参数DocVLM用于实例化文档视觉语言模型。其参数说明如下参数说明类型默认值model_name含义模型名称。说明置为None时使用默认模型文档描述为PP-DocBee-2B当前仓库源码默认值为PP-DocBee2-3B详见上文。str\|NoneNonemodel_dir含义模型存储路径。str\|NoneNonedevice含义推理设备。说明例如cpu、gpu、npu、gpu:0、gpu:0,1。默认优先使用 GPU 0否则使用 CPU。str\|NoneNoneengine含义推理引擎。说明支持None默认、paddle、paddle_dynamic。置为None时本地推理默认使用paddle_dynamic引擎。详细描述、支持值、兼容规则与示例参见 推理引擎与配置。str\|NoneNoneengine_config含义推理引擎配置。说明建议与engine搭配使用。支持的字段、兼容规则与示例参见 推理引擎与配置。dict\|NoneNone源码级补充这些通用参数在 paddleocr/_common_args.py 中定义了完整的引擎白名单[paddle, paddle_static, paddle_dynamic, transformers, onnxruntime]并提供了device、engine、engine_config、use_tensorrt、precision、enable_mkldnn、cpu_threads、enable_cinn等通用配置项的默认值与校验逻辑。传入非法engine或precision会直接抛出ValueError因此配置时需严格遵循白名单取值。5.2predict()与predict_iter()方法调用文档视觉语言模型的predict()方法进行推理预测该方法返回结果列表。此外该模块还提供predict_iter()方法两者在参数接收与结果返回上完全一致区别在于predict_iter()返回generator可逐步处理并获取预测结果适合处理大规模数据集或内存受限场景。从 paddleocr/_models/base.py 的实现可以看到二者关系def predict_iter(self, *args, **kwargs): return self.paddlex_predictor.predict(*args, **kwargs) def predict(self, *args, **kwargs): result list(self.predict_iter(*args, **kwargs)) return result即predict()本质是对predict_iter()的一次性物化list()收集predict()方便拿到全部结果predict_iter()适合流式处理。predict()方法参数说明如下参数说明类型默认值input含义输入数据。必填。说明多模态模型输入要求各异请参考具体模型确认格式。例如 PP-DocBee 系列模型的输入格式为{image: image_path, query: query_text}。dictNonebatch_size含义批大小。说明正整数。int15.3 结果对象处理方法每个样本的预测结果是对应的 Result 对象支持打印与保存为json文件等操作方法说明参数类型说明默认值print()将结果打印到终端format_jsonbool是否使用JSON缩进格式化输出内容Trueindentint指定缩进级别以美化输出JSON数据仅在format_json为True时生效4ensure_asciibool控制非ASCII字符是否转义为Unicode。为True时全部转义为False时保留原字符仅在format_json为True时生效Falsesave_to_json()将结果保存为json格式文件save_pathstr保存文件路径。为目录时保存文件的命名与输入文件类型保持一致Noneindentint指定缩进级别以美化输出JSON数据仅在format_json为True时生效4ensure_asciibool控制非ASCII字符是否转义为Unicode。为True时全部转义为False时保留原字符仅在format_json为True时生效False此外还可以通过属性获取预测结果属性说明json获取json格式的预测结果源码级补充从 tests/models/test_doc_vlm.py 的测试用例可见DocVLM直接传入图片路径字符串进行预测同样可行且返回结果字典包含{input_path, page_index, input_img, result}四个键。这说明底层 PaddleX 推理器对输入做了归一化处理无论传入dict还是路径字符串最终都会补齐input_path输入路径、page_index页码索引、input_img输入图像与result模型结果等标准字段。六、CLI 与 Python API 的对应关系doc_vlm子命令在底层复用了与 Python API 完全相同的执行逻辑见 paddleocr/_utils/cli.py 的perform_simple_inference从命令行参数中分离input与save_path用剩余参数model_name、model_dir、device、engine等实例化DocVLM封装类调用predict_iter逐条推理打印每条结果与耗时若指定--save_path调用res.save_all(save_path)保存全部结果结束后自动close()释放资源。因此CLI 与 Python API 的关键参数一一对应例如--model_name、--model_dir、--device、--engine分别对应构造参数model_name、model_dir、device、engine。其中 CLI 的引擎级配置需要在 PaddleX YAML 配置文件中设置参见 paddleocr/_common_args.py 中--engine参数的帮助说明。七、二次开发边界当前模块暂不支持微调训练仅支持推理集成。文档视觉语言模型的微调训练能力计划在未来版本中支持。八、常见问题FAQ官方文档中该模块的 FAQ 章节当前为空。结合源码与测试以下排查要点可供参考模型下载失败官方模型默认从 HuggingFace 下载若网络受限请设置环境变量PADDLE_PDX_MODEL_SOURCEBOS切换模型源依赖缺失若创建预测器时抛出DependencyErrorPaddleXPredictorWrapper._create_paddlex_predictor会将其包装为提示信息请参考安装文档确保依赖已安装见 paddleocr/_models/base.py此时请核对 安装指南 与 PaddlePaddle 框架安装非法参数engine或precision取值不在白名单内会抛出ValueError请对照 paddleocr/_common_args.py 中的支持列表检查输入格式PP-DocBee 系列要求{image: image_path, query: query_text}格式的输入 dictimage支持本地路径或 URLquery为自然语言指令。九、总结PaddleOCR 的 DocVLM 模块将文档视觉语言模型以一行命令 统一 Python API的形式开放出来降低了文档智能理解能力的使用门槛支持 PP-DocBee-2B / PP-DocBee-7B / PP-DocBee2-3B 三档模型按精度与资源需求灵活选型输入为图像 自然语言提问输出可为 Markdown 表格、结构化文本等天然适合与 LLM 工作流衔接predict()/predict_iter()双接口分别满足一次取全量与流式省内存两类场景结果对象提供print()、save_to_json()与json属性便于集成与落盘。如需深入阅读可进一步查看 模块使用文档、推理引擎与配置 以及相关源码 paddleocr/_models/doc_vlm.py 与 paddleocr/_models/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),仅供参考