PaddleOCR/ppstructure/README_ch.md

126 lines
5.7 KiB
Markdown
Raw Normal View History

2021-06-10 14:24:59 +08:00
# PaddleStructure
2021-07-29 11:51:28 +08:00
PaddleStructure是一个用于复杂版面分析的OCR工具包其能够对图片形式的文档数据划分**文字、表格、标题、图片以及列表**5类区域并将表格区域提取为excel
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
## 1. 快速开始
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
### 1.1 安装
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
**安装 layoutparser**
```sh
2021-08-01 11:50:29 +08:00
pip3 install -U premailer paddleocr https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl
2021-07-29 11:51:28 +08:00
```
**安装 paddlestructure**
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
pip安装
```bash
pip install paddlestructure
```
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
本地构建并安装
```bash
python3 setup.py bdist_wheel
pip3 install dist/paddlestructure-x.x.x-py3-none-any.whl # x.x.x是 paddlestructure 的版本号
```
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
### 1.2 PaddleStructure whl包使用
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
#### 1.2.1 命令行使用
2021-06-10 14:24:59 +08:00
2021-07-29 11:51:28 +08:00
```bash
paddlestructure --image_dir=../doc/table/1.png
2021-06-23 12:45:05 +08:00
```
2021-07-29 11:51:28 +08:00
#### 1.2.2 Python脚本使用
2021-06-10 14:24:59 +08:00
```python
2021-06-23 12:28:32 +08:00
import os
2021-06-10 14:24:59 +08:00
import cv2
2021-06-23 12:28:32 +08:00
from paddlestructure import PaddleStructure,draw_result,save_res
2021-06-10 14:24:59 +08:00
2021-06-23 12:28:32 +08:00
table_engine = PaddleStructure(show_log=True)
2021-06-10 14:24:59 +08:00
2021-06-23 12:28:32 +08:00
save_folder = './output/table'
2021-06-10 14:24:59 +08:00
img_path = '../doc/table/1.png'
img = cv2.imread(img_path)
result = table_engine(img)
2021-06-23 12:28:32 +08:00
save_res(result, save_folder,os.path.basename(img_path).split('.')[0])
2021-06-10 14:24:59 +08:00
for line in result:
print(line)
from PIL import Image
2021-07-29 11:51:28 +08:00
font_path = '../doc/fonts/simfang.ttf' # PaddleOCR下提供字体包
2021-06-10 14:24:59 +08:00
image = Image.open(img_path).convert('RGB')
im_show = draw_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```
2021-08-01 16:46:43 +08:00
#### 1.2.3 返回结果说明
PaddleStructure 的返回结果为一个dict组成的list示例如下
```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: 一个包含各个单行文字的检测坐标和识别结果的元组|
2021-06-10 14:24:59 +08:00
2021-08-01 16:46:43 +08:00
#### 1.2.4 参数说明
2021-07-29 11:51:28 +08:00
| 字段 | 说明 | 默认值 |
| --------------- | ---------------------------------------- | ------------------------------------------- |
| output | excel和识别结果保存的地址 | ./output/table |
| table_max_len | 表格结构模型预测时图像的长边resize尺度 | 488 |
| table_model_dir | 表格结构模型 inference 模型地址 | None |
| table_char_type | 表格结构模型所用字典地址 | ../ppocr/utils/dict/table_structure_dict.tx |
2021-06-10 17:17:46 +08:00
大部分参数和paddleocr whl包保持一致见 [whl包文档](../doc/doc_ch/whl.md)
2021-07-29 11:51:28 +08:00
运行完成后,每张图片会在`output`字段指定的目录下有一个同名目录图片里的每个表格会存储为一个excelexcel文件名为表格在图片里的坐标。
## 2. PaddleStructure Pipeline
流程如下
![pipeline](../doc/table/pipeline.jpg)
在PaddleStructure中图片会先经由layoutparser进行版面分析在版面分析中会对图片里的区域进行分类包括**文字、标题、图片、列表和表格**5类。对于前4类区域直接使用PP-OCR完成对应区域文字检测与识别。对于表格类区域经过Table OCR处理后表格图片转换为相同表格样式的Excel文件。
2021-07-29 16:12:44 +08:00
### 2.1 版面分析
2021-07-29 11:51:28 +08:00
版面分析对文档数据进行区域分类其中包括版面分析工具的Python脚本使用、提取指定类别检测框、性能指标以及自定义训练版面分析模型详细内容可以参考[文档](layout/README.md)。
2021-07-29 16:12:44 +08:00
### 2.2 表格识别
2021-07-29 11:51:28 +08:00
Table OCR将表格图片转换为excel文档其中包含对于表格文本的检测和识别以及对于表格结构和单元格坐标的预测详细说明参考[文档](table/README_ch.md)
2021-07-29 16:12:44 +08:00
## 3. 预测引擎推理
2021-07-29 11:51:28 +08:00
使用如下命令即可完成预测引擎的推理
```python
2021-07-30 12:25:54 +08:00
python3 table/predict_system.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 --rec_char_type=EN --det_limit_side_len=736 --det_limit_type=min --output=../output/table --vis_font_path=../doc/fonts/simfang.ttf
2021-07-29 11:51:28 +08:00
```
运行完成后每张图片会output字段指定的目录下有一个同名目录图片里的每个表格会存储为一个excelexcel文件名为表格在图片里的坐标。
2021-07-29 16:12:44 +08:00
**Model List**
2021-06-10 17:17:46 +08:00
2021-07-29 11:51:28 +08:00
|模型名称|模型简介|配置文件|推理模型大小|下载地址|
| --- | --- | --- | --- | --- |
|en_ppocr_mobile_v2.0_table_det|英文表格场景的文字检测|[ch_det_mv3_db_v2.0.yml](../configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml)| 4.7M |[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_det_infer.tar) |
2021-07-29 16:32:52 +08:00
|en_ppocr_mobile_v2.0_table_rec|英文表格场景的文字识别|[rec_chinese_lite_train_v2.0.yml](../configs/rec/rec_mv3_none_bilstm_ctc.yml)|6.9M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_rec_infer.tar) |
2021-07-29 11:51:28 +08:00
|en_ppocr_mobile_v2.0_table_structure|英文表格场景的表格结构预测|[table_mv3.yml](../configs/table/table_mv3.yml)|18.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_structure_infer.tar) |