diff --git a/README_ch.md b/README_ch.md index c41aa751dbcf1b61974c1cee612a498d48fe0a48..db9b104a2500651eef80320c46397cef84dfa0a3 100755 --- a/README_ch.md +++ b/README_ch.md @@ -69,14 +69,6 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 更多模型下载(包括多语言),可以参考[PP-OCR 系列模型下载](./doc/doc_ch/models_list.md) -## PP-Structure系列模型列表(更新中) - -| 模型简介 | 模型名称 | 推荐场景 | 版面分析 | 表格识别 | DocVQA | -| ------- | ------- | ------- | -------- | --------- | -------- | -| | | | | | | - -更多模型下载(包括多语言),可以参考[PP-Structure 系列模型下载](./doc/ppstructure/models_list.md) - ## 文档教程 @@ -101,16 +93,16 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 - [Paddle2ONNX模型转化与预测](./deploy/paddle2onnx/readme.md) - [Benchmark](./doc/doc_ch/benchmark.md) - [PP-Structure文档分析🔥](./ppstructure/README_ch.md) - - [快速开始](./doc/ppstructure/quickstart.md) - - [模型库](./doc/ppstructure/models_list.md) + - [快速开始](./ppstructure/docs/quickstart.md) + - [模型库](./ppstructure/docs/models_list.md) - [模型训练](./doc/doc_ch/training.md) - [版面分析](./ppstructure/layout/README_ch.md) - [表格识别](./ppstructure/table/README_ch.md) - - [关键信息提取](./doc/ppstructure/kie.md) + - [关键信息提取](./ppstructure/docs/kie.md) - [DocVQA](./ppstructure/vqa/README_ch.md) - [推理部署](./deploy/readme_ch.md) - - [基于Python预测引擎推理](./doc/ppstructure/inference.md) - - [基于C++预测引擎推理](./doc/ppstructure/inference_cpp.md) + - [基于Python预测引擎推理](./ppstructure/docs/inference.md) + - [基于C++预测引擎推理]() - [服务化部署](./deploy/pdserving/README_CN.md) - [前沿算法与模型🚀](./doc/doc_ch/algorithm.md) - [文本检测算法](./doc/doc_ch/algorithm_overview.md#11-%E6%96%87%E6%9C%AC%E6%A3%80%E6%B5%8B%E7%AE%97%E6%B3%95) @@ -146,7 +138,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 ## 效果展示 [more](./doc/doc_ch/visualization.md)
-中文模型 +PP-OCRv2 中文模型
@@ -161,7 +153,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
-英文模型 +PP-OCRv2 英文模型
@@ -171,7 +163,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
-其他语言模型 +PP-OCRv2 其他语言模型
@@ -180,6 +172,25 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
+
+PP-Structure 文档分析 + +- 版面分析+表格识别 +
+ +
+ +- SER(语义实体识别) +
+ +
+ +- RE(关系提取) +
+ +
+ +
diff --git a/ppstructure/README_ch.md b/ppstructure/README_ch.md index dc7ac1e9b22fc839e4f581b54962406c7d0f931c..9d1b7812ab7f6812319470677168f72ff0d1056c 100644 --- a/ppstructure/README_ch.md +++ b/ppstructure/README_ch.md @@ -1,30 +1,34 @@ [English](README.md) | 简体中文 -- [1. 简介](#1-简介) -- [2. 近期更新](#2-近期更新) -- [3. 特性](#3-特性) -- [4. 效果展示](#4-效果展示) - - [4.1 版面分析和表格识别](#41-版面分析和表格识别) - - [4.2 DOC-VQA](#42-doc-vqa) -- [5. 快速体验](#5-快速体验) -- [6. PP-Structure 介绍](#6-pp-structure-介绍) - - [6.1 版面分析+表格识别](#61-版面分析表格识别) - - [6.1.1 版面分析](#611-版面分析) - - [6.1.2 表格识别](#612-表格识别) - - [6.2 DOC-VQA](#62-doc-vqa) -- [7. 模型库](#7-模型库) - - [7.1 版面分析模型](#71-版面分析模型) - - [7.2 OCR和表格识别模型](#72-ocr和表格识别模型) - - [7.2 DOC-VQA 模型](#72-doc-vqa-模型) - - +# PP-Structure + +- [1. 简介](#1) +- [2. 近期更新](#2) +- [3. 特性](#3) +- [4. 效果展示](#4) + - [4.1 版面分析和表格识别](#41) + - [4.2 DocVQA](#42) +- [5. 快速体验](#5) +- [6. PP-Structure 介绍](#6) + - [6.1 版面分析+表格识别](#61) + - [6.1.1 版面分析](#611) + - [6.1.2 表格识别](#612) + - [6.2 DocVQA](#62) +- [7. 模型库](#7) + - [7.1 版面分析模型](#71) + - [7.2 OCR和表格识别模型](#72) + - [7.3 DocVQA 模型](#73) + + ## 1. 简介 PP-Structure是一个可用于复杂文档结构分析和处理的OCR工具包,旨在帮助开发者更好的完成文档理解相关任务。 + ## 2. 近期更新 -* 2022.02.12 DOC-VQA增加LayoutLMv2模型。 +* 2022.02.12 DocVQA增加LayoutLMv2模型。 * 2021.12.07 新增[DOC-VQA任务SER和RE](vqa/README.md)。 + ## 3. 特性 PP-Structure的主要特性如下: @@ -33,21 +37,24 @@ PP-Structure的主要特性如下: - 支持表格区域进行结构化分析,最终结果输出Excel文件 - 支持python whl包和命令行两种方式,简单易用 - 支持版面分析和表格结构化两类任务自定义训练 -- 支持文档视觉问答(Document Visual Question Answering,DOC-VQA)任务-语义实体识别(Semantic Entity Recognition,SER)和关系抽取(Relation Extraction,RE) +- 支持文档视觉问答(Document Visual Question Answering,DocVQA)任务-语义实体识别(Semantic Entity Recognition,SER)和关系抽取(Relation Extraction,RE) + ## 4. 效果展示 + ### 4.1 版面分析和表格识别 - + 图中展示了版面分析+表格识别的整体流程,图片先有版面分析划分为图像、文本、标题和表格四种区域,然后对图像、文本和标题三种区域进行OCR的检测识别,对表格进行表格识别,其中图像还会被存储下来以便使用。 + ### 4.2 DOC-VQA * SER -![](../doc/vqa/result_ser/zh_val_0_ser.jpg) | ![](../doc/vqa/result_ser/zh_val_42_ser.jpg) +![](./docs/vqa/result_ser/zh_val_0_ser.jpg) | ![](./docs/vqa/result_ser/zh_val_42_ser.jpg) ---|--- 图中不同颜色的框表示不同的类别,对于XFUN数据集,有`QUESTION`, `ANSWER`, `HEADER` 3种类别 @@ -60,46 +67,55 @@ PP-Structure的主要特性如下: * RE -![](../doc/vqa/result_re/zh_val_21_re.jpg) | ![](../doc/vqa/result_re/zh_val_40_re.jpg) +![](./docs/vqa/result_re/zh_val_21_re.jpg) | ![](./docs/vqa/result_re/zh_val_40_re.jpg) ---|--- 图中红色框表示问题,蓝色框表示答案,问题和答案之间使用绿色线连接。在OCR检测框的左上方也标出了对应的类别和OCR识别结果。 + ## 5. 快速体验 -请参考[快速安装](./docs/quickstart.md)教程。 +请参考[快速使用](./docs/quickstart.md)教程。 + ## 6. PP-Structure 介绍 + ### 6.1 版面分析+表格识别 -![pipeline](../doc/table/pipeline.jpg) +![pipeline](./docs/table/pipeline.jpg) 在PP-Structure中,图片会先经由Layout-Parser进行版面分析,在版面分析中,会对图片里的区域进行分类,包括**文字、标题、图片、列表和表格**5类。对于前4类区域,直接使用PP-OCR完成对应区域文字检测与识别。对于表格类区域,经过表格结构化处理后,表格图片转换为相同表格样式的Excel文件。 + #### 6.1.1 版面分析 版面分析对文档数据进行区域分类,其中包括版面分析工具的Python脚本使用、提取指定类别检测框、性能指标以及自定义训练版面分析模型,详细内容可以参考[文档](layout/README_ch.md)。 + #### 6.1.2 表格识别 表格识别将表格图片转换为excel文档,其中包含对于表格文本的检测和识别以及对于表格结构和单元格坐标的预测,详细说明参考[文档](table/README_ch.md)。 -### 6.2 DOC-VQA + +### 6.2 DocVQA -DOC-VQA指文档视觉问答,其中包括语义实体识别 (Semantic Entity Recognition, SER) 和关系抽取 (Relation Extraction, RE) 任务。基于 SER 任务,可以完成对图像中的文本识别与分类;基于 RE 任务,可以完成对图象中的文本内容的关系提取,如判断问题对(pair),详细说明参考[文档](vqa/README.md)。 +DocVQA指文档视觉问答,其中包括语义实体识别 (Semantic Entity Recognition, SER) 和关系抽取 (Relation Extraction, RE) 任务。基于 SER 任务,可以完成对图像中的文本识别与分类;基于 RE 任务,可以完成对图象中的文本内容的关系提取,如判断问题对(pair),详细说明参考[文档](vqa/README.md)。 + ## 7. 模型库 PP-Structure系列模型列表(更新中) + ### 7.1 版面分析模型 |模型名称|模型简介|下载地址| label_map| | --- | --- | --- | --- | | ppyolov2_r50vd_dcn_365e_publaynet | PubLayNet 数据集训练的版面分析模型,可以划分**文字、标题、表格、图片以及列表**5类区域 | [PubLayNet](https://paddle-model-ecology.bj.bcebos.com/model/layout-parser/ppyolov2_r50vd_dcn_365e_publaynet.tar) | {0: "Text", 1: "Title", 2: "List", 3:"Table", 4:"Figure"}| + ### 7.2 OCR和表格识别模型 |模型名称|模型简介|模型大小|下载地址| @@ -108,7 +124,8 @@ PP-Structure系列模型列表(更新中) |ch_PP-OCRv2_rec_slim|【最新】slim量化版超轻量模型,支持中英文、数字识别| 9M |[推理模型](https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_slim_quant_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_slim_quant_train.tar) | |en_ppocr_mobile_v2.0_table_structure|PubLayNet数据集训练的英文表格场景的表格结构预测|18.6M|[推理模型](https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_structure_infer.tar) / [训练模型](https://paddleocr.bj.bcebos.com/dygraph_v2.1/table/en_ppocr_mobile_v2.0_table_structure_train.tar) | -### 7.2 DOC-VQA 模型 + +### 7.3 DocVQA 模型 |模型名称|模型简介|模型大小|下载地址| | --- | --- | --- | --- | diff --git a/doc/ppstructure/imgs/0.png b/ppstructure/docs/imgs/0.png similarity index 100% rename from doc/ppstructure/imgs/0.png rename to ppstructure/docs/imgs/0.png diff --git a/doc/ppstructure/inference.md b/ppstructure/docs/inference.md similarity index 100% rename from doc/ppstructure/inference.md rename to ppstructure/docs/inference.md diff --git a/doc/ppstructure/installation.md b/ppstructure/docs/installation.md similarity index 100% rename from doc/ppstructure/installation.md rename to ppstructure/docs/installation.md diff --git a/doc/ppstructure/kie.md b/ppstructure/docs/kie.md similarity index 100% rename from doc/ppstructure/kie.md rename to ppstructure/docs/kie.md diff --git a/doc/ppstructure/kie_en.md b/ppstructure/docs/kie_en.md similarity index 100% rename from doc/ppstructure/kie_en.md rename to ppstructure/docs/kie_en.md diff --git a/doc/ppstructure/models_list.md b/ppstructure/docs/models_list.md similarity index 100% rename from doc/ppstructure/models_list.md rename to ppstructure/docs/models_list.md diff --git a/doc/ppstructure/quickstart.md b/ppstructure/docs/quickstart.md similarity index 100% rename from doc/ppstructure/quickstart.md rename to ppstructure/docs/quickstart.md diff --git a/doc/table/1.png b/ppstructure/docs/table/1.png similarity index 100% rename from doc/table/1.png rename to ppstructure/docs/table/1.png diff --git a/doc/table/layout.jpg b/ppstructure/docs/table/layout.jpg similarity index 100% rename from doc/table/layout.jpg rename to ppstructure/docs/table/layout.jpg diff --git a/doc/table/paper-image.jpg b/ppstructure/docs/table/paper-image.jpg similarity index 100% rename from doc/table/paper-image.jpg rename to ppstructure/docs/table/paper-image.jpg diff --git a/doc/table/pipeline.jpg b/ppstructure/docs/table/pipeline.jpg similarity index 100% rename from doc/table/pipeline.jpg rename to ppstructure/docs/table/pipeline.jpg diff --git a/doc/table/pipeline_en.jpg b/ppstructure/docs/table/pipeline_en.jpg similarity index 100% rename from doc/table/pipeline_en.jpg rename to ppstructure/docs/table/pipeline_en.jpg diff --git a/doc/table/ppstructure.GIF b/ppstructure/docs/table/ppstructure.GIF similarity index 100% rename from doc/table/ppstructure.GIF rename to ppstructure/docs/table/ppstructure.GIF diff --git a/doc/table/result_all.jpg b/ppstructure/docs/table/result_all.jpg similarity index 100% rename from doc/table/result_all.jpg rename to ppstructure/docs/table/result_all.jpg diff --git a/doc/table/result_text.jpg b/ppstructure/docs/table/result_text.jpg similarity index 100% rename from doc/table/result_text.jpg rename to ppstructure/docs/table/result_text.jpg diff --git a/doc/table/table.jpg b/ppstructure/docs/table/table.jpg similarity index 100% rename from doc/table/table.jpg rename to ppstructure/docs/table/table.jpg diff --git a/doc/table/tableocr_pipeline.jpg b/ppstructure/docs/table/tableocr_pipeline.jpg similarity index 100% rename from doc/table/tableocr_pipeline.jpg rename to ppstructure/docs/table/tableocr_pipeline.jpg diff --git a/doc/table/tableocr_pipeline_en.jpg b/ppstructure/docs/table/tableocr_pipeline_en.jpg similarity index 100% rename from doc/table/tableocr_pipeline_en.jpg rename to ppstructure/docs/table/tableocr_pipeline_en.jpg diff --git a/doc/vqa/input/zh_val_0.jpg b/ppstructure/docs/vqa/input/zh_val_0.jpg similarity index 100% rename from doc/vqa/input/zh_val_0.jpg rename to ppstructure/docs/vqa/input/zh_val_0.jpg diff --git a/doc/vqa/input/zh_val_21.jpg b/ppstructure/docs/vqa/input/zh_val_21.jpg similarity index 100% rename from doc/vqa/input/zh_val_21.jpg rename to ppstructure/docs/vqa/input/zh_val_21.jpg diff --git a/doc/vqa/input/zh_val_40.jpg b/ppstructure/docs/vqa/input/zh_val_40.jpg similarity index 100% rename from doc/vqa/input/zh_val_40.jpg rename to ppstructure/docs/vqa/input/zh_val_40.jpg diff --git a/doc/vqa/input/zh_val_42.jpg b/ppstructure/docs/vqa/input/zh_val_42.jpg similarity index 100% rename from doc/vqa/input/zh_val_42.jpg rename to ppstructure/docs/vqa/input/zh_val_42.jpg diff --git a/doc/vqa/result_re/zh_val_21_re.jpg b/ppstructure/docs/vqa/result_re/zh_val_21_re.jpg similarity index 100% rename from doc/vqa/result_re/zh_val_21_re.jpg rename to ppstructure/docs/vqa/result_re/zh_val_21_re.jpg diff --git a/doc/vqa/result_re/zh_val_40_re.jpg b/ppstructure/docs/vqa/result_re/zh_val_40_re.jpg similarity index 100% rename from doc/vqa/result_re/zh_val_40_re.jpg rename to ppstructure/docs/vqa/result_re/zh_val_40_re.jpg diff --git a/doc/vqa/result_ser/zh_val_0_ser.jpg b/ppstructure/docs/vqa/result_ser/zh_val_0_ser.jpg similarity index 100% rename from doc/vqa/result_ser/zh_val_0_ser.jpg rename to ppstructure/docs/vqa/result_ser/zh_val_0_ser.jpg diff --git a/doc/vqa/result_ser/zh_val_42_ser.jpg b/ppstructure/docs/vqa/result_ser/zh_val_42_ser.jpg similarity index 100% rename from doc/vqa/result_ser/zh_val_42_ser.jpg rename to ppstructure/docs/vqa/result_ser/zh_val_42_ser.jpg diff --git a/ppstructure/layout/README_ch.md b/ppstructure/layout/README_ch.md index 825ff62b116171fda277528017292434bd75b941..69419ad1eee3523d498b0d845a72133b619b3787 100644 --- a/ppstructure/layout/README_ch.md +++ b/ppstructure/layout/README_ch.md @@ -1,18 +1,21 @@ [English](README.md) | 简体中文 -- [版面分析使用说明](#版面分析使用说明) - - [1. 安装whl包](#1--安装whl包) - - [2. 使用](#2-使用) - - [3. 后处理](#3-后处理) - - [4. 指标](#4-指标) - - [5. 训练版面分析模型](#5-训练版面分析模型) # 版面分析使用说明 +- [1. 安装whl包](#1) +- [2. 使用](#2) +- [3. 后处理](#3) +- [4. 指标](#4) +- [5. 训练版面分析模型](#5) + + + ## 1. 安装whl包 ```bash pip install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl ``` + ## 2. 使用 使用layoutparser识别给定文档的布局: @@ -20,7 +23,7 @@ pip install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-a ```python import cv2 import layoutparser as lp -image = cv2.imread("doc/table/layout.jpg") +image = cv2.imread("ppstructure/docs/table/layout.jpg") image = image[..., ::-1] # 加载模型 @@ -40,7 +43,7 @@ show_img.show() 下图展示了结果,不同颜色的检测框表示不同的类别,并通过`show_element_type`在框的左上角显示具体类别:
- +
`PaddleDetectionLayoutModel`函数参数说明如下: @@ -68,6 +71,7 @@ show_img.show() * TableBank word和TableBank latex分别在word文档、latex文档数据集训练; * 下载的TableBank数据集里同时包含word和latex。 + ## 3. 后处理 版面分析检测包含多个类别,如果只想获取指定类别(如"Text"类别)的检测框、可以使用下述代码: @@ -106,9 +110,10 @@ show_img.show() 显示只有"Text"类别的结果:
- +
+ ## 4. 指标 | Dataset | mAP | CPU time cost | GPU time cost | @@ -122,6 +127,7 @@ show_img.show() ​ **GPU:** a single NVIDIA Tesla P40 + ## 5. 训练版面分析模型 上述模型基于[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection) 训练,如果您想训练自己的版面分析模型,请参考:[train_layoutparser_model](train_layoutparser_model_ch.md) diff --git a/ppstructure/table/README_ch.md b/ppstructure/table/README_ch.md index 39081995e6dd1e0a05fc88d067bab119ca7b6e39..2f3ed1cd763b5b040fb2704d0f1a84111910605a 100644 --- a/ppstructure/table/README_ch.md +++ b/ppstructure/table/README_ch.md @@ -1,14 +1,17 @@ -- [表格识别](#表格识别) - - [1. 表格识别 pipeline](#1-表格识别-pipeline) - - [2. 性能](#2-性能) - - [3. 使用](#3-使用) - - [3.1 快速开始](#31-快速开始) - - [3.2 训练](#32-训练) - - [3.3 评估](#33-评估) - - [3.4 预测](#34-预测) +[English](README.md) | 简体中文 # 表格识别 +- [1. 表格识别 pipeline](#1) +- [2. 性能](#2) +- [3. 使用](#3) + - [3.1 快速开始](#31) + - [3.2 训练](#32) + - [3.3 评估](#33) + - [3.4 预测](#34) + + + ## 1. 表格识别 pipeline 表格识别主要包含三个模型 @@ -18,7 +21,7 @@ 具体流程图如下 -![tableocr_pipeline](../../doc/table/tableocr_pipeline.jpg) +![tableocr_pipeline](../docs/table/tableocr_pipeline.jpg) 流程说明: @@ -28,7 +31,9 @@ 4. 单元格的识别结果和表格结构一起构造表格的html字符串。 + ## 2. 性能 + 我们在 PubTabNet[1] 评估数据集上对算法进行了评估,性能如下 @@ -37,8 +42,10 @@ | EDD[2] | 88.3 | | Ours | 93.32 | + ## 3. 使用 + ### 3.1 快速开始 ```python @@ -60,6 +67,7 @@ python3 table/predict_table.py --det_model_dir=inference/en_ppocr_mobile_v2.0_ta note: 上述模型是在 PubLayNet 数据集上训练的表格识别模型,仅支持英文扫描场景,如需识别其他场景需要自己训练模型后替换 `det_model_dir`,`rec_model_dir`,`table_model_dir`三个字段即可。 + ### 3.2 训练 在这一章节中,我们仅介绍表格结构模型的训练,[文字检测](../../doc/doc_ch/detection.md)和[文字识别](../../doc/doc_ch/recognition.md)的模型训练请参考对应的文档。 @@ -89,6 +97,7 @@ python3 tools/train.py -c configs/table/table_mv3.yml -o Global.checkpoints=./yo **注意**:`Global.checkpoints`的优先级高于`Global.pretrain_weights`的优先级,即同时指定两个参数时,优先加载`Global.checkpoints`指定的模型,如果`Global.checkpoints`指定的模型路径有误,会加载`Global.pretrain_weights`指定的模型。 + ### 3.3 评估 表格使用 [TEDS(Tree-Edit-Distance-based Similarity)](https://github.com/ibm-aur-nlp/PubTabNet/tree/master/src) 作为模型的评估指标。在进行模型评估之前,需要将pipeline中的三个模型分别导出为inference模型(我们已经提供好),还需要准备评估的gt, gt示例如下: @@ -113,6 +122,8 @@ python3 table/eval_table.py --det_model_dir=path/to/det_model_dir --rec_model_di ```bash teds: 93.32 ``` + + ### 3.4 预测 ```python @@ -120,6 +131,6 @@ cd PaddleOCR/ppstructure python3 table/predict_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 --rec_char_type=EN --det_limit_side_len=736 --det_limit_type=min --output ../output/table ``` -Reference +# Reference 1. https://github.com/ibm-aur-nlp/PubTabNet 2. https://arxiv.org/pdf/1911.10683 diff --git a/ppstructure/vqa/README.md b/ppstructure/vqa/README.md index f142778506ee53ee8955f078b0116f033522a4e6..636c8882d2a4cfb69412dfd5568e71bbfb699abb 100644 --- a/ppstructure/vqa/README.md +++ b/ppstructure/vqa/README.md @@ -1,26 +1,27 @@ -- [文档视觉问答(DOC-VQA)](#文档视觉问答doc-vqa) - - [1. 简介](#1-简介) - - [2. 性能](#2-性能) - - [3. 效果演示](#3-效果演示) - - [3.1 SER](#31-ser) - - [3.2 RE](#32-re) - - [4. 安装](#4-安装) - - [4.1 安装依赖](#41-安装依赖) - - [4.2 安装PaddleOCR(包含 PP-OCR 和 VQA)](#42-安装paddleocr包含-pp-ocr-和-vqa) - - [5. 使用](#5-使用) - - [5.1 数据和预训练模型准备](#51-数据和预训练模型准备) - - [5.2 SER](#52-ser) - - [5.3 RE](#53-re) - - [6. 参考链接](#6-参考链接) - - -# 文档视觉问答(DOC-VQA) +# 文档视觉问答(DocVQA) +- [1. 简介](#1) +- [2. 性能](#2) +- [3. 效果演示](#3) + - [3.1 SER](#31) + - [3.2 RE](#32) +- [4. 安装](#4) + - [4.1 安装依赖](#41) + - [4.2 安装PaddleOCR](#42) +- [5. 使用](#5) + - [5.1 数据和预训练模型准备](#51) + - [5.2 SER](#52) + - [5.3 RE](#53) +- [6. 参考链接](#6) + + + + ## 1. 简介 -VQA指视觉问答,主要针对图像内容进行提问和回答,DOC-VQA是VQA任务中的一种,DOC-VQA主要针对文本图像的文字内容提出问题。 +VQA指视觉问答,主要针对图像内容进行提问和回答,DocVQA是VQA任务中的一种,DocVQA主要针对文本图像的文字内容提出问题。 -PP-Structure 里的 DOC-VQA算法基于PaddleNLP自然语言处理算法库进行开发。 +PP-Structure 里的DocVQA算法基于PaddleNLP自然语言处理算法库进行开发。 主要特性如下: @@ -34,6 +35,7 @@ PP-Structure 里的 DOC-VQA算法基于PaddleNLP自然语言处理算法库进 本项目是 [LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding](https://arxiv.org/pdf/2104.08836.pdf) 在 Paddle 2.2上的开源实现, 包含了在 [XFUND数据集](https://github.com/doc-analysis/XFUND) 上的微调代码。 + ## 2. 性能 我们在 [XFUN](https://github.com/doc-analysis/XFUND) 的中文数据集上对算法进行了评估,性能如下 @@ -46,13 +48,15 @@ PP-Structure 里的 DOC-VQA算法基于PaddleNLP自然语言处理算法库进 | LayoutLMv2 | RE | 0.6777 | [链接](https://paddleocr.bj.bcebos.com/pplayout/re_LayoutLMv2_xfun_zh.tar) | | LayoutLM | SER | 0.7731 | [链接](https://paddleocr.bj.bcebos.com/pplayout/ser_LayoutLM_xfun_zh.tar) | + ## 3. 效果演示 **注意:** 测试图片来源于XFUN数据集。 + ### 3.1 SER -![](../../doc/vqa/result_ser/zh_val_0_ser.jpg) | ![](../../doc/vqa/result_ser/zh_val_42_ser.jpg) +![](../docs/vqa/result_ser/zh_val_0_ser.jpg) | ![](../docs/vqa/result_ser/zh_val_42_ser.jpg) ---|--- 图中不同颜色的框表示不同的类别,对于XFUN数据集,有`QUESTION`, `ANSWER`, `HEADER` 3种类别 @@ -63,16 +67,19 @@ PP-Structure 里的 DOC-VQA算法基于PaddleNLP自然语言处理算法库进 在OCR检测框的左上方也标出了对应的类别和OCR识别结果。 + ### 3.2 RE -![](../../doc/vqa/result_re/zh_val_21_re.jpg) | ![](../../doc/vqa/result_re/zh_val_40_re.jpg) +![](../docs/vqa/result_re/zh_val_21_re.jpg) | ![](../docs/vqa/result_re/zh_val_40_re.jpg) ---|--- 图中红色框表示问题,蓝色框表示答案,问题和答案之间使用绿色线连接。在OCR检测框的左上方也标出了对应的类别和OCR识别结果。 + ## 4. 安装 + ### 4.1 安装依赖 - **(1) 安装PaddlePaddle** @@ -89,7 +96,8 @@ python3 -m pip install "paddlepaddle>=2.2" -i https://mirror.baidu.com/pypi/simp ``` 更多需求,请参照[安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。 -### 4.2 安装PaddleOCR(包含 PP-OCR 和 VQA) + +### 4.2 安装PaddleOCR - **(1)pip快速安装PaddleOCR whl包(仅预测)** @@ -114,8 +122,10 @@ git clone https://gitee.com/paddlepaddle/PaddleOCR python3 -m pip install -r ppstructure/vqa/requirements.txt ``` + ## 5. 使用 + ### 5.1 数据和预训练模型准备 如果希望直接体验预测过程,可以下载我们提供的预训练模型,跳过训练过程,直接预测即可。 @@ -139,6 +149,7 @@ wget https://paddleocr.bj.bcebos.com/dataset/XFUND.tar python3 ppstructure/vqa/helper/trans_xfun_data.py --ori_gt_path=path/to/json_path --output_path=path/to/save_path ``` + ### 5.2 SER 启动训练之前,需要修改下面的四个字段 @@ -192,6 +203,7 @@ export CUDA_VISIBLE_DEVICES=0 python3 helper/eval_with_label_end2end.py --gt_json_path XFUND/zh_val/xfun_normalize_val.json --pred_json_path output_res/infer_results.txt ``` + ### 5.3 RE * 启动训练 @@ -237,6 +249,7 @@ python3 tools/infer_vqa_token_ser_re.py -c configs/vqa/re/layoutxlm.yml -o Archi 最终会在`config.Global.save_res_path`字段所配置的目录下保存预测结果可视化图像以及预测结果文本文件,预测结果文本文件名为`infer_results.txt`。 + ## 6. 参考链接 - LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding, https://arxiv.org/pdf/2104.08836.pdf