Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
0260530
initial commit
1649759610 May 18, 2022
5f66ab1
modify _calc_img_embeddings to support running without img embedding.
1649759610 May 18, 2022
73acf83
remove commented code
1649759610 May 18, 2022
6b457e8
delete README
1649759610 May 18, 2022
1ab0a3f
refine readme.md
1649759610 May 18, 2022
3a5f203
change question
1649759610 May 18, 2022
c54dc88
modify layoutxlm to support traing without image embedding
1649759610 May 18, 2022
84a215d
modify _calc_img_embeddings in layoutxlm to support training without …
1649759610 May 18, 2022
6e8582b
modify _calc_img_embeddings in layoutxlm to support training without …
1649759610 May 18, 2022
fd0e0ea
Merge branch 'develop' into develop
yingyibiao May 18, 2022
3255d51
refine .gitignore
1649759610 May 18, 2022
b3144e3
refine Rerank with pre-commit
1649759610 May 18, 2022
d3c3a09
refine Extraction with pre-commit
1649759610 May 18, 2022
fde5156
refine code and readme details
1649759610 May 18, 2022
a812206
Merge branch 'PaddlePaddle:develop' into develop
1649759610 May 18, 2022
93af9e0
Merge branch 'develop' of github.com:1649759610/PaddleNLP into develop
1649759610 May 18, 2022
a497049
refine coding
1649759610 May 18, 2022
53cfcf8
refine code style about imports
1649759610 May 18, 2022
812a508
refine README
1649759610 May 18, 2022
18abfa8
set CUDA_VISIBLE_DEVICES 0
1649759610 May 18, 2022
fe63856
refine code style
1649759610 May 18, 2022
ff9d6ee
refine readme
1649759610 May 18, 2022
7218e61
refine readme
1649759610 May 18, 2022
8b28fc2
delete ocr parsing file
1649759610 May 18, 2022
fb26c50
Merge branch 'develop' into develop
May 18, 2022
37d1456
refine readme
1649759610 May 18, 2022
d5f2451
Merge branch 'develop' of github.com:1649759610/PaddleNLP into develop
1649759610 May 18, 2022
8c39aa9
refine readme
1649759610 May 23, 2022
ee0b712
refine Readme
1649759610 May 23, 2022
2f7262a
Merge branch 'PaddlePaddle-develop' into develop
1649759610 May 23, 2022
7e088d0
refine README.md
1649759610 May 23, 2022
eedb2d4
refine readme
1649759610 May 25, 2022
706566d
refine readme
1649759610 May 25, 2022
3e2c425
refnie readme
1649759610 May 25, 2022
8331820
Merge branch 'PaddlePaddle-develop' into develop
1649759610 May 25, 2022
d8f3aaa
refine readme
1649759610 May 25, 2022
fcaa27e
optimize ocr and mrc module
1649759610 May 31, 2022
e8c08d3
Merge branch 'PaddlePaddle:develop' into develop
1649759610 May 31, 2022
312bcb0
Merge branch 'develop' of github.com:1649759610/PaddleNLP into develop
1649759610 May 31, 2022
f0f1edb
refine code style
1649759610 May 31, 2022
a3bb28f
Merge branch 'PaddlePaddle:develop' into develop
1649759610 May 31, 2022
4c6b248
set params with argparse
1649759610 May 31, 2022
f6d85fc
rename max_seq_length to max_seq_len
1649759610 May 31, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refine readme
  • Loading branch information
1649759610 committed May 23, 2022
commit 8c39aa9376a96247c2a24d07deac11a693a0258f
50 changes: 32 additions & 18 deletions applications/doc_vqa/README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
# 文档视觉问答 (Document Visual Question Answering)
# 汽车说明书跨模态智能问答

## 1. 项目说明

**文档视觉问答**是在问答领域的一项新的探索,其要求文档智能模型在文档中抽取能够回答文档相关问题的答案,需要模型在抽取和理解文档中文本信息的同时,还能充分利用文档的布局、字体、颜色等视觉信息,这比单一模态的信息抽取任务更具挑战性。
**跨模态文档问答** 是跨模态的文档抽取任务,要求文档智能模型在文档中抽取能够回答文档相关问题的答案,需要模型在抽取和理解文档中文本信息的同时,还能充分利用文档的布局、字体、颜色等视觉信息,这比单一模态的信息抽取任务更具挑战性。

本项目将针对**汽车说明书**实现视觉问答,即在用户提供汽车说明书后,针对用户提出的一些相关问题,从汽车说明书中寻找答案并进行回答
这种基于跨模态文档阅读理解技术的智能问答能力,可以深度解析非结构化文档中排版复杂的图文/图表内容,直接定位问题答案

#### 场景痛点
- 构建问题库方面:需投入大量人力整理常见问题库;固定的问题库难以覆盖灵活多变的提问;
- 售后客服方面: 需要配置大量客服人员;客服专业知识培训周期长;
- 用户方面: 没有耐心查阅说明书;打客服电话需要等待;
本项目将基于跨模态文档问答技术实现**汽车说明书问答系统**,该系统能够对用户提出的问题,自动从汽车说明书中寻找答案并进行回答。

通过视觉文档问答能力,能够及时解答日常用车问题,亦赋能售后客服人员。
如图1所示, 用户提出问题:"如何更换前风窗玻璃的刮水片",跨模态文档问答引擎将从库中寻找相关的文档,然后通过跨模态阅读理解模型抽取出相应的答案,并进行了高亮展示。

<center><img width="883" alt="image" src="https://user-images.githubusercontent.com/35913314/169781111-0734729d-3c7b-400d-8e92-e56548bb7dc5.png"></center>
<center>图1 文档视觉问答示例</center>

通过使用汽车说明书问答系统,能够极大地解决传统汽车售后的压力:
- 用户:用户没有耐心查阅说明书,打客服电话需要等待
- 售后客服:需要配置大量客服人员,且客服专业知识培训周期长
- 构建问题库:需要投入大量人力整理常见问题库,并且固定的问题库难以覆盖灵活多变的提问

对于用户来说,汽车说明书问答系统能够支持通过车机助手/APP/小程序为用户提供即问即答的的功能。对于常见问题,用户不再需要查阅说明书,也无需打客服电话,从而缓解了人工客服的压力。

对于客服来讲,汽车说明书问答系统帮助客服人员快速定位答案,高效查阅文档,提高客服的专业水平,同时也能够缩短客服的培训周期。


## 2. 安装说明
Expand All @@ -27,20 +36,22 @@

## 3. 整体流程

简而言之,汽车说明书问答系统针对用户提出的汽车使用相关问题,智能化地在汽车说明书中找出对应答案,并返回给用户。总体来看,汽车说明书问答包括如下 3 个模块:
汽车说明书问答系统针对用户提出的汽车使用相关问题,智能化地在汽车说明书中找出对应答案,并返回给用户。本项目提供的汽车说明书问答系统的使用流程如图2所示。本项目提供的汽车说明书问答系统主要包括 3 个模块:文档解析模块、排序模块和跨模态阅读理解模块。

- **OCR模块**
本项目提供了包含10张图片的汽车说明书,为方便后续处理,首先需要通过 PaddleOCR 对汽车说明书进行识别,记录汽车说明书上的文字和文字布局信息, 以方便后续使用计算机视觉和自然语言处理方面的技术进行问答任务。
在使用汽车说明书问答模型回答问题之前,需要先使用PaddleOCR对离线提供的汽车说明书文档进解析,并将解析结果保存下来,以备后续排序模块使用。

- **排序模块**
对于用户提出的问题,如果从所有的汽车说明书图片中去寻找答案会比较耗时且耗费资源。因此这里使用了一个排序模块,该模块将根据用户提出的问题对汽车说明书的不同图片进行打分排序,这样便可以获取和问题最相关的图片,并使用跨模态阅读理解模块在该问题上进行抽取答案。
对于用户提问的问题,首先会被传入排序模块,排序模块会针对该问题对解析的文档进行排序打分,其结果将会被传入跨模态阅读理解模块。阅读理解模块将从分数最高的说明书文档中,抽取用户问题的答案,并返回给用户。

- **跨模态阅读理解模块**
获取排序模块输出的结果中评分最高的图片,然后将会使用 LayoutXLM 模型从该图片中去抽取用户提问的答案。在获取答案后,将会对答案在该图片中进行高亮显示并返回用户。
<center><img width="864" alt="image" src="https://user-images.githubusercontent.com/35913314/169781673-0695b4e3-5da8-4c4e-97ac-a4c8c8d3e8f7.png"></center>

下面将具体介绍各个模块的训练和测试功能。
<center>图2 文档视觉问答示例</center>

## 4. OCR模块
下面将具体介绍各个模块的功能。


## 4. 文档解析模块

本项目提供了包含10张图片的汽车说明书,为方便后续处理,首先需要通过 PaddleOCR 对汽车说明书进行识别,记录汽车说明书上的文字和文字布局信息, 以方便后续使用计算机视觉和自然语言处理方面的技术进行问答任务。

本项目提供的汽车说明书图片可点击[这里](https://paddlenlp.bj.bcebos.com/images/applications/automobile.tar.gz)进行下载,下载后解压放至 `./OCR_process/demo_pics` 目录下,然后通过如下命令,使用 PaddleOCR 进行图片文档解析。

Expand All @@ -53,6 +64,7 @@ cd ..
解析后的结果存放至 `./OCR_process/demo_ocr_res.json` 中。

## 5. 排序模块
对于用户提出的问题,如果从所有的汽车说明书图片中去寻找答案会比较耗时且耗费资源。因此这里使用了一个排序模块,该模块将根据用户提出的问题对汽车说明书的不同图片进行打分排序,这样便可以获取和问题最相关的图片,并使用跨模态阅读理解模块在该问题上进行抽取答案。

本项目提供了140条汽车说明书相关的训练样本,用于排序模型的训练, 同时也提供了一个预先训练好的基线模型 base_model。 本模块可以使用 base_model 在汽车说明书训练样本上进一步微调。

Expand Down Expand Up @@ -81,6 +93,7 @@ cd ..


## 6. 跨模态阅读理解模块
本项目首先获取排序模块输出的结果中评分最高的图片,然后将会使用跨模态的语言模型 LayoutXLM 从该图片中去抽取用户提问的答案。在获取答案后,将会对答案在该图片中进行高亮显示并返回用户。

本项目提供了28条汽车说明书相关的训练样本,用于跨模态阅读理解模型的训练, 同时也提供了一个预先训练好的基线模型 base_model。 本模块可以使用 base_model 在汽车说明书训练样本上进一步微调,增强模型对汽车说明书领域的理解。

Expand Down Expand Up @@ -118,6 +131,7 @@ bash run_test.sh 后备箱怎么开
**备注**:在运行命令前,请确保已使用第4节介绍的命令对原始汽车说明书图片完成了文档解析。


下图展示了用户提问的三个问题:"后备箱怎么开","钥匙怎么充电" 和 "NFC解锁注意事项", 可以看到,本项目的汽车说明书问答系统能够精准地找到答案并进行高亮显示。
图3展示了用户提问的三个问题:"后备箱怎么开","钥匙怎么充电" 和 "NFC解锁注意事项", 可以看到,本项目的汽车说明书问答系统能够精准地找到答案并进行高亮显示。

<center><img src="https://user-images.githubusercontent.com/35913314/169012902-1a42bd14-976f-4da8-b5b5-d8e7352b68df.png"/></center>
<center>图3 文档视觉问答示例</center>