quickstart.md 5.0 KB
Newer Older
文幕地方's avatar
文幕地方 已提交
1 2
# PP-Structure 快速开始

M
update  
MissPenguin 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
- [1. 安装依赖包](#1)
- [2. 便捷使用](#2)
    - [2.1 命令行使用](#21)
        - [2.1.1 版面分析+表格识别](#211)
        - [2.1.2 DocVQA](#212)
    - [2.2 Python脚本使用](#22)
        - [2.2.1 版面分析+表格识别](#221)
        - [2.2.2 DocVQA](#222)
    - [2.3 返回结果说明](#23)
        - [2.3.1 版面分析+表格识别](#231)
        - [2.3.2 DocVQA](#232)
    - [2.4 参数说明](#24)


<a name="1"></a>
文幕地方's avatar
文幕地方 已提交
18 19 20
## 1. 安装依赖包

```bash
M
update  
MissPenguin 已提交
21 22 23 24 25 26
# 安装 paddleocr,推荐使用2.3.0.2+版本
pip3 install "paddleocr>=2.3.0.2" 
# 安装 版面分析依赖包layoutparser(如不需要版面分析功能,可跳过)
pip3 install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl 
# 安装 DocVQA依赖包paddlenlp(如不需要DocVQA功能,可跳过)
pip install paddlenlp
文幕地方's avatar
文幕地方 已提交
27 28 29

```

M
update  
MissPenguin 已提交
30
<a name="2"></a>
文幕地方's avatar
文幕地方 已提交
31 32
## 2. 便捷使用

M
update  
MissPenguin 已提交
33 34 35 36 37
<a name="21"></a>
### 2.1 命令行使用  
  
<a name="211"></a>
#### 2.1.1 版面分析+表格识别
文幕地方's avatar
文幕地方 已提交
38 39 40 41
```bash
paddleocr --image_dir=../doc/table/1.png --type=structure
```

M
update  
MissPenguin 已提交
42 43
<a name="212"></a>
#### 2.1.2 DocVQA
文幕地方's avatar
文幕地方 已提交
44

fanruinet's avatar
fanruinet 已提交
45
请参考:[文档视觉问答](../vqa/README.md)
文幕地方's avatar
文幕地方 已提交
46

M
update  
MissPenguin 已提交
47
<a name="22"></a>
文幕地方's avatar
文幕地方 已提交
48 49
### 2.2 Python脚本使用

M
update  
MissPenguin 已提交
50 51 52
<a name="221"></a>
#### 2.2.1 版面分析+表格识别

文幕地方's avatar
文幕地方 已提交
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
```python
import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_res

table_engine = PPStructure(show_log=True)

save_folder = './output/table'
img_path = '../doc/table/1.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])

for line in result:
    line.pop('img')
    print(line)

from PIL import Image

font_path = '../doc/fonts/simfang.ttf' # PaddleOCR下提供字体包
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```

M
update  
MissPenguin 已提交
79 80
<a name="222"></a>
#### 2.2.2 DocVQA
文幕地方's avatar
文幕地方 已提交
81

fanruinet's avatar
fanruinet 已提交
82
请参考:[文档视觉问答](../vqa/README.md)
文幕地方's avatar
文幕地方 已提交
83

M
update  
MissPenguin 已提交
84
<a name="23"></a>
文幕地方's avatar
文幕地方 已提交
85 86 87
### 2.3 返回结果说明
PP-Structure的返回结果为一个dict组成的list,示例如下

M
update  
MissPenguin 已提交
88 89
<a name="231"></a>
#### 2.3.1 版面分析+表格识别
文幕地方's avatar
文幕地方 已提交
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
```shell
[
  {   'type': 'Text',
      'bbox': [34, 432, 345, 462],
      'res': ([[36.0, 437.0, 341.0, 437.0, 341.0, 446.0, 36.0, 447.0], [41.0, 454.0, 125.0, 453.0, 125.0, 459.0, 41.0, 460.0]],
                [('Tigure-6. The performance of CNN and IPT models using difforen', 0.90060663), ('Tent  ', 0.465441)])
  }
]
```
dict 里各个字段说明如下

| 字段            | 说明           |
| --------------- | -------------|
|type|图片区域的类型|
|bbox|图片区域的在原图的坐标,分别[左上角x,左上角y,右下角x,右下角y]|
|res|图片区域的OCR或表格识别结果。<br> 表格: 表格的HTML字符串; <br> OCR: 一个包含各个单行文字的检测坐标和识别结果的元组|

M
update  
MissPenguin 已提交
107 108 109 110 111 112 113 114 115 116 117 118
运行完成后,每张图片会在`output`字段指定的目录下有一个同名目录,图片里的每个表格会存储为一个excel,图片区域会被裁剪之后保存下来,excel文件和图片名为表格在图片里的坐标。

  ```
  /output/table/1/
    └─ res.txt
    └─ [454, 360, 824, 658].xlsx  表格识别结果
    └─ [16, 2, 828, 305].jpg			被裁剪出的图片区域
    └─ [17, 361, 404, 711].xlsx		表格识别结果
  ```

<a name="232"></a>
#### 2.3.2 DocVQA
文幕地方's avatar
文幕地方 已提交
119

fanruinet's avatar
fanruinet 已提交
120
请参考:[文档视觉问答](../vqa/README.md)
文幕地方's avatar
文幕地方 已提交
121

M
update  
MissPenguin 已提交
122
<a name="24"></a>
文幕地方's avatar
文幕地方 已提交
123 124 125 126 127 128 129
### 2.4 参数说明

| 字段            | 说明                                     | 默认值                                      |
| --------------- | ---------------------------------------- | ------------------------------------------- |
| output          | excel和识别结果保存的地址                | ./output/table                              |
| table_max_len   | 表格结构模型预测时,图像的长边resize尺度 | 488                                         |
| table_model_dir | 表格结构模型 inference 模型地址          | None                                        |
文幕地方's avatar
文幕地方 已提交
130 131 132
| table_char_dict_path | 表格结构模型所用字典地址                 | ../ppocr/utils/dict/table_structure_dict.txt |
| layout_path_model | 版面分析模型模型地址,可以为在线地址或者本地地址,当为本地地址时,需要指定 layout_label_map, 命令行模式下可通过--layout_label_map='{0: "Text", 1: "Title", 2: "List", 3:"Table", 4:"Figure"}' 指定              | lp://PubLayNet/ppyolov2_r50vd_dcn_365e_publaynet/config |
| layout_label_map | 版面分析模型模型label映射字典                 | None |
文幕地方's avatar
文幕地方 已提交
133 134 135
| model_name_or_path | VQA SER模型地址                | None |
| max_seq_length | VQA SER模型最大支持token长度              | 512 |
| label_map_path | VQA SER 标签文件地址              | ./vqa/labels/labels_ser.txt |
fanruinet's avatar
fanruinet 已提交
136
| mode | pipeline预测模式,structure: 版面分析+表格识别; VQA: SER文档信息抽取              | structure |
文幕地方's avatar
文幕地方 已提交
137

fanruinet's avatar
fanruinet 已提交
138
大部分参数和PaddleOCR whl包保持一致,见 [whl包文档](../../doc/doc_ch/whl.md)