README_ch.md 5.2 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 41 42 43
|算法|acc|[TEDS(Tree-Edit-Distance-based Similarity)](https://github.com/ibm-aur-nlp/PubTabNet/tree/master/src)|
| --- | --- | --- |
| EDD<sup>[2]</sup> |x| 88.3 |
| TableRec-RARE(ours) |73.8%| 93.32 |
| SLANet(ours) | 76.2%| 94.98 |
W
WenmuZhou 已提交
44

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

文幕地方's avatar
文幕地方 已提交
47 48 49 50 51 52 53 54 55
![图片](http://agroup.baidu-int.com/file/stream/bj/bj-e50a465becdbde9bffb84a84d41d196ac1acf1b6)
![图片](http://agroup.baidu-int.com/file/stream/bj/bj-17ea53b181408a35d977c6c26b1ea308b4c27a79)
![图片](http://agroup.baidu-int.com/file/stream/bj/bj-b905f57beca7115d54b907deac70c10056274858)
![图片](http://agroup.baidu-int.com/file/stream/bj/bj-894694c9558fe7deb8cc896f9411fdfd252bca72)
![图片](http://agroup.baidu-int.com/file/stream/bj/bj-03a0a67378b41a353257bd2fe8a1e9a864c89cb5)

## 4. 使用

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

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

# 下载模型
mkdir inference && cd inference
文幕地方's avatar
文幕地方 已提交
63 64 65 66 67 68
# 下载PP-OCRv3文本检测模型并解压
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_slim_infer.tar && tar xf ch_PP-OCRv3_det_slim_infer.tar
# 下载PP-OCRv3文本识别模型并解压
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_slim_infer.tar && tar xf ch_PP-OCRv3_rec_slim_infer.tar
# 下载PP-Structurev2表格识别模型并解压
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 已提交
69
cd ..
文幕地方's avatar
文幕地方 已提交
70
# 执行表格识别
文幕地方's avatar
文幕地方 已提交
71
python table/predict_table.py \
文幕地方's avatar
文幕地方 已提交
72 73 74 75 76 77 78
    --det_model_dir=inference/ch_PP-OCRv3_det_slim_infer \
    --rec_model_dir=inference/ch_PP-OCRv3_rec_slim_infer  \
    --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 已提交
79
```
文幕地方's avatar
文幕地方 已提交
80
运行完成后,每张图片的excel表格会保存到output字段指定的目录下,同时在该目录下回生产一个html文件,用于可视化查看单元格坐标和识别的表格。
W
WenmuZhou 已提交
81

文幕地方's avatar
文幕地方 已提交
82
### 4.2 训练
文幕地方's avatar
文幕地方 已提交
83

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

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

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

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

W
WenmuZhou 已提交
92
表格使用 [TEDS(Tree-Edit-Distance-based Similarity)](https://github.com/ibm-aur-nlp/PubTabNet/tree/master/src) 作为模型的评估指标。在进行模型评估之前,需要将pipeline中的三个模型分别导出为inference模型(我们已经提供好),还需要准备评估的gt, gt示例如下:
文幕地方's avatar
文幕地方 已提交
93
```txt
文幕地方's avatar
文幕地方 已提交
94
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
文幕地方 已提交
95 96 97 98 99 100
```
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 已提交
101 102 103 104
```

准备完成后使用如下命令进行评估,评估完成后会输出teds指标。
```python
W
WenmuZhou 已提交
105
cd PaddleOCR/ppstructure
文幕地方's avatar
文幕地方 已提交
106 107 108 109 110 111 112 113 114 115
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 已提交
116
```
W
WenmuZhou 已提交
117 118
如使用PubLatNet评估数据集,将会输出
```bash
文幕地方's avatar
文幕地方 已提交
119
teds: 94.98
W
WenmuZhou 已提交
120
```
M
update  
MissPenguin 已提交
121

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