README_ch.md 6.9 KB
Newer Older
M
update  
MissPenguin 已提交
1
[English](README.md) | 简体中文
W
WenmuZhou 已提交
2

文幕地方's avatar
文幕地方 已提交
3
# 表格识别
4

文幕地方's avatar
文幕地方 已提交
5 6
- [1. 表格识别 pipeline](#1-表格识别-pipeline)
- [2. 性能](#2-性能)
文幕地方's avatar
文幕地方 已提交
7 8 9 10 11 12
- [3. 效果演示](#3-效果演示)
- [4. 使用](#4-使用)
  - [4.1 快速开始](#41-快速开始)
  - [4.2 训练](#42-训练)
  - [4.3 计算TEDS](#43-计算teds)
- [5. Reference](#5-reference)
M
update  
MissPenguin 已提交
13 14


M
MissPenguin 已提交
15
## 1. 表格识别 pipeline
16

M
MissPenguin 已提交
17
表格识别主要包含三个模型
W
WenmuZhou 已提交
18 19
1. 单行文本检测-DB
2. 单行文本识别-CRNN
文幕地方's avatar
文幕地方 已提交
20
3. 表格结构和cell坐标预测-SLANet
W
WenmuZhou 已提交
21 22 23

具体流程图如下

M
update  
MissPenguin 已提交
24
![tableocr_pipeline](../docs/table/tableocr_pipeline.jpg)
W
WenmuZhou 已提交
25

W
WenmuZhou 已提交
26 27 28
流程说明:

1. 图片由单行文字检测模型检测到单行文字的坐标,然后送入识别模型拿到识别结果。
文幕地方's avatar
文幕地方 已提交
29
2. 图片由SLANet模型拿到表格的结构信息和单元格的坐标信息。
W
WenmuZhou 已提交
30 31 32
3. 由单行文字的坐标、识别结果和单元格的坐标一起组合出单元格的识别结果。
4. 单元格的识别结果和表格结构一起构造表格的html字符串。

33

W
WenmuZhou 已提交
34
## 2. 性能
M
update  
MissPenguin 已提交
35

W
WenmuZhou 已提交
36
我们在 PubTabNet<sup>[1]</sup> 评估数据集上对算法进行了评估,性能如下
W
WenmuZhou 已提交
37

W
WenmuZhou 已提交
38

文幕地方's avatar
文幕地方 已提交
39 40
|算法|Acc|[TEDS(Tree-Edit-Distance-based Similarity)](https://github.com/ibm-aur-nlp/PubTabNet/tree/master/src)|Speed|
| --- | --- | --- | ---|
文幕地方's avatar
文幕地方 已提交
41
| EDD<sup>[2]</sup> |x| 88.3% |x|
文幕地方's avatar
文幕地方 已提交
42
| TableRec-RARE(ours) | 71.73%| 93.88% |779ms|
文幕地方's avatar
文幕地方 已提交
43
| SLANet(ours) |76.31%|	95.89%|766ms|
文幕地方's avatar
文幕地方 已提交
44 45 46 47 48

性能指标解释如下:
- Acc: 模型对每张图像里表格结构的识别准确率,错一个token就算错误。
- TEDS: 模型对表格信息还原的准确度,此指标评价内容不仅包含表格结构,还包含表格内的文字内容。
- Speed: 模型在CPU机器上,开启MKL的情况下,单张图片的推理速度。
W
WenmuZhou 已提交
49

文幕地方's avatar
文幕地方 已提交
50
## 3. 效果演示
文幕地方's avatar
文幕地方 已提交
51

文幕地方's avatar
文幕地方 已提交
52 53 54
![](../docs/imgs/table_ch_result1.jpg)
![](../docs/imgs/table_ch_result2.jpg)
![](../docs/imgs/table_ch_result3.jpg)
文幕地方's avatar
文幕地方 已提交
55 56 57 58

## 4. 使用

### 4.1 快速开始
W
WenmuZhou 已提交
59

文幕地方's avatar
文幕地方 已提交
60
使用如下命令即可快速完成一张表格的识别。
W
WenmuZhou 已提交
61 62 63 64 65
```python
cd PaddleOCR/ppstructure

# 下载模型
mkdir inference && cd inference
文幕地方's avatar
文幕地方 已提交
66
# 下载PP-OCRv3文本检测模型并解压
文幕地方's avatar
文幕地方 已提交
67
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar && tar xf ch_PP-OCRv3_det_infer.tar
文幕地方's avatar
文幕地方 已提交
68
# 下载PP-OCRv3文本识别模型并解压
文幕地方's avatar
文幕地方 已提交
69
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar && tar xf ch_PP-OCRv3_rec_infer.tar
文幕地方's avatar
文幕地方 已提交
70
# 下载PP-Structurev2中文表格识别模型并解压
文幕地方's avatar
文幕地方 已提交
71
wget https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/ch_ppstructure_mobile_v2.0_SLANet_infer.tar && tar xf ch_ppstructure_mobile_v2.0_SLANet_infer.tar
W
WenmuZhou 已提交
72
cd ..
文幕地方's avatar
文幕地方 已提交
73
# 执行表格识别
文幕地方's avatar
文幕地方 已提交
74
python table/predict_table.py \
文幕地方's avatar
文幕地方 已提交
75 76
    --det_model_dir=inference/ch_PP-OCRv3_det_infer \
    --rec_model_dir=inference/ch_PP-OCRv3_rec_infer  \
文幕地方's avatar
文幕地方 已提交
77 78 79 80 81
    --table_model_dir=inference/ch_ppstructure_mobile_v2.0_SLANet_infer \
    --rec_char_dict_path=../ppocr/utils/ppocr_keys_v1.txt \
    --table_char_dict_path=../ppocr/utils/dict/table_structure_dict_ch.txt \
    --image_dir=docs/table/table.jpg \
    --output=../output/table
W
WenmuZhou 已提交
82
```
文幕地方's avatar
文幕地方 已提交
83
运行完成后,每张图片的excel表格会保存到output字段指定的目录下,同时在该目录下回生产一个html文件,用于可视化查看单元格坐标和识别的表格。
W
WenmuZhou 已提交
84

文幕地方's avatar
文幕地方 已提交
85 86 87 88
**NOTE**
1. 如果想使用英文模型,需要在[models_list](../docs/models_list.md)中下载英文文字检测识别模型和英文表格识别模型,同时替换`table_structure_dict_ch.txt``table_structure_dict.txt`即可。
2. 如需使用TableRec-RARE模型,需要替换`table_structure_dict_ch.txt``table_structure_dict.txt`,同时参数`--merge_no_span_structure=False`

文幕地方's avatar
文幕地方 已提交
89
### 4.2 训练
文幕地方's avatar
文幕地方 已提交
90

文幕地方's avatar
文幕地方 已提交
91
文本检测模型的训练、评估和推理流程可参考 [detection](../../doc/doc_ch/detection.md)
文幕地方's avatar
文幕地方 已提交
92

文幕地方's avatar
文幕地方 已提交
93
文本识别模型的训练、评估和推理流程可参考 [recognition](../../doc/doc_ch/recognition.md)
文幕地方's avatar
文幕地方 已提交
94

文幕地方's avatar
文幕地方 已提交
95
表格识别模型的训练、评估和推理流程可参考 [table_recognition](../../doc/doc_ch/table_recognition.md)
文幕地方's avatar
文幕地方 已提交
96

文幕地方's avatar
文幕地方 已提交
97
### 4.3 计算TEDS
W
WenmuZhou 已提交
98

W
WenmuZhou 已提交
99
表格使用 [TEDS(Tree-Edit-Distance-based Similarity)](https://github.com/ibm-aur-nlp/PubTabNet/tree/master/src) 作为模型的评估指标。在进行模型评估之前,需要将pipeline中的三个模型分别导出为inference模型(我们已经提供好),还需要准备评估的gt, gt示例如下:
文幕地方's avatar
文幕地方 已提交
100
```txt
文幕地方's avatar
文幕地方 已提交
101
PMC5755158_010_01.png    <html><body><table><thead><tr><td></td><td><b>Weaning</b></td><td><b>Week 15</b></td><td><b>Off-test</b></td></tr></thead><tbody><tr><td>Weaning</td><td>–</td><td>–</td><td>–</td></tr><tr><td>Week 15</td><td>–</td><td>0.17 ± 0.08</td><td>0.16 ± 0.03</td></tr><tr><td>Off-test</td><td>–</td><td>0.80 ± 0.24</td><td>0.19 ± 0.09</td></tr></tbody></table></body></html>
文幕地方's avatar
文幕地方 已提交
102 103 104 105 106 107
```
gt每一行都由文件名和表格的html字符串组成,文件名和表格的html字符串之间使用`\t`分隔。

也可使用如下命令,由标注文件生成评估的gt文件:
```python
python3 ppstructure/table/convert_label2html.py --ori_gt_path /path/to/your_label_file --save_path /path/to/save_file
W
WenmuZhou 已提交
108 109 110 111
```

准备完成后使用如下命令进行评估,评估完成后会输出teds指标。
```python
W
WenmuZhou 已提交
112
cd PaddleOCR/ppstructure
文幕地方's avatar
文幕地方 已提交
113 114 115 116 117 118 119 120 121 122
python3 table/eval_table.py \
    --det_model_dir=path/to/det_model_dir \
    --rec_model_dir=path/to/rec_model_dir \
    --table_model_dir=path/to/table_model_dir \
    --image_dir=../doc/table/1.png \
    --rec_char_dict_path=../ppocr/utils/dict/table_dict.txt \
    --table_char_dict_path=../ppocr/utils/dict/table_structure_dict.txt \
    --det_limit_side_len=736 \
    --det_limit_type=min \
    --gt_path=path/to/gt.txt
W
WenmuZhou 已提交
123
```
文幕地方's avatar
文幕地方 已提交
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

如使用英文表格识别模型在PubLatNet数据集上进行评估

```bash
cd PaddleOCR/ppstructure
# 下载模型
mkdir inference && cd inference
# 下载超轻量级表格英文OCR模型的检测模型并解压
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_det_infer.tar && tar xf en_ppocr_mobile_v2.0_table_det_infer.tar
# 下载超轻量级表格英文OCR模型的识别模型并解压
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_rec_infer.tar && tar xf en_ppocr_mobile_v2.0_table_rec_infer.tar
# 下载PP-Structurev2英文表格识别模型并解压
wget https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/en_ppstructure_mobile_v2.0_SLANet_infer.tar && tar xf en_ppstructure_mobile_v2.0_SLANet_infer.tar
cd ..

python3 table/eval_table.py \
    --det_model_dir=inference/en_ppocr_mobile_v2.0_table_det_infer \
    --rec_model_dir=inference/en_ppocr_mobile_v2.0_table_rec_infer \
    --table_model_dir=inference/en_ppstructure_mobile_v2.0_SLANet_infer \
    --image_dir=train_data/table/pubtabnet/val/ \
    --rec_char_dict_path=../ppocr/utils/dict/table_dict.txt \
    --table_char_dict_path=../ppocr/utils/dict/table_structure_dict.txt \
    --det_limit_side_len=736 \
    --det_limit_type=min \
    --gt_path=path/to/gt.txt
```

将会输出
W
WenmuZhou 已提交
152
```bash
文幕地方's avatar
文幕地方 已提交
153
teds: 95.89
W
WenmuZhou 已提交
154
```
M
update  
MissPenguin 已提交
155

文幕地方's avatar
文幕地方 已提交
156
## 5. Reference
W
WenmuZhou 已提交
157
1. https://github.com/ibm-aur-nlp/PubTabNet
158
2. https://arxiv.org/pdf/1911.10683