File size: 7,891 Bytes
a077328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
---
license: apache-2.0
base_model:
- Qwen/Qwen2-VL-7B-Instruct
---

# PP-DocBee

## 1. 简介

[PP-DocBee](https://github.com/PaddlePaddle/PaddleMIX/tree/develop/paddlemix/examples/ppdocbee) 是PaddleMIX团队自研的一款专注于文档理解的多模态大模型,在中文文档理解任务上具有卓越表现。该模型通过近 500 万条文档理解类多模态数据集进行微调优化,各种数据集包括了通用VQA类、OCR类、图表类、text-rich文档类、数学和复杂推理类、合成数据类、纯文本数据等,并设置了不同训练数据配比。在学术界权威的几个英文文档理解评测榜单上,PP-DocBee基本都达到了同参数量级别模型的SOTA。在内部业务中文场景类的指标上,PP-DocBee也高于目前的热门开源和闭源模型。

**本仓库支持的模型权重:**

| Model              |
|--------------------|
| PaddleMIX/PPDocBee-7B-1210 |


## 2. 环境要求
- **python >= 3.10**
- **paddlepaddle-gpu 要求>=3.0.0b2或版本develop**
- **paddlenlp 要求>=3.0.0b2**
```
# paddlepaddle-gpu develop版安装示例
python -m pip install paddlepaddle-gpu==0.0.0.post118 -f https://www.paddlepaddle.org.cn/whl/linux/gpu/develop.html

# paddlenlp 3.0.0b3安装示例(推荐)
python -m pip install paddlenlp==3.0.0b3
```



> 注:(默认开启flash_attn)使用flash_attn 要求A100/A800显卡或者H20显卡。V100请用float16推理。


## 3. 在线体验和部署

### 3.1 在线体验
https://github.com/user-attachments/assets/8e74c364-6d65-4930-b873-6fd5df263d9a

我们提供了在线体验环境,您可以通过[AI Studio](https://aistudio.baidu.com/application/detail/60135)快速体验 PP-DocBee 的功能。

### 3.2 本地gradio部署
```bash
# 安装gradio
pip install gradio==5.6.0
# 运行gradio
python paddlemix/examples/ppdocbee/app.py
```

<p align="center">
  <img src="https://github.com/user-attachments/assets/f6961b29-c168-4e61-b005-032f010dc2ee" width="90%" alt="示例图片"/>
</p>

### 3.3 OpenAI服务部署
我们提供了基于OpenAI服务部署的代码,您可以通过阅读[服务部署文档](https://github.com/PaddlePaddle/PaddleMIX/blob/develop/paddlemix/examples/qwen2_vl/README_SERVER.md)快速搭建服务。


## 4. 使用指南

### 4.1 模型推理

下面展示了一个表格识别的示例:

<p align="center">
  <img src="https://github.com/user-attachments/assets/6a03a848-c396-4b2f-a7f3-47ff1441c750" width="50%" alt="示例图片"/>
</p>

```bash
python paddlemix/examples/ppdocbee/ppdocbee_infer.py \
  --model_path "PaddleMIX/PPDocBee-2B-1129" \
  --image_file "paddlemix/demo_images/medal_table.png" \
  --question "识别这份表格的内容"
```

输出示例:
```
| 名次 | 国家/地区 | 金牌 | 银牌 | 铜牌 | 奖牌总数 |
| --- | --- | --- | --- | --- | --- |
| 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 |
```

### 4.2 模型微调

### 4.2.1 小型示例数据集

PaddleMIX团队整理了`chartqa`数据集作为小型的示例数据集,下载链接为:

```bash
wget https://paddlenlp.bj.bcebos.com/models/community/paddlemix/benchmark/playground.tar # 1.0G
```
playground/目录下包括了图片目录`data/chartqa/`和标注目录`opensource_json/`,详见`paddlemix/examples/ppdocbee/configs/demo_chartqa_500.json`### 4.2.2 大型公开数据集

PP-DocBee模型的SFT训练数据集,包括了众多文档类的指令微调数据集,例如:`dvqa``chartqa``ai2d``docvqa``geoqa+``synthdog_en``LLaVA-OneVision`系列以及内部合成数据集,部分公开数据集详见`paddlemix/examples/ppdocbee/configs/ppdocbee_public_dataset.json`,内部合成数据集暂时不对外开放。

PaddleMIX团队整理后的下载链接为:
```bash
wget https://paddlenlp.bj.bcebos.com/datasets/paddlemix/playground.tar # 50G
wget https://paddlenlp.bj.bcebos.com/datasets/paddlemix/playground/opensource_json.tar
```

注意:若先下载了示例数据集的`playground.tar`解压了,此处需删除后,再下载公开数据集的`playground.tar`并解压,opensource_json.tar需下载解压在playground/目录下,opensource_json 里是数据标注的json格式文件。

PaddleMIX团队整理后的`LLaVA-OneVision`系列数据集待开放下载链接,请关注后续更新。


### 4.3 微调命令

注意:此微调训练为语言模型微调,冻结视觉编码器而放开LLM训练,2B模型全量微调训练的显存大小约为30G。

```bash
# 2B
sh paddlemix/examples/ppdocbee/shell/ppdocbee_sft.sh

# 2B lora
sh paddlemix/examples/ppdocbee/shell/ppdocbee_lora.sh
```

注意:默认是公开数据集训练的配置,若需使用示例数据集,请在`ppdocbee_sft.sh``ppdocbee_lora.sh`中修改`--meta_path``paddlemix/examples/ppdocbee/configs/demo_chartqa_500.json`### 4.4 微调后使用

只需将`paddlemix/examples/ppdocbee/ppdocbee_infer.py`中的`--model_path`参数修改为微调后的模型路径即可。

```bash
python paddlemix/examples/ppdocbee/ppdocbee_infer.py \
  --model_path "your_trained_model_path" \
  --image_file "paddlemix/demo_images/medal_table.png" \
  --question "识别这份表格的内容"
```


## 5. 性能评测

### 5.1 英文公开评估集指标

API/Model         | DocVQA-test | ChartQA-test | InfoVQA-test | TextVQA-val | OCRBench 
----------------- | ----------- | ------------ | ------------ | ----------- | -------- 
GPT-4o API        | 92.8        | 85.7         | 79.2       | 77.4       | 73.6    
Gemini-1.5-Pro API| 93.1        | 87.2         | 80.1       | 78.7       | 75.4    
MiniCPM-V-2-2B    | 71.9        | -            |       -      | 74.1       | 60.5    
SmolVLM-Instruct-2B| 81.6       | -            |       -      | 72.7       | -        
Aquila-VL-2B      | 85.0        | 76.5         | 58.3         | 76.4       | 77.2   
Mini-Monkey-2B    | 87.4        | 76.5         | 60.1         | 76.0       | 79.4  
InternVL2-2B      | 86.9        | 76.2         | 58.9         | 73.4       | 78.1  
InternVL2.5-2B    | 88.7        | **79.2**     | 60.9        | 74.3        | 80.4     
Qwen2-VL-2B       | 90.1        | 73.5        | 65.5        | 79.7        | 79.4    
**PPDocBee-2B**   | **90.6**    | 74.6        | **66.2**    | **81.2**  | **82.8**(**83.5**)

> ⚠️注意:
> 1. OCRBench指标归一化到100分制,PPDocBee-2B的OCRBench指标中,82.8是端到端评估的分数,83.5是OCR后处理辅助评估的分数。

### 5.2 内部业务中文场景评估集指标

| API/模型 | 总分 | 印刷文字类 | 表格类 | 印章类 | 图表类 |
|---------|-----:|---------:|------:|------:|------:|
| GPT-4o API | 685 | 436 | 198 | 5 | 46 |
| GLM-4V Flash API | 547 | 339 | 169 | 5 | 34 |
| InternVL2.5-2B | 596 | 363 | 182 | 4 | **47** |
| Qwen2-VL-2B | 680 | 476 | 167 | **8** | 29 |
| **PPDocBee-2B** | **765** | **517** | **202** | 5 | 41 |

印刷文字类 (655张)、表格类 (358张)、印章类 (15张)、图表类 (176张)

> ⚠️注意:
> 1. 内部业务中文场景评测于 2024.12.09日修订,所有图像分辨率 (1680, 1204),共1196条数据。
> 2. 内部业务中文场景评估集包括了财报、法律法规、理工科论文、说明书、文科论文、合同、研报等场景,暂时未有计划公开。