You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

comments
true

文档类视觉语言模型模块使用教程

一、概述

文档类视觉语言模型是当前一种前沿的多模态处理技术,旨在解决传统文档处理方法的局限性。传统方法往往局限于处理特定格式或预定义类别的文档信息,而文档类视觉语言模型能够融合视觉与语言信息,理解并处理多样化的文档内容。通过结合计算机视觉与自然语言处理技术,模型可以识别文档中的图像、文本及其相互关系,甚至能理解复杂版面结构中的语义信息。这使得文档处理更加智能化、灵活化,具备更强的泛化能力,在自动化办公、信息提取等领域展现出广阔的应用前景。

二、支持模型列表

模型模型下载链接 模型存储大小GB 模型总分 介绍
PP-DocBee-2B推理模型 4.2 765 PP-DocBee 是飞桨团队自研的一款专注于文档理解的多模态大模型,在中文文档理解任务上具有卓越表现。该模型通过近 500 万条文档理解类多模态数据集进行微调优化各种数据集包括了通用VQA类、OCR类、图表类、text-rich文档类、数学和复杂推理类、合成数据类、纯文本数据等并设置了不同训练数据配比。在学术界权威的几个英文文档理解评测榜单上PP-DocBee基本都达到了同参数量级别模型的SOTA。在内部业务中文场景类的指标上PP-DocBee也高于目前的热门开源和闭源模型。
PP-DocBee-7B推理模型 15.8 -
PP-DocBee2-3B推理模型 7.6 852 PP-DocBee2 是飞桨团队自研的一款专注于文档理解的多模态大模型在PP-DocBee的基础上进一步优化了基础模型并引入了新的数据优化方案提高了数据质量使用自研数据合成策略生成的少量的47万数据便使得PP-DocBee2在中文文档理解任务上表现更佳。在内部业务中文场景类的指标上PP-DocBee2相较于PP-DocBee提升了约11.4%,同时也高于目前的同规模热门开源和闭源模型。

注:以上模型总分为内部评估集模型测试结果,内部评估集所有图像分辨率 (height, width) 为 (1680,1204)共1196条数据包括了财报、法律法规、理工科论文、说明书、文科论文、合同、研报等场景暂时未有计划公开。

三、快速开始

在快速开始前,请先安装 PaddleOCR 的 wheel 包,详细请参考 安装教程

使用一行命令即可快速体验:

paddleocr doc_vlm -i "{'image': 'https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/medal_table.png', 'query': '识别这份表格的内容, 以markdown格式输出'}"

您也可以将开放文档类视觉语言模型模块中的模型推理集成到您的项目中。运行以下代码前,请您下载示例图片到本地。

from paddleocr import DocVLM
model = DocVLM(model_name="PP-DocBee2-3B")
results = model.predict(
    input={"image": "medal_table.png", "query": "识别这份表格的内容, 以markdown格式输出"},
    batch_size=1
)
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: 模型预测的结果信息

预测结果打印可视化如下:

| 名次 | 国家/地区 | 金牌 | 银牌 | 铜牌 | 奖牌总数 |
| --- | --- | --- | --- | --- | --- |
| 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 |

相关方法、参数等说明如下:

  • DocVLM实例化文档类视觉语言模型(此处以PP-DocBee-2B为例),具体说明如下:
参数 参数说明 参数类型 默认值
model_name 模型名称 str PP-DocBee-2B
model_dir 模型存储路径 str None
device 用于推理的设备。
例如:cpugpunpugpu:0gpu:0,1
如指定多个设备,将进行并行推理。
默认情况下,优先使用 GPU 0若不可用则使用 CPU。
str None
enable_hpi 是否启用高性能推理。 bool False
use_tensorrt 是否启用 Paddle Inference 的 TensorRT 子图引擎。 bool False
min_subgraph_size 当使用 Paddle Inference 的 TensorRT 子图引擎时,设置的最小子图大小。 int 3
precision 当使用 Paddle Inference 的 TensorRT 子图引擎时设置的计算精度。
可选项:fp32fp16 等。
str fp32
enable_mkldnn 是否启用MKL-DNN加速库。
bool True
cpu_threads 在 CPU 上推理时使用的线程数量。 int 10
  • 其中,model_name 必须指定,指定 model_name 后,默认使用 PaddleX 内置的模型参数,在此基础上,指定 model_dir 时,使用用户自定义的模型。

  • 调用文档类视觉语言模型的 predict() 方法进行推理预测,该方法会返回一个结果列表。另外,本模块还提供了 predict_iter() 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 predict_iter() 返回的是一个 generator,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。predict() 方法参数有 inputbatch_size,具体说明如下:

参数 参数说明 参数类型 默认值
input 待预测数据,必填。由于多模态模型对输入要求不同,请根据具体模型设定输入格式。
例如:对于 PP-DocBee 系列模型,输入形式应为:{'image': image_path, 'query': query_text}
dict
batch_size 批大小,可设置为任意正整数。 int 1
  • 对预测结果进行处理每个样本的预测结果均为对应的Result对象且支持打印、保存为json文件的操作:
方法 方法说明 参数 参数类型 参数说明 默认值
print() 打印结果到终端 format_json bool 是否对输出内容进行使用 JSON 缩进格式化 True
indent int 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_jsonTrue 时有效 4
ensure_ascii bool 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_jsonTrue时有效 False
save_to_json() 将结果保存为json格式的文件 save_path str 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致
indent int 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_jsonTrue 时有效 4
ensure_ascii bool 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_jsonTrue时有效 False
  • 此外,也支持通过属性获取预测结果,具体如下:
属性 属性说明
json 获取预测的json格式的结果

四、二次开发

当前模块暂时不支持微调训练,仅支持推理集成。关于该模块的微调训练,计划在未来支持。

五、FAQ