Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wangsen
paddle_dbnet
Commits
aa59fca5
Commit
aa59fca5
authored
Apr 28, 2022
by
Leif
Browse files
Merge remote-tracking branch 'origin/dygraph' into dygraph
parents
12d15752
f01f24c7
Changes
208
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
782 additions
and
301 deletions
+782
-301
doc/doc_ch/algorithm_e2e_pgnet.md
doc/doc_ch/algorithm_e2e_pgnet.md
+1
-1
doc/doc_ch/algorithm_inference.md
doc/doc_ch/algorithm_inference.md
+6
-0
doc/doc_ch/algorithm_overview.md
doc/doc_ch/algorithm_overview.md
+28
-28
doc/doc_ch/algorithm_rec_sar.md
doc/doc_ch/algorithm_rec_sar.md
+114
-0
doc/doc_ch/algorithm_rec_srn.md
doc/doc_ch/algorithm_rec_srn.md
+113
-0
doc/doc_ch/android_demo.md
doc/doc_ch/android_demo.md
+0
-57
doc/doc_ch/application.md
doc/doc_ch/application.md
+1
-0
doc/doc_ch/clone.md
doc/doc_ch/clone.md
+23
-0
doc/doc_ch/config.md
doc/doc_ch/config.md
+12
-12
doc/doc_ch/dataset/datasets.md
doc/doc_ch/dataset/datasets.md
+11
-11
doc/doc_ch/dataset/docvqa_datasets.md
doc/doc_ch/dataset/docvqa_datasets.md
+0
-0
doc/doc_ch/dataset/handwritten_datasets.md
doc/doc_ch/dataset/handwritten_datasets.md
+2
-2
doc/doc_ch/dataset/layout_datasets.md
doc/doc_ch/dataset/layout_datasets.md
+53
-0
doc/doc_ch/dataset/ocr_datasets.md
doc/doc_ch/dataset/ocr_datasets.md
+164
-0
doc/doc_ch/dataset/table_datasets.md
doc/doc_ch/dataset/table_datasets.md
+33
-0
doc/doc_ch/dataset/vertical_and_multilingual_datasets.md
doc/doc_ch/dataset/vertical_and_multilingual_datasets.md
+3
-3
doc/doc_ch/detection.md
doc/doc_ch/detection.md
+61
-76
doc/doc_ch/ocr_book.md
doc/doc_ch/ocr_book.md
+16
-0
doc/doc_ch/ppocr_introduction.md
doc/doc_ch/ppocr_introduction.md
+122
-0
doc/doc_ch/quickstart.md
doc/doc_ch/quickstart.md
+19
-111
No files found.
doc/doc_ch/pgnet.md
→
doc/doc_ch/
algorithm_e2e_
pgnet.md
View file @
aa59fca5
...
...
@@ -43,7 +43,7 @@ PGNet算法细节详见[论文](https://www.aaai.org/AAAI21Papers/AAAI-2885.Wang
<a
name=
"环境配置"
></a>
## 二、环境配置
请先参考
[
《运行环境准备》
](
./environment.md
)
配置PaddleOCR运行环境,参考
[
《
PaddleOCR全景图与项目克隆》
](
./paddleOCR_overview
.md
)
克隆项目
请先参考
[
《运行环境准备》
](
./environment.md
)
配置PaddleOCR运行环境,参考
[
《
项目克隆》
](
./clone
.md
)
克隆项目
<a
name=
"快速使用"
></a>
## 三、快速使用
...
...
doc/doc_ch/inference.md
→
doc/doc_ch/
algorithm_
inference.md
View file @
aa59fca5
...
...
@@ -14,12 +14,14 @@ inference 模型(`paddle.jit.save`保存的模型)
-
[
识别模型转inference模型
](
#识别模型转inference模型
)
-
[
方向分类模型转inference模型
](
#方向分类模型转inference模型
)
-
[
二、文本检测模型推理
](
#文本检测模型推理
)
-
[
1. 超轻量中文检测模型推理
](
#超轻量中文检测模型推理
)
-
[
2. DB文本检测模型推理
](
#DB文本检测模型推理
)
-
[
3. EAST文本检测模型推理
](
#EAST文本检测模型推理
)
-
[
4. SAST文本检测模型推理
](
#SAST文本检测模型推理
)
-
[
三、文本识别模型推理
](
#文本识别模型推理
)
-
[
1. 超轻量中文识别模型推理
](
#超轻量中文识别模型推理
)
-
[
2. 基于CTC损失的识别模型推理
](
#基于CTC损失的识别模型推理
)
...
...
@@ -27,15 +29,19 @@ inference 模型(`paddle.jit.save`保存的模型)
-
[
4. 自定义文本识别字典的推理
](
#自定义文本识别字典的推理
)
-
[
5. 多语言模型的推理
](
#多语言模型的推理
)
-
[
四、方向分类模型推理
](
#方向识别模型推理
)
-
[
1. 方向分类模型推理
](
#方向分类模型推理
)
-
[
五、文本检测、方向分类和文字识别串联推理
](
#文本检测、方向分类和文字识别串联推理
)
-
[
1. 超轻量中文OCR模型推理
](
#超轻量中文OCR模型推理
)
-
[
2. 其他模型推理
](
#其他模型推理
)
-
[
六、参数解释
](
#参数解释
)
-
[
七、FAQ
](
#FAQ
)
...
...
doc/doc_ch/algorithm_overview.md
View file @
aa59fca5
#
两阶段
算法
#
OCR
算法
-
[
两阶段算法
](
#两阶段算法
)
-
[
1. 算法介绍
](
#1-算法介绍
)
-
[
1. 两阶段算法
](
#1-两阶段算法
)
-
[
1.1 文本检测算法
](
#11-文本检测算法
)
-
[
1.2 文本识别算法
](
#12-文本识别算法
)
-
[
2. 模型训练
](
#2-模型训练
)
-
[
3. 模型推理
](
#3-模型推理
)
-
[
2. 端到端算法
](
#2-端到端算法
)
本文给出了PaddleOCR已支持的OCR算法列表,以及每个算法在
**英文公开数据集**
上的模型和指标,主要用于算法简介和算法性能对比,更多包括中文在内的其他数据集上的模型请参考
[
PP-OCR v2.0 系列模型下载
](
./models_list.md
)
。
<a
name=
"1"
></a>
## 1. 算法介绍
本文给出了PaddleOCR已支持的文本检测算法和文本识别算法列表,以及每个算法在
**英文公开数据集**
上的模型和指标,主要用于算法简介和算法性能对比,更多包括中文在内的其他数据集上的模型请参考
[
PP-OCR v2.0 系列模型下载
](
./models_list.md
)
。
## 1. 两阶段算法
<a
name=
"11"
></a>
### 1.1 文本检测算法
PaddleOCR开源的文本检测算法列表
:
-
[
x] DB
([paper
](
https://arxiv.org/abs/1911.08947
)
) [2](ppocr推荐)
-
[
x] EAST
([paper
](
https://arxiv.org/abs/1704.03155
)
)[1]
-
[
x] SAST
([paper
](
https://arxiv.org/abs/1908.05498
)
)[4]
-
[
x] PSENet
([paper
](
https://arxiv.org/abs/1903.12473v2
)
)
-
[
x] FCENet
([paper
](
https://arxiv.org/abs/2104.10442
)
)
已支持的文本检测算法列表(戳链接获取使用教程)
:
-
[
x]
[
DB
](
./algorithm_det_db.md
)
-
[
x]
[
EAST
](
./algorithm_det_east.md
)
-
[
x]
[
SAST
](
./algorithm_det_sast.md
)
-
[
x]
[
PSENet
](
./algorithm_det_psenet.md
)
-
[
x]
[
FCENet
](
./algorithm_det_fcenet.md
)
在ICDAR2015文本检测公开数据集上,算法效果如下:
|模型|骨干网络|precision|recall|Hmean|下载链接|
| --- | --- | --- | --- | --- | --- |
|EAST|ResNet50_vd|88.71%|81.36%|84.88%|
[
训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_east_v2.0_train.tar
)
|
...
...
@@ -50,19 +51,20 @@ PaddleOCR开源的文本检测算法列表:
*
[
百度云地址
](
https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw
)
(
提取码:
2bpi)
*
[
Google Drive下载地址
](
https://drive.google.com/drive/folders/1ll2-XEVyCQLpJjawLDiRlvo_i4BqHCJe?usp=sharing
)
<a
name=
"12"
></a>
### 1.2 文本识别算法
PaddleOCR基于动态图开源的文本识别算法列表
:
-
[
x] CRNN
([paper
](
https://arxiv.org/abs/1507.05717
)
)[7](ppocr推荐)
-
[
x] Rosetta
([paper
](
https://arxiv.org/abs/1910.05085
)
)[10]
-
[
x] STAR-Net
([paper
](
http://www.bmva.org/bmvc/2016/papers/paper043/index.html
)
)[11]
-
[
x] RARE
([paper
](
https://arxiv.org/abs/1603.03915v1
)
)[12]
-
[
x] SRN
([paper
](
https://arxiv.org/abs/2003.12294
)
)[5]
-
[
x] NRTR
([paper
](
https://arxiv.org/abs/1806.00926v2
)
)[13]
-
[
x] SAR
([paper
](
https://arxiv.org/abs/1811.00751v2
)
)
-
[
x] SEED
([paper
](
https://arxiv.org/pdf/2005.10977.pdf
)
)
已支持的文本识别算法列表(戳链接获取使用教程)
:
-
[
x]
[
CRNN
](
./algorithm_rec_crnn.md
)
-
[
x]
[
Rosetta
](
./algorithm_rec_rosetta.md
)
-
[
x]
[
STAR-Net
](
./algorithm_rec_starnet.md
)
-
[
x]
[
RARE
](
./algorithm_rec_rare.md
)
-
[
x]
[
SRN
](
./algorithm_rec_srn.md
)
-
[
x]
[
NRTR
](
./algorithm_rec_nrtr.md
)
-
[
x]
[
SAR
](
./algorithm_rec_sar.md
)
-
[
x]
[
SEED
](
./algorithm_rec_seed.md
)
参考
[
DTRB
](
https://arxiv.org/abs/1904.01906
)[
3
]
文字识别训练和评估流程,使用MJSynth和SynthText两个文字识别数据集训练,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE数据集上进行评估,算法效果如下:
...
...
@@ -81,14 +83,12 @@ PaddleOCR基于动态图开源的文本识别算法列表:
|SAR|Resnet31| 87.20% | rec_r31_sar |
[
训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.1/rec/rec_r31_sar_train.tar
)
|
|SEED|Aster_Resnet| 85.35% | rec_resnet_stn_bilstm_att |
[
训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.1/rec/rec_resnet_stn_bilstm_att.tar
)
|
<a
name=
"2"
></a>
## 2. 模型训练
<a
name=
"2"
></a>
PaddleOCR文本检测算法的训练和使用请参考文档教程中
[
模型训练/评估中的文本检测部分
](
./detection.md
)
。文本识别算法的训练和使用请参考文档教程中
[
模型训练/评估中的文本识别部分
](
./recognition.md
)
。
## 2. 端到端算法
<a
name=
"3"
></a>
已支持的端到端OCR算法列表(戳链接获取使用教程):
-
[
x] [PGNet
](
./algorithm_e2e_pgnet.md
)
## 3. 模型推理
上述模型中除PP-OCR系列模型以外,其余模型仅支持基于Python引擎的推理,具体内容可参考
[
基于Python预测引擎推理
](
./inference.md
)
doc/doc_ch/algorithm_rec_sar.md
0 → 100644
View file @
aa59fca5
# SAR
-
[
1. 算法简介
](
#1
)
-
[
2. 环境配置
](
#2
)
-
[
3. 模型训练、评估、预测
](
#3
)
-
[
3.1 训练
](
#3-1
)
-
[
3.2 评估
](
#3-2
)
-
[
3.3 预测
](
#3-3
)
-
[
4. 推理部署
](
#4
)
-
[
4.1 Python推理
](
#4-1
)
-
[
4.2 C++推理
](
#4-2
)
-
[
4.3 Serving服务化部署
](
#4-3
)
-
[
4.4 更多推理部署
](
#4-4
)
-
[
5. FAQ
](
#5
)
<a
name=
"1"
></a>
## 1. 算法简介
论文信息:
> [Show, Attend and Read: A Simple and Strong Baseline for Irregular Text Recognition](https://arxiv.org/abs/1811.00751)
> Hui Li, Peng Wang, Chunhua Shen, Guyu Zhang
> AAAI, 2019
使用MJSynth和SynthText两个文字识别数据集训练,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE数据集上进行评估,算法复现效果如下:
|模型|骨干网络|配置文件|Acc|下载链接|
| --- | --- | --- | --- | --- | --- | --- |
|SAR|ResNet31|
[
rec_r31_sar.yml
](
../../configs/rec/rec_r31_sar.yml
)
|87.20%|
[
训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.1/rec/rec_r31_sar_train.tar
)
|
注:除了使用MJSynth和SynthText两个文字识别数据集外,还加入了
[
SynthAdd
](
https://pan.baidu.com/share/init?surl=uV0LtoNmcxbO-0YA7Ch4dg
)
数据(提取码:627x),和部分真实数据,具体数据细节可以参考论文。
<a
name=
"2"
></a>
## 2. 环境配置
请先参考
[
《运行环境准备》
](
./environment.md
)
配置PaddleOCR运行环境,参考
[
《项目克隆》
](
./clone.md
)
克隆项目代码。
<a
name=
"3"
></a>
## 3. 模型训练、评估、预测
请参考
[
文本识别教程
](
./recognition.md
)
。PaddleOCR对代码进行了模块化,训练不同的识别模型只需要
**更换配置文件**
即可。
训练
具体地,在完成数据准备后,便可以启动训练,训练命令如下:
```
#单卡训练(训练周期长,不建议)
python3 tools/train.py -c configs/rec/rec_r31_sar.yml
#多卡训练,通过--gpus参数指定卡号
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/rec_r31_sar.yml
```
评估
```
# GPU 评估, Global.pretrained_model 为待测权重
python3 -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec_r31_sar.yml -o Global.pretrained_model={path/to/weights}/best_accuracy
```
预测:
```
# 预测使用的配置文件必须与训练一致
python3 tools/infer_rec.py -c configs/rec/rec_r31_sar.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.infer_img=doc/imgs_words/en/word_1.png
```
<a
name=
"4"
></a>
## 4. 推理部署
<a
name=
"4-1"
></a>
### 4.1 Python推理
首先将SAR文本识别训练过程中保存的模型,转换成inference model。(
[
模型下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.1/rec/rec_r31_sar_train.tar
)
),可以使用如下命令进行转换:
```
python3 tools/export_model.py -c configs/rec/rec_r31_sar.yml -o Global.pretrained_model=./rec_r31_sar_train/best_accuracy Global.save_inference_dir=./inference/rec_sar
```
SAR文本识别模型推理,可以执行如下命令:
```
python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/en/word_1.png" --rec_model_dir="./inference/rec_sar/" --rec_image_shape="3, 48, 48, 160" --rec_char_type="ch" --rec_algorithm="SAR" --rec_char_dict_path="ppocr/utils/dict90.txt" --max_text_length=30 --use_space_char=False
```
<a
name=
"4-2"
></a>
### 4.2 C++推理
由于C++预处理后处理还未支持SAR,所以暂未支持
<a
name=
"4-3"
></a>
### 4.3 Serving服务化部署
暂不支持
<a
name=
"4-4"
></a>
### 4.4 更多推理部署
暂不支持
<a
name=
"5"
></a>
## 5. FAQ
## 引用
```
bibtex
@article
{
Li2019ShowAA
,
title
=
{Show, Attend and Read: A Simple and Strong Baseline for Irregular Text Recognition}
,
author
=
{Hui Li and Peng Wang and Chunhua Shen and Guyu Zhang}
,
journal
=
{ArXiv}
,
year
=
{2019}
,
volume
=
{abs/1811.00751}
}
```
doc/doc_ch/algorithm_rec_srn.md
0 → 100644
View file @
aa59fca5
# SRN
-
[
1. 算法简介
](
#1
)
-
[
2. 环境配置
](
#2
)
-
[
3. 模型训练、评估、预测
](
#3
)
-
[
3.1 训练
](
#3-1
)
-
[
3.2 评估
](
#3-2
)
-
[
3.3 预测
](
#3-3
)
-
[
4. 推理部署
](
#4
)
-
[
4.1 Python推理
](
#4-1
)
-
[
4.2 C++推理
](
#4-2
)
-
[
4.3 Serving服务化部署
](
#4-3
)
-
[
4.4 更多推理部署
](
#4-4
)
-
[
5. FAQ
](
#5
)
<a
name=
"1"
></a>
## 1. 算法简介
论文信息:
> [Towards Accurate Scene Text Recognition with Semantic Reasoning Networks](https://arxiv.org/abs/2003.12294#)
> Deli Yu, Xuan Li, Chengquan Zhang, Junyu Han, Jingtuo Liu, Errui Ding
> CVPR,2020
使用MJSynth和SynthText两个文字识别数据集训练,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE数据集上进行评估,算法复现效果如下:
|模型|骨干网络|配置文件|Acc|下载链接|
| --- | --- | --- | --- | --- | --- | --- |
|SRN|Resnet50_vd_fpn|
[
rec_r50_fpn_srn.yml
](
../../configs/rec/rec_r50_fpn_srn.yml
)
|86.31%|
[
训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/rec_r50_vd_srn_train.tar
)
|
<a
name=
"2"
></a>
## 2. 环境配置
请先参考
[
《运行环境准备》
](
./environment.md
)
配置PaddleOCR运行环境,参考
[
《项目克隆》
](
./clone.md
)
克隆项目代码。
<a
name=
"3"
></a>
## 3. 模型训练、评估、预测
请参考
[
文本识别教程
](
./recognition.md
)
。PaddleOCR对代码进行了模块化,训练不同的识别模型只需要
**更换配置文件**
即可。
训练
具体地,在完成数据准备后,便可以启动训练,训练命令如下:
```
#单卡训练(训练周期长,不建议)
python3 tools/train.py -c configs/rec/rec_r50_fpn_srn.yml
#多卡训练,通过--gpus参数指定卡号
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/rec_r50_fpn_srn.yml
```
评估
```
# GPU 评估, Global.pretrained_model 为待测权重
python3 -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec_r50_fpn_srn.yml -o Global.pretrained_model={path/to/weights}/best_accuracy
```
预测:
```
# 预测使用的配置文件必须与训练一致
python3 tools/infer_rec.py -c configs/rec/rec_r50_fpn_srn.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.infer_img=doc/imgs_words/en/word_1.png
```
<a
name=
"4"
></a>
## 4. 推理部署
<a
name=
"4-1"
></a>
### 4.1 Python推理
首先将SRN文本识别训练过程中保存的模型,转换成inference model。(
[
模型下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/rec_r50_vd_srn_train.tar
)
),可以使用如下命令进行转换:
```
python3 tools/export_model.py -c configs/rec/rec_r50_fpn_srn.yml -o Global.pretrained_model=./rec_r50_vd_srn_train/best_accuracy Global.save_inference_dir=./inference/rec_srn
```
SRN文本识别模型推理,可以执行如下命令:
```
python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/en/word_1.png" --rec_model_dir="./inference/rec_srn/" --rec_image_shape="1,64,256" --rec_char_type="ch" --rec_algorithm="SRN" --rec_char_dict_path=./ppocr/utils/ic15_dict.txt --use_space_char=False
```
<a
name=
"4-2"
></a>
### 4.2 C++推理
由于C++预处理后处理还未支持SRN,所以暂未支持
<a
name=
"4-3"
></a>
### 4.3 Serving服务化部署
暂不支持
<a
name=
"4-4"
></a>
### 4.4 更多推理部署
暂不支持
<a
name=
"5"
></a>
## 5. FAQ
## 引用
```
bibtex
@article
{
Yu2020TowardsAS
,
title
=
{Towards Accurate Scene Text Recognition With Semantic Reasoning Networks}
,
author
=
{Deli Yu and Xuan Li and Chengquan Zhang and Junyu Han and Jingtuo Liu and Errui Ding}
,
journal
=
{2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)}
,
year
=
{2020}
,
pages
=
{12110-12119}
}
```
doc/doc_ch/android_demo.md
deleted
100644 → 0
View file @
12d15752
# Android Demo 快速测试
### 1. 安装最新版本的Android Studio
可以从 https://developer.android.com/studio 下载。本Demo使用是4.0版本Android Studio编写。
### 2. 创建新项目
Demo测试的时候使用的是NDK 20b版本,20版本以上均可以支持编译成功。
如果您是初学者,可以用以下方式安装和测试NDK编译环境。
点击 File -> New ->New Project, 新建 "Native C++" project
1.
Start a new Android Studio project
在项目模版中选择 Native C++ 选择PaddleOCR/deploy/android_demo 路径
进入项目后会自动编译,第一次编译会花费较长的时间,建议添加代理加速下载。
**代理添加:**
选择 Android Studio -> Preferences -> Appearance & Behavior -> System Settings -> HTTP Proxy -> Manual proxy configuration

2.
开始编译
点击编译按钮,连接手机,跟着Android Studio的引导完成操作。
在 Android Studio 里看到下图,表示编译完成:

**提示:**
此时如果出现下列找不到OpenCV的报错信息,请重新点击编译,编译完成后退出项目,再次进入。

### 3. 发送到手机端
完成编译,点击运行,在手机端查看效果。
### 4. 如何自定义demo图片
1.
图片存放路径:android_demo/app/src/main/assets/images
将自定义图片放置在该路径下
2.
配置文件: android_demo/app/src/main/res/values/strings.xml
修改 IMAGE_PATH_DEFAULT 为自定义图片名即可
# 获得更多支持
前往
[
端计算模型生成平台EasyEdge
](
https://ai.baidu.com/easyedge/app/open_source_demo?referrerUrl=paddlelite
)
,获得更多开发支持:
-
Demo APP:可使用手机扫码安装,方便手机端快速体验文字识别
-
SDK:模型被封装为适配不同芯片硬件和操作系统SDK,包括完善的接口,方便进行二次开发
doc/doc_ch/application.md
0 → 100644
View file @
aa59fca5
# 场景应用
\ No newline at end of file
doc/doc_ch/
paddleOCR_overview
.md
→
doc/doc_ch/
clone
.md
View file @
aa59fca5
#
PaddleOCR全景图与
项目克隆
# 项目克隆
## 1. PaddleOCR全景图
PaddleOCR包含丰富的文本检测、文本识别以及端到端算法。结合实际测试与产业经验,PaddleOCR选择DB和CRNN作为基础的检测和识别模型,经过一系列优化策略提出面向产业应用的PP-OCR模型。PP-OCR模型针对通用场景,根据不同语种形成了PP-OCR模型库。基于PP-OCR的能力,PaddleOCR针对文档场景任务发布PP-Structure工具库,包含版面分析和表格识别两大任务。为了打通产业落地的全流程,PaddleOCR提供了规模化的数据生产工具和多种预测部署工具,助力开发者快速落地。
<div
align=
"center"
>
<img
src=
"../overview.png"
>
</div>
## 2. 项目克隆
### **2.1 克隆PaddleOCR repo代码**
## 1. 克隆PaddleOCR repo代码
```
【推荐】git clone https://github.com/PaddlePaddle/PaddleOCR
...
...
@@ -24,7 +14,7 @@ git clone https://gitee.com/paddlepaddle/PaddleOCR
注:码云托管代码可能无法实时同步本github项目更新,存在3~5天延时,请优先使用推荐方式。
##
# **
2.
2
安装第三方库
**
##
2. 安装第三方库
```
cd PaddleOCR
...
...
doc/doc_ch/config.md
View file @
aa59fca5
...
...
@@ -45,18 +45,18 @@
### Optimizer ([ppocr/optimizer](../../ppocr/optimizer))
| 字段 |
用途
| 默认值
| 备注 |
| :---------------------: |
:-------
-------------
-: | :-
-------------:
| :--------------------: |
| name |
优化器类名
|
Adam | 目前支持
`Momentum`
,
`Adam`
,
`RMSProp`
, 见
[
ppocr/optimizer/optimizer.py
](
../../ppocr/optimizer/optimizer.py
)
|
| beta1 |
设置一阶矩估计的指数衰减率
|
0.9
|
\
|
| beta2 |
设置二阶矩估计的指数衰减率
| 0.999
|
\
|
| clip_norm |
所允许的二范数最大值
|
|
\
|
|
**lr**
|
设置学习率decay方式
|
- |
\
|
| name |
学习率decay类名 |
Cosine
| 目前支持
`Linear`
,
`Cosine`
,
`Step`
,
`Piecewise`
, 见
[
ppocr/optimizer/learning_rate.py
](
../../ppocr/optimizer/learning_rate.py
)
|
| learning_rate | 基础学习率
|
0.001
|
\
|
|
**regularizer**
| 设置网络正则化方式
| - |
\
|
| name | 正则化类名
|
L2 | 目前支持
`L1`
,
`L2`
, 见
[
ppocr/optimizer/regularizer.py
](
../../ppocr/optimizer/regularizer.py
)
|
| factor |
学习率衰减系数
| 0.0000
4
|
\
|
| 字段 |
用途
| 默认值 | 备注 |
| :---------------------: |
:
-------------
:|:
-------------:| :--------------------: |
| name | 优化器类名
|
Adam
| 目前支持
`Momentum`
,
`Adam`
,
`RMSProp`
, 见
[
ppocr/optimizer/optimizer.py
](
../../ppocr/optimizer/optimizer.py
)
|
| beta1 | 设置一阶矩估计的指数衰减率 | 0.9 |
\
|
| beta2 | 设置二阶矩估计的指数衰减率 | 0.999 |
\
|
| clip_norm | 所允许的二范数最大值
|
|
\
|
|
**lr**
| 设置学习率decay方式
|
-
|
\
|
| name | 学习率decay类名 | Cosine | 目前支持
`Linear`
,
`Cosine`
,
`Step`
,
`Piecewise`
, 见
[
ppocr/optimizer/learning_rate.py
](
../../ppocr/optimizer/learning_rate.py
)
|
| learning_rate |
基础学习率 | 0.001 |
\
|
|
**regularizer**
|
设置网络正则化方式 | -
|
\
|
| name |
正则化类名 | L2
| 目前支持
`L1`
,
`L2`
, 见
[
ppocr/optimizer/regularizer.py
](
../../ppocr/optimizer/regularizer.py
)
|
| factor |
正则化系数
| 0.0000
1
|
\
|
### Architecture ([ppocr/modeling](../../ppocr/modeling))
...
...
doc/doc_ch/datasets.md
→
doc/doc_ch/
dataset/
datasets.md
View file @
aa59fca5
...
...
@@ -6,17 +6,17 @@
-
[
中文文档文字识别
](
#中文文档文字识别
)
-
[
ICDAR2019-ArT
](
#ICDAR2019-ArT
)
除了开源数据,用户还可使用合成工具自行合成,可参考
[
数据合成工具
](
./data_synthesis.md
)
;
除了开源数据,用户还可使用合成工具自行合成,可参考
[
数据合成工具
](
.
.
/data_synthesis.md
)
;
如果需要标注自己的数据,可参考
[
数据标注工具
](
./data_annotation.md
)
。
如果需要标注自己的数据,可参考
[
数据标注工具
](
.
.
/data_annotation.md
)
。
<a
name=
"ICDAR2019-LSVT"
></a>
#### 1、ICDAR2019-LSVT
-
**数据来源**
:https://ai.baidu.com/broad/introduction?dataset=lsvt
-
**数据简介**
: 共45w中文街景图像,包含5w(2w测试+3w训练)全标注数据(文本坐标+文本内容),40w弱标注数据(仅文本内容),如下图所示:
!
[](
../datasets/LSVT_1.jpg
)
!
[](
../
../
datasets/LSVT_1.jpg
)
(a) 全标注数据
!
[](
../datasets/LSVT_2.jpg
)
!
[](
../
../
datasets/LSVT_2.jpg
)
(b) 弱标注数据
-
**下载地址**
:https://ai.baidu.com/broad/download?dataset=lsvt
-
**说明**
:其中,test数据集的label目前没有开源,如要评估结果,可以去官网提交:https://rrc.cvc.uab.es/?ch=16
...
...
@@ -25,16 +25,16 @@
#### 2、ICDAR2017-RCTW-17
-
**数据来源**
:https://rctw.vlrlab.net/
-
**数据简介**
:共包含12,000+图像,大部分图片是通过手机摄像头在野外采集的。有些是截图。这些图片展示了各种各样的场景,包括街景、海报、菜单、室内场景和手机应用程序的截图。
!
[](
../datasets/rctw.jpg
)
!
[](
../
../
datasets/rctw.jpg
)
-
**下载地址**
:https://rctw.vlrlab.net/dataset/
<a
name=
"中文街景文字识别"
></a>
#### 3、中文街景文字识别
#### 3、中文街景文字识别
-
**数据来源**
:https://aistudio.baidu.com/aistudio/competition/detail/8
-
**数据简介**
:ICDAR2019-LSVT行识别任务,共包括29万张图片,其中21万张图片作为训练集(带标注),8万张作为测试集(无标注)。数据集采自中国街景,并由街景图片中的文字行区域(例如店铺标牌、地标等等)截取出来而形成。所有图像都经过一些预处理,将文字区域利用仿射变化,等比映射为一张高为48像素的图片,如图所示:
!
[](
../datasets/ch_street_rec_1.png
)
!
[](
../
../
datasets/ch_street_rec_1.png
)
(a) 标注:魅派集成吊顶
!
[](
../datasets/ch_street_rec_2.png
)
!
[](
../
../
datasets/ch_street_rec_2.png
)
(b) 标注:母婴用品连锁
-
**下载地址**
https://aistudio.baidu.com/aistudio/datasetdetail/8429
...
...
@@ -48,15 +48,15 @@ https://aistudio.baidu.com/aistudio/datasetdetail/8429
-
包含汉字、英文字母、数字和标点共5990个字符(字符集合:https://github.com/YCG09/chinese_ocr/blob/master/train/char_std_5990.txt )
-
每个样本固定10个字符,字符随机截取自语料库中的句子
-
图片分辨率统一为280x32
!
[](
../datasets/ch_doc1.jpg
)
!
[](
../datasets/ch_doc3.jpg
)
!
[](
../
../
datasets/ch_doc1.jpg
)
!
[](
../
../
datasets/ch_doc3.jpg
)
-
**下载地址**
:https://pan.baidu.com/s/1QkI7kjah8SPHwOQ40rS1Pw (密码:lu7m)
<a
name=
"ICDAR2019-ArT"
></a>
#### 5、ICDAR2019-ArT
-
**数据来源**
:https://ai.baidu.com/broad/introduction?dataset=art
-
**数据简介**
:共包含10,166张图像,训练集5603图,测试集4563图。由Total-Text、SCUT-CTW1500、Baidu Curved Scene Text (ICDAR2019-LSVT部分弯曲数据) 三部分组成,包含水平、多方向和弯曲等多种形状的文本。
!
[](
../datasets/ArT.jpg
)
!
[](
../
../
datasets/ArT.jpg
)
-
**下载地址**
:https://ai.baidu.com/broad/download?dataset=art
## 参考文献
...
...
doc/doc_ch/dataset/docvqa_datasets.md
0 → 100644
View file @
aa59fca5
doc/doc_ch/handwritten_datasets.md
→
doc/doc_ch/
dataset/
handwritten_datasets.md
View file @
aa59fca5
...
...
@@ -9,7 +9,7 @@
-
**数据简介**
:
*
包含在线和离线两类手写数据,
`HWDB1.0~1.2`
总共有3895135个手写单字样本,分属7356类(7185个汉字和171个英文字母、数字、符号);
`HWDB2.0~2.2`
总共有5091页图像,分割为52230个文本行和1349414个文字。所有文字和文本样本均存为灰度图像。部分单字样本图片如下所示。


-
**下载地址**
:http://www.nlpr.ia.ac.cn/databases/handwriting/Download.html
-
**使用建议**
:数据为单字,白色背景,可以大量合成文字行进行训练。白色背景可以处理成透明状态,方便添加各种背景。对于需要语义的情况,建议从真实语料出发,抽取单字组成文字行
...
...
@@ -22,7 +22,7 @@
-
**数据简介**
: NIST19数据集适用于手写文档和字符识别的模型训练,从3600位作者的手写样本表格中提取得到,总共包含81万张字符图片。其中9张图片示例如下。


-
**下载地址**
:
[
https://www.nist.gov/srd/nist-special-database-19
](
https://www.nist.gov/srd/nist-special-database-19
)
doc/doc_ch/dataset/layout_datasets.md
0 → 100644
View file @
aa59fca5
## 版面分析数据集
这里整理了常用版面分析数据集,持续更新中,欢迎各位小伙伴贡献数据集~
-
[
publaynet数据集
](
#publaynet
)
-
[
CDLA数据集
](
#CDLA
)
-
[
TableBank数据集
](
#TableBank
)
版面分析数据集多为目标检测数据集,除了开源数据,用户还可使用合成工具自行合成,如
[
labelme
](
https://github.com/wkentaro/labelme
)
等。
<a
name=
"publaynet"
></a>
#### 1、publaynet数据集
-
**数据来源**
:https://github.com/ibm-aur-nlp/PubLayNet
-
**数据简介**
:publaynet数据集的训练集合中包含35万张图像,验证集合中包含1.1万张图像。总共包含5个类别,分别是:
`text, title, list, table, figure`
。部分图像以及标注框可视化如下所示。
<div
align=
"center"
>
<img
src=
"../datasets/publaynet_demo/gt_PMC3724501_00006.jpg"
width=
"500"
>
<img
src=
"../datasets/publaynet_demo/gt_PMC5086060_00002.jpg"
width=
"500"
>
</div>
-
**下载地址**
:https://developer.ibm.com/exchanges/data/all/publaynet/
-
**说明**
:使用该数据集时,需要遵守
[
CDLA-Permissive
](
https://cdla.io/permissive-1-0/
)
协议。
<a
name=
"CDLA"
></a>
#### 2、CDLA数据集
-
**数据来源**
:https://github.com/buptlihang/CDLA
-
**数据简介**
:CDLA据集的训练集合中包含5000张图像,验证集合中包含1000张图像。总共包含10个类别,分别是:
`Text, Title, Figure, Figure caption, Table, Table caption, Header, Footer, Reference, Equation`
。部分图像以及标注框可视化如下所示。
<div
align=
"center"
>
<img
src=
"../datasets/CDLA_demo/val_0633.jpg"
width=
"500"
>
<img
src=
"../datasets/CDLA_demo/val_0941.jpg"
width=
"500"
>
</div>
-
**下载地址**
:https://github.com/buptlihang/CDLA
-
**说明**
:基于
[
PaddleDetection
](
https://github.com/PaddlePaddle/PaddleDetection/tree/develop
)
套件,在该数据集上训练目标检测模型时,在转换label时,需要将
`label.txt`
中的
`__ignore__`
与
`_background_`
去除。
<a
name=
"TableBank"
></a>
#### 3、TableBank数据集
-
**数据来源**
:https://doc-analysis.github.io/tablebank-page/index.html
-
**数据简介**
:TableBank数据集包含Latex(训练集187199张,验证集7265张,测试集5719张)与Word(训练集73383张,验证集2735张,测试集2281张)两种类别的文档。仅包含
`Table`
1个类别。部分图像以及标注框可视化如下所示。
<div
align=
"center"
>
<img
src=
"../datasets/tablebank_demo/004.png"
height=
"700"
>
<img
src=
"../datasets/tablebank_demo/005.png"
height=
"700"
>
</div>
-
**下载地址**
:https://doc-analysis.github.io/tablebank-page/index.html
-
**说明**
:使用该数据集时,需要遵守
[
Apache-2.0
](
https://github.com/doc-analysis/TableBank/blob/master/LICENSE
)
协议。
doc/doc_ch/dataset/ocr_datasets.md
0 → 100644
View file @
aa59fca5
# OCR数据集
-
[
1. 文本检测
](
#1-文本检测
)
-
[
1.1 PaddleOCR 文字检测数据格式
](
#11-paddleocr-文字检测数据格式
)
-
[
1.2 公开数据集
](
#12-公开数据集
)
-
[
1.2.1 ICDAR 2015
](
#121-icdar-2015
)
-
[
2. 文本识别
](
#2-文本识别
)
-
[
2.1 PaddleOCR 文字识别数据格式
](
#21-paddleocr-文字识别数据格式
)
-
[
2.2 公开数据集
](
#22-公开数据集
)
-
[
2.1 ICDAR 2015
](
#21-icdar-2015
)
-
[
3. 数据存放路径
](
#3-数据存放路径
)
这里整理了OCR中常用的公开数据集,持续更新中,欢迎各位小伙伴贡献数据集~
## 1. 文本检测
### 1.1 PaddleOCR 文字检测数据格式
PaddleOCR 中的文本检测算法支持的标注文件格式如下,中间用"
\t
"分隔:
```
" 图像文件名 json.dumps编码的图像标注信息"
ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]
```
json.dumps编码前的图像标注信息是包含多个字典的list,字典中的
`points`
表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。
`transcription`
表示当前文本框的文字,
**当其内容为“###”时,表示该文本框无效,在训练时会跳过。**
如果您想在我们未提供的数据集上训练,可以按照上述形式构建标注文件。
### 1.2 公开数据集
| 数据集名称 |图片下载地址| PaddleOCR 标注下载地址 |
|---|---|---|
| ICDAR 2015 |https://rrc.cvc.uab.es/?ch=4&com=downloads|
[
train
](
https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt
)
/
[
test
](
https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt
)
|
| ctw1500 |https://paddleocr.bj.bcebos.com/dataset/ctw1500.zip| 图片下载地址中已包含 |
| total text |https://paddleocr.bj.bcebos.com/dataset/total_text.tar| 图片下载地址中已包含 |
#### 1.2.1 ICDAR 2015
ICDAR 2015 数据集包含1000张训练图像和500张测试图像。ICDAR 2015 数据集可以从上表中链接下载,首次下载需注册。
注册完成登陆后,下载下图中红色框标出的部分,其中,
`Training Set Images`
下载的内容保存在
`icdar_c4_train_imgs`
文件夹下,
`Test Set Images`
下载的内容保存早
`ch4_test_images`
文件夹下
<p
align=
"center"
>
<img
src=
"../../datasets/ic15_location_download.png"
align=
"middle"
width =
"700"
/>
<p
align=
"center"
>
将下载到的数据集解压到工作目录下,假设解压在 PaddleOCR/train_data/下。然后从上表中下载转换好的标注文件。
PaddleOCR 也提供了数据格式转换脚本,可以将官网 label 转换支持的数据格式。 数据转换工具在
`ppocr/utils/gen_label.py`
, 这里以训练集为例:
```
# 将官网下载的标签文件转换为 train_icdar2015_label.txt
python gen_label.py --mode="det" --root_path="/path/to/icdar_c4_train_imgs/" \
--input_path="/path/to/ch4_training_localization_transcription_gt" \
--output_label="/path/to/train_icdar2015_label.txt"
```
解压数据集和下载标注文件后,PaddleOCR/train_data/ 有两个文件夹和两个文件,按照如下方式组织icdar2015数据集:
```
/PaddleOCR/train_data/icdar2015/text_localization/
└─ icdar_c4_train_imgs/ icdar 2015 数据集的训练数据
└─ ch4_test_images/ icdar 2015 数据集的测试数据
└─ train_icdar2015_label.txt icdar 2015 数据集的训练标注
└─ test_icdar2015_label.txt icdar 2015 数据集的测试标注
```
## 2. 文本识别
### 2.1 PaddleOCR 文字识别数据格式
PaddleOCR 中的文字识别算法支持两种数据格式:
-
`lmdb`
用于训练以lmdb格式存储的数据集,使用
[
lmdb_dataset.py
](
../../../ppocr/data/lmdb_dataset.py
)
进行读取;
-
`通用数据`
用于训练以文本文件存储的数据集,使用
[
simple_dataset.py
](
../../../ppocr/data/simple_dataset.py
)
进行读取。
下面以通用数据集为例, 介绍如何准备数据集:
*
训练集
建议将训练图片放入同一个文件夹,并用一个txt文件(rec_gt_train.txt)记录图片路径和标签,txt文件里的内容如下:
**注意:**
txt文件中默认请将图片路径和图片标签用
\t
分割,如用其他方式分割将造成训练报错。
```
" 图像文件名 图像标注信息 "
train_data/rec/train/word_001.jpg 简单可依赖
train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单
...
```
最终训练集应有如下文件结构:
```
|-train_data
|-rec
|- rec_gt_train.txt
|- train
|- word_001.png
|- word_002.jpg
|- word_003.jpg
| ...
```
除上述单张图像为一行格式之外,PaddleOCR也支持对离线增广后的数据进行训练,为了防止相同样本在同一个batch中被多次采样,我们可以将相同标签对应的图片路径写在一行中,以列表的形式给出,在训练中,PaddleOCR会随机选择列表中的一张图片进行训练。对应地,标注文件的格式如下。
```
["11.jpg", "12.jpg"] 简单可依赖
["21.jpg", "22.jpg", "23.jpg"] 用科技让复杂的世界更简单
3.jpg ocr
```
上述示例标注文件中,"11.jpg"和"12.jpg"的标签相同,都是
`简单可依赖`
,在训练的时候,对于该行标注,会随机选择其中的一张图片进行训练。
-
验证集
同训练集类似,验证集也需要提供一个包含所有图片的文件夹(test)和一个rec_gt_test.txt,验证集的结构如下所示:
```
|-train_data
|-rec
|- rec_gt_test.txt
|- test
|- word_001.jpg
|- word_002.jpg
|- word_003.jpg
| ...
```
### 2.2 公开数据集
| 数据集名称 | 图片下载地址 | PaddleOCR 标注下载地址 |
|---|---|---------------------------------------------------------------------|
| en benchmark(MJ, SJ, IIIT, SVT, IC03, IC13, IC15, SVTP, and CUTE.) |
[
DTRB
](
https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here
)
| LMDB格式,可直接用
[
lmdb_dataset.py
](
../../../ppocr/data/lmdb_dataset.py
)
加载 |
|ICDAR 2015| http://rrc.cvc.uab.es/?ch=4&com=downloads |
[
train
](
https://paddleocr.bj.bcebos.com/dataset/rec_gt_train.txt
)
/
[
test
](
https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt
)
|
| 多语言数据集 |
[
百度网盘
](
https://pan.baidu.com/s/1bS_u207Rm7YbY33wOECKDA
)
提取码:frgi
<br>
[
google drive
](
https://drive.google.com/file/d/18cSWX7wXSy4G0tbKJ0d9PuIaiwRLHpjA/view
)
| 图片下载地址中已包含 |
#### 2.1 ICDAR 2015
ICDAR 2015 数据集可以在上表中链接下载,用于快速验证。也可以从上表中下载 en benchmark 所需的lmdb格式数据集。
下载完图片后从上表中下载转换好的标注文件。
PaddleOCR 也提供了数据格式转换脚本,可以将ICDAR官网 label 转换为PaddleOCR支持的数据格式。 数据转换工具在
`ppocr/utils/gen_label.py`
, 这里以训练集为例:
```
# 将官网下载的标签文件转换为 rec_gt_label.txt
python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt"
```
数据样式格式如下,(a)为原始图片,(b)为每张图片对应的 Ground Truth 文本文件:

## 3. 数据存放路径
PaddleOCR训练数据的默认存储路径是
`PaddleOCR/train_data`
,如果您的磁盘上已有数据集,只需创建软链接至数据集目录:
```
# linux and mac os
ln -sf <path/to/dataset> <path/to/paddle_ocr>/train_data/dataset
# windows
mklink /d <path/to/paddle_ocr>/train_data/dataset <path/to/dataset>
```
doc/doc_ch/dataset/table_datasets.md
0 → 100644
View file @
aa59fca5
# 表格识别数据集
-
[
数据集汇总
](
#数据集汇总
)
-
[
1. PubTabNet数据集
](
#1-pubtabnet数据集
)
-
[
2. 好未来表格识别竞赛数据集
](
#2-好未来表格识别竞赛数据集
)
这里整理了常用表格识别数据集,持续更新中,欢迎各位小伙伴贡献数据集~
## 数据集汇总
| 数据集名称 |图片下载地址| PPOCR标注下载地址 |
|---|---|---|
| PubTabNet |https://github.com/ibm-aur-nlp/PubTabNet| jsonl格式,可直接用
[
pubtab_dataset.py
](
../../../ppocr/data/pubtab_dataset.py
)
加载 |
| 好未来表格识别竞赛数据集 |https://ai.100tal.com/dataset| jsonl格式,可直接用
[
pubtab_dataset.py
](
../../../ppocr/data/pubtab_dataset.py
)
加载 |
## 1. PubTabNet数据集
-
**数据简介**
:PubTabNet数据集的训练集合中包含50万张图像,验证集合中包含0.9万张图像。部分图像可视化如下所示。
<div
align=
"center"
>
<img
src=
"../../datasets/table_PubTabNet_demo/PMC524509_007_00.png"
width=
"500"
>
<img
src=
"../../datasets/table_PubTabNet_demo/PMC535543_007_01.png"
width=
"500"
>
</div>
-
**说明**
:使用该数据集时,需要遵守
[
CDLA-Permissive
](
https://cdla.io/permissive-1-0/
)
协议。
## 2. 好未来表格识别竞赛数据集
-
**数据简介**
:好未来表格识别竞赛数据集的训练集合中包含1.6万张图像。验证集未给出可训练的标注。
<div
align=
"center"
>
<img
src=
"../../datasets/table_tal_demo/1.jpg"
width=
"500"
>
<img
src=
"../../datasets/table_tal_demo/2.jpg"
width=
"500"
>
</div>
doc/doc_ch/vertical_and_multilingual_datasets.md
→
doc/doc_ch/
dataset/
vertical_and_multilingual_datasets.md
View file @
aa59fca5
...
...
@@ -22,7 +22,7 @@
*
CCPD-Challenge: 至今在车牌检测识别任务中最有挑战性的一些图片
*
CCPD-NP: 没有安装车牌的新车图片。


-
**下载地址**
...
...
@@ -46,7 +46,7 @@
* 有效期结束:07/41
* 卡用户拼音:MICHAEL


-
**下载地址**
:
[
https://cdn.kesci.com/cmb2017-2.zip
](
https://cdn.kesci.com/cmb2017-2.zip
)
...
...
@@ -59,7 +59,7 @@
-
**数据简介**
: 这是一个数据合成的工具包,可以根据输入的文本,输出验证码图片,使用该工具包生成几张demo图片如下。


-
**下载地址**
: 该数据集是生成得到,无下载地址。
...
...
doc/doc_ch/detection.md
View file @
aa59fca5
# 文字检测
本节以icdar2015数据集为例,介绍PaddleOCR中检测模型训练、评估、测试的使用方式。
-
[
1. 准备数据和模型
](
#1--------
)
*
[
1.1 数据准备
](
#11-----
)
*
[
1.2 下载预训练模型
](
#12--------
)
-
[
2. 开始训练
](
#2-----
)
*
[
2.1 启动训练
](
#21-----
)
*
[
2.2 断点训练
](
#22-----
)
*
[
2.3 更换Backbone 训练
](
#23---backbone---
)
*
[
2.4 知识蒸馏训练
](
#24---distill---
)
-
[
3. 模型评估与预测
](
#3--------
)
*
[
3.1 指标评估
](
#31-----
)
*
[
3.2 测试检测效果
](
#32-------
)
-
[
4. 模型导出与预测
](
#4--------
)
-
[
1. 准备数据和模型
](
#1-准备数据和模型
)
-
[
1.1 准备数据集
](
#11-准备数据集
)
-
[
1.2 下载预训练模型
](
#12-下载预训练模型
)
-
[
2. 开始训练
](
#2-开始训练
)
-
[
2.1 启动训练
](
#21-启动训练
)
-
[
2.2 断点训练
](
#22-断点训练
)
-
[
2.3 更换Backbone 训练
](
#23-更换backbone-训练
)
-
[
2.4 混合精度训练
](
#24-混合精度训练
)
-
[
2.5 分布式训练
](
#25-分布式训练
)
-
[
2.6 知识蒸馏训练
](
#26-知识蒸馏训练
)
-
[
2.7 其他训练环境
](
#27-其他训练环境
)
-
[
3. 模型评估与预测
](
#3-模型评估与预测
)
-
[
3.1 指标评估
](
#31-指标评估
)
-
[
3.2 测试检测效果
](
#32-测试检测效果
)
-
[
4. 模型导出与预测
](
#4-模型导出与预测
)
-
[
5. FAQ
](
#5-faq
)
<a
name=
"1--------"
></a>
# 1. 准备数据和模型
<a
name=
"11-----"
></a>
## 1.1 数据准备
## 1.1 准备数据集
icdar2015 TextLocalization数据集是文本检测的数据集,包含1000张训练图像和500张测试图像。
icdar2015数据集可以从
[
官网
](
https://rrc.cvc.uab.es/?ch=4&com=downloads
)
下载到,首次下载需注册。
注册完成登陆后,下载下图中红色框标出的部分,其中,
`Training Set Images`
下载的内容保存为
`icdar_c4_train_imgs`
文件夹下,
`Test Set Images`
下载的内容保存为
`ch4_test_images`
文件夹下
准备数据集可参考
[
ocr_datasets
](
./dataset/ocr_datasets.md
)
。
<p
align=
"center"
>
<img
src=
"../datasets/ic15_location_download.png"
align=
"middle"
width =
"700"
/>
<p
align=
"center"
>
将下载到的数据集解压到工作目录下,假设解压在 PaddleOCR/train_data/下。另外,PaddleOCR将零散的标注文件整理成单独的标注文件
,您可以通过wget的方式进行下载。
```
shell
# 在PaddleOCR路径下
cd
PaddleOCR/
wget
-P
./train_data/ https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt
wget
-P
./train_data/ https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_label.txt
```
PaddleOCR 也提供了数据格式转换脚本,可以将官网 label 转换支持的数据格式。 数据转换工具在
`ppocr/utils/gen_label.py`
, 这里以训练集为例:
```
# 将官网下载的标签文件转换为 train_icdar2015_label.txt
python gen_label.py --mode="det" --root_path="/path/to/icdar_c4_train_imgs/" \
--input_path="/path/to/ch4_training_localization_transcription_gt" \
--output_label="/path/to/train_icdar2015_label.txt"
```
解压数据集和下载标注文件后,PaddleOCR/train_data/ 有两个文件夹和两个文件,按照如下方式组织icdar2015数据集:
```
/PaddleOCR/train_data/icdar2015/text_localization/
└─ icdar_c4_train_imgs/ icdar数据集的训练数据
└─ ch4_test_images/ icdar数据集的测试数据
└─ train_icdar2015_label.txt icdar数据集的训练标注
└─ test_icdar2015_label.txt icdar数据集的测试标注
```
提供的标注文件格式如下,中间用"
\t
"分隔:
```
" 图像文件名 json.dumps编码的图像标注信息"
ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]
```
json.dumps编码前的图像标注信息是包含多个字典的list,字典中的
`points`
表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。
`transcription`
表示当前文本框的文字,
**当其内容为“###”时,表示该文本框无效,在训练时会跳过。**
如果您想在其他数据集上训练,可以按照上述形式构建标注文件。
<a
name=
"12--------"
></a>
## 1.2 下载预训练模型
...
...
@@ -103,9 +62,6 @@ python3 tools/train.py -c configs/det/det_mv3_db.yml \
python3
-m
paddle.distributed.launch
--gpus
'0,1,2,3'
tools/train.py
-c
configs/det/det_mv3_db.yml
\
-o
Global.pretrained_model
=
./pretrain_models/MobileNetV3_large_x0_5_pretrained
# 多机多卡训练,通过 --ips 参数设置使用的机器IP地址,通过 --gpus 参数设置使用的GPU ID
python3
-m
paddle.distributed.launch
--ips
=
"xx.xx.xx.xx,xx.xx.xx.xx"
--gpus
'0,1,2,3'
tools/train.py
-c
configs/det/det_mv3_db.yml
\
-o
Global.pretrained_model
=
./pretrain_models/MobileNetV3_large_x0_5_pretrained
```
上述指令中,通过-c 选择训练使用configs/det/det_db_mv3.yml配置文件。
...
...
@@ -116,15 +72,6 @@ python3 -m paddle.distributed.launch --ips="xx.xx.xx.xx,xx.xx.xx.xx" --gpus '0,1
python3 tools/train.py
-c
configs/det/det_mv3_db.yml
-o
Optimizer.base_lr
=
0.0001
```
**注意:**
采用多机多卡训练时,需要替换上面命令中的ips值为您机器的地址,机器之间需要能够相互ping通。另外,训练时需要在多个机器上分别启动命令。查看机器ip地址的命令为
`ifconfig`
。
如果您想进一步加快训练速度,可以使用
[
自动混合精度训练
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/01_paddle2.0_introduction/basic_concept/amp_cn.html
)
, 以单机单卡为例,命令如下:
```
shell
python3 tools/train.py
-c
configs/det/det_mv3_db.yml
\
-o
Global.pretrained_model
=
./pretrain_models/MobileNetV3_large_x0_5_pretrained
\
Global.use_amp
=
True Global.scale_loss
=
1024.0 Global.use_dynamic_loss_scaling
=
True
```
<a
name=
"22-----"
></a>
## 2.2 断点训练
...
...
@@ -183,14 +130,52 @@ args1: args1
**注意**
:如果要更换网络的其他模块,可以参考
[
文档
](
./add_new_algorithm.md
)
。
<a
name=
"24---amp---"
></a>
## 2.4 混合精度训练
如果您想进一步加快训练速度,可以使用
[
自动混合精度训练
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/01_paddle2.0_introduction/basic_concept/amp_cn.html
)
, 以单机单卡为例,命令如下:
```
shell
python3 tools/train.py
-c
configs/det/det_mv3_db.yml
\
-o
Global.pretrained_model
=
./pretrain_models/MobileNetV3_large_x0_5_pretrained
\
Global.use_amp
=
True Global.scale_loss
=
1024.0 Global.use_dynamic_loss_scaling
=
True
```
<a
name
=
"26---fleet---"
>
</a>
## 2.5 分布式训练
多机多卡训练时,通过
`
--ips
`
参数设置使用的机器IP地址,通过
`
--gpus
`
参数设置使用的GPU ID:
<a name="24---distill---"></a>
```
bash
python3 -m paddle.distributed.launch --ips="xx.xx.xx.xx,xx.xx.xx.xx" --gpus '0,1,2,3' tools/train.py -c configs/det/det_mv3_db.yml
\
-o Global.pretrained_model=./pretrain_models/MobileNetV3_large_x0_5_pretrained
```
**注意:** 采用多机多卡训练时,需要替换上面命令中的ips值为您机器的地址,机器之间需要能够相互ping通。另外,训练时需要在多个机器上分别启动命令。查看机器ip地址的命令为`ifconfig`。
## 2.4 知识蒸馏训练
<a name="26---distill---"></a>
## 2.6 知识蒸馏训练
PaddleOCR支持了基于知识蒸馏的检测模型训练过程,更多内容可以参考[知识蒸馏说明文档](./knowledge_distillation.md)。
**注意:** 知识蒸馏训练目前只支持PP-OCR使用的`DB`和`CRNN`算法。
<a name="27---other---"></a>
## 2.7 其他训练环境
- Windows GPU/CPU
在Windows平台上与Linux平台略有不同:
Windows平台只支持`单卡`的训练与预测,指定GPU进行训练`set CUDA_VISIBLE_DEVICES=0`
在Windows平台,DataLoader只支持单进程模式,因此需要设置 `num_workers` 为0;
- macOS
不支持GPU模式,需要在配置文件中设置`use_gpu`为False,其余训练评估预测命令与Linux GPU完全相同。
- Linux DCU
DCU设备上运行需要设置环境变量 `export HIP_VISIBLE_DEVICES=0,1,2,3`,其余训练评估预测命令与Linux GPU完全相同。
<a name="3--------"></a>
# 3. 模型评估与预测
...
...
@@ -206,22 +191,22 @@ PaddleOCR计算三个OCR检测相关的指标,分别是:Precision、Recall
python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy"
```
* 注:`box_thresh`、`unclip_ratio`是DB后处理所需要的参数,在评估EAST模型时不需要设置
<a name="32-------"></a>
## 3.2 测试检测效果
测试单张图像的检测效果
测试单张图像的检测效果
:
```
shell
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy"
```
测试DB模型时,调整后处理阈值
测试DB模型时,调整后处理阈值
:
```
shell
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=2.0
```
* 注:`box_thresh`、`unclip_ratio`是DB后处理参数,其他检测模型不支持。
测试文件夹下所有图像的检测效果
测试文件夹下所有图像的检测效果
:
```
shell
python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./output/det_db/best_accuracy"
```
...
...
doc/doc_ch/ocr_book.md
0 → 100644
View file @
aa59fca5
# 《动手学OCR》电子书
特点:
-
覆盖OCR全栈技术
-
理论实践相结合
-
Notebook交互式学习
-
配套教学视频
[
电子书下载
](
)
目录:

[
notebook教程
](
../../notebook/notebook_ch/
)
[
教学视频
](
https://aistudio.baidu.com/aistudio/education/group/info/25207
)
\ No newline at end of file
doc/doc_ch/ppocr_introduction.md
0 → 100644
View file @
aa59fca5
[
English
](
../doc_en/ppocr_introduction_en.md
)
| 简体中文
# PP-OCR
-
[
1. 简介
](
#1
)
-
[
2. 特性
](
#2
)
-
[
3. benchmark
](
#3
)
-
[
4. 效果展示
](
#4
)
-
[
5. 使用教程
](
#5
)
-
[
5.1 快速体验
](
#51
)
-
[
5.2 模型训练、压缩、推理部署
](
#52
)
-
[
6. 模型库
](
#6
)
<a
name=
"1"
></a>
## 1. 简介
PP-OCR是PaddleOCR自研的实用的超轻量OCR系统。在实现
[
前沿算法
](
algorithm.md
)
的基础上,考虑精度与速度的平衡,进行
**模型瘦身**
和
**深度优化**
,使其尽可能满足产业落地需求。
#### PP-OCR
PP-OCR是一个两阶段的OCR系统,其中文本检测算法选用
[
DB
](
algorithm_det_db.md
)
,文本识别算法选用
[
CRNN
](
algorithm_rec_crnn.md
)
,并在检测和识别模块之间添加
[
文本方向分类器
](
angle_class.md
)
,以应对不同方向的文本识别。
PP-OCR系统pipeline如下:
<div
align=
"center"
>
<img
src=
"../ppocrv2_framework.jpg"
width=
"800"
>
</div>
PP-OCR系统在持续迭代优化,目前已发布PP-OCR和PP-OCRv2两个版本:
PP-OCR从骨干网络选择和调整、预测头部的设计、数据增强、学习率变换策略、正则化参数选择、预训练模型使用以及模型自动裁剪量化8个方面,采用19个有效策略,对各个模块的模型进行效果调优和瘦身(如绿框所示),最终得到整体大小为3.5M的超轻量中英文OCR和2.8M的英文数字OCR。更多细节请参考PP-OCR技术方案 https://arxiv.org/abs/2009.09941
#### PP-OCRv2
PP-OCRv2在PP-OCR的基础上,进一步在5个方面重点优化,检测模型采用CML协同互学习知识蒸馏策略和CopyPaste数据增广策略;识别模型采用LCNet轻量级骨干网络、UDML 改进知识蒸馏策略和
[
Enhanced CTC loss
](
./doc/doc_ch/enhanced_ctc_loss.md
)
损失函数改进(如上图红框所示),进一步在推理速度和预测效果上取得明显提升。更多细节请参考PP-OCRv2
[
技术报告
](
https://arxiv.org/abs/2109.03144
)
。
#### PP-OCRv3
<a
name=
"2"
></a>
## 2. 特性
-
超轻量PP-OCRv2系列:检测(3.1M)+ 方向分类器(1.4M)+ 识别(8.5M)= 13.0M
-
超轻量PP-OCR mobile移动端系列:检测(3.0M)+方向分类器(1.4M)+ 识别(5.0M)= 9.4M
-
通用PP-OCR server系列:检测(47.1M)+方向分类器(1.4M)+ 识别(94.9M)= 143.4M
-
支持中英文数字组合识别、竖排文本识别、长文本识别
-
支持多语言识别:韩语、日语、德语、法语等约80种语言
<a
name=
"3"
></a>
## 3. benchmark
关于PP-OCR系列模型之间的性能对比,请查看
[
benchmark
](
./benchmark.md
)
文档。
<a
name=
"4"
></a>
## 4. 效果展示 [more](./visualization.md)
<details
open
>
<summary>
PP-OCRv2 中文模型
</summary>
<div
align=
"center"
>
<img
src=
"../imgs_results/ch_ppocr_mobile_v2.0/test_add_91.jpg"
width=
"800"
>
<img
src=
"../imgs_results/ch_ppocr_mobile_v2.0/00018069.jpg"
width=
"800"
>
</div>
<div
align=
"center"
>
<img
src=
"../imgs_results/ch_ppocr_mobile_v2.0/00056221.jpg"
width=
"800"
>
<img
src=
"../imgs_results/ch_ppocr_mobile_v2.0/rotate_00052204.jpg"
width=
"800"
>
</div>
</details>
<details
open
>
<summary>
PP-OCRv2 英文模型
</summary>
<div
align=
"center"
>
<img
src=
"../imgs_results/ch_ppocr_mobile_v2.0/img_12.jpg"
width=
"800"
>
</div>
</details>
<details
open
>
<summary>
PP-OCRv2 其他语言模型
</summary>
<div
align=
"center"
>
<img
src=
"../imgs_results/french_0.jpg"
width=
"800"
>
<img
src=
"../imgs_results/korean.jpg"
width=
"800"
>
</div>
</details>
<a
name=
"5"
></a>
## 5. 使用教程
<a
name=
"51"
></a>
### 5.1 快速体验
-
在线网站体验:超轻量PP-OCR mobile模型体验地址:https://www.paddlepaddle.org.cn/hub/scene/ocr
-
移动端demo体验:
[
安装包DEMO下载地址
](
https://ai.baidu.com/easyedge/app/openSource?from=paddlelite
)(
基于EasyEdge和Paddle-Lite,
支持iOS和Android系统)
-
一行命令快速使用:
[
快速开始(中英文/多语言)
](
./doc/doc_ch/quickstart.md
)
<a
name=
"52"
></a>
### 5.2 模型训练、压缩、推理部署
更多教程,包括模型训练、模型压缩、推理部署等,请参考
[
文档教程
](
../../README_ch.md#文档教程
)
。
<a
name=
"6"
></a>
## 6. 模型库
PP-OCR中英文模型列表如下:
| 模型简介 | 模型名称 | 推荐场景 | 检测模型 | 方向分类器 | 识别模型 |
| ------------------------------------- | ----------------------- | --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 中英文超轻量PP-OCRv2模型(13.0M) | ch_PP-OCRv2_xx | 移动端&服务器端 |
[
推理模型
](
https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_infer.tar
)
/
[
训练模型
](
https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_det_distill_train.tar
)
|
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar
)
|
[
推理模型
](
https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_infer.tar
)
/
[
训练模型
](
https://paddleocr.bj.bcebos.com/PP-OCRv2/chinese/ch_PP-OCRv2_rec_train.tar
)
|
| 中英文超轻量PP-OCR mobile模型(9.4M) | ch_ppocr_mobile_v2.0_xx | 移动端&服务器端 |
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_train.tar
)
|
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar
)
|
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_pre.tar
)
|
| 中英文通用PP-OCR server模型(143.4M) | ch_ppocr_server_v2.0_xx | 服务器端 |
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_train.tar
)
|
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar
)
|
[
推理模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar
)
/
[
预训练模型
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_pre.tar
)
|
更多模型下载(包括英文数字模型、多语言模型、Paddle-Lite模型等),可以参考
[
PP-OCR 系列模型下载
](
./models_list.md
)
。
\ No newline at end of file
doc/doc_ch/quickstart.md
View file @
aa59fca5
-
[
PaddleOCR快速开始
](
#paddleocr快速开始
)
-
[
1. 安装
](
#1-安装
)
-
[
1.1 安装PaddlePaddle
](
#11-安装paddlepaddle
)
-
[
1.2 安装PaddleOCR whl包
](
#12-安装paddleocr-whl包
)
-
[
2. 便捷使用
](
#2-便捷使用
)
-
[
2.1 命令行使用
](
#21-命令行使用
)
-
[
2.1.1 中英文模型
](
#211-中英文模型
)
-
[
2.1.2 多语言模型
](
#212-多语言模型
)
-
[
2.1.3 版面分析
](
#213-版面分析
)
-
[
2.2 Python脚本使用
](
#22-python脚本使用
)
-
[
2.2.1 中英文与多语言使用
](
#221-中英文与多语言使用
)
-
[
2.2.2 版面分析
](
#222-版面分析
)
-
[
3. 小结
](
#3-小结
)
# PaddleOCR快速开始
# PaddleOCR 快速开始
**说明:**
本文主要介绍PaddleOCR wheel包对PP-OCR系列模型的快速使用,如要体验文档分析相关功能,请参考
[
PP-Structure快速使用教程
](
../../ppstructure/docs/quickstart.md
)
。
-
[
1. 安装
](
#1
)
-
[
1.1 安装PaddlePaddle
](
#11
)
-
[
1.2 安装PaddleOCR whl包
](
#12
)
-
[
2. 便捷使用
](
#2
)
-
[
2.1 命令行使用
](
#21
)
-
[
2.1.1 中英文模型
](
#211
)
-
[
2.1.2 多语言模型
](
#212
)
-
[
2.2 Python脚本使用
](
#22
)
-
[
2.2.1 中英文与多语言使用
](
#221
)
-
[
3.小结
](
#3
)
<a
name=
"1"
></a>
<a
name=
"1"
></a>
## 1. 安装
<a
name=
"11"
></a>
### 1.1 安装PaddlePaddle
> 如果您没有基础的Python运行环境,请参考[运行环境准备](./environment.md)。
...
...
@@ -39,22 +37,13 @@
更多的版本需求,请参照
[
飞桨官网安装文档
](
https://www.paddlepaddle.org.cn/install/quick
)
中的说明进行操作。
<a
name=
"12"
></a>
### 1.2 安装PaddleOCR whl包
```
bash
pip
install
"paddleocr>=2.0.1"
# 推荐使用2.0.1+版本
```
-
对于Windows环境用户:
直接通过pip安装的shapely库可能出现
`[winRrror 126] 找不到指定模块的问题`
。建议从
[
这里
](
https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely
)
下载shapely安装包完成安装,
-
使用
**版面分析**
功能时,运行以下命令
**安装 Layout-Parser**
```
bash
pip3
install
-U
https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl
```
-
对于Windows环境用户:直接通过pip安装的shapely库可能出现
`[winRrror 126] 找不到指定模块的问题`
。建议从
[
这里
](
https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely
)
下载shapely安装包完成安装。
<a
name=
"2"
></a>
...
...
@@ -68,7 +57,8 @@ PaddleOCR提供了一系列测试图片,点击[这里](https://paddleocr.bj.bc
cd /path/to/ppocr_img
```
如果不使用提供的测试图片,可以将下方
`--image_dir`
参数替换为相应的测试图片路径
如果不使用提供的测试图片,可以将下方
`--image_dir`
参数替换为相应的测试图片路径。
<a
name=
"211"
></a>
#### 2.1.1 中英文模型
...
...
@@ -154,60 +144,6 @@ paddleocr --image_dir ./imgs_en/254.jpg --lang=en
| 繁体中文 | chinese_cht | | 意大利文 | it | | 俄罗斯文 | ru |
全部语种及其对应的缩写列表可查看
[
多语言模型教程
](
./multi_languages.md
)
<a
name=
"213"
></a>
#### 2.1.3 版面分析
版面分析是指对文档图片中的文字、标题、列表、图片和表格5类区域进行划分。对于前三类区域,直接使用OCR模型完成对应区域文字检测与识别,并将结果保存在txt中。对于表格类区域,经过表格结构化处理后,表格图片转换为相同表格样式的Excel文件。图片区域会被单独裁剪成图像。
使用PaddleOCR的版面分析功能,需要指定
`--type=structure`
```
bash
paddleocr
--image_dir
=
./table/1.png
--type
=
structure
```
-
**返回结果说明**
PP-Structure的返回结果为一个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
)])
}
]
```
其中各个字段说明如下
| 字段 | 说明 |
| ---- | ------------------------------------------------------------ |
| type | 图片区域的类型 |
| bbox | 图片区域的在原图的坐标,分别[左上角x,左上角y,右下角x,右下角y] |
| res | 图片区域的OCR或表格识别结果。
<br>
表格: 表格的HTML字符串;
<br>
OCR: 一个包含各个单行文字的检测坐标和识别结果的元组 |
运行完成后,每张图片会在
`output`
字段指定的目录下有一个同名目录,图片里的每个表格会存储为一个excel,图片区域会被裁剪之后保存下来,excel文件和图片名为表格在图片里的坐标。
```
/output/table/1/
└─ res.txt
└─ [454, 360, 824, 658].xlsx 表格识别结果
└─ [16, 2, 828, 305].jpg 被裁剪出的图片区域
└─ [17, 361, 404, 711].xlsx 表格识别结果
```
-
**参数说明**
| 字段 | 说明 | 默认值 |
| --------------- | ---------------------------------------- | -------------------------------------------- |
| output | excel和识别结果保存的地址 | ./output/table |
| table_max_len | 表格结构模型预测时,图像的长边resize尺度 | 488 |
| table_model_dir | 表格结构模型 inference 模型地址 | None |
| table_char_dict_path | 表格结构模型所用字典地址 | ../ppocr/utils/dict/table_structure_dict.txt |
大部分参数和paddleocr whl包保持一致,见
[
whl包文档
](
./whl.md
)
<a
name=
"22"
></a>
...
...
@@ -256,35 +192,7 @@ im_show.save('result.jpg')
<div
align=
"center"
>
<img
src=
"../imgs_results/whl/11_det_rec.jpg"
width=
"800"
>
</div>
<a
name=
"222"
></a>
#### 2.2.2 版面分析
```
python
import
os
import
cv2
from
paddleocr
import
PPStructure
,
draw_structure_result
,
save_structure_res
table_engine
=
PPStructure
(
show_log
=
True
)
save_folder
=
'./output/table'
img_path
=
'./table/paper-image.jpg'
img
=
cv2
.
imread
(
img_path
)
result
=
table_engine
(
img
)
save_structure_res
(
result
,
save_folder
,
os
.
path
.
basename
(
img_path
).
split
(
'.'
)[
0
])
for
line
in
result
:
line
.
pop
(
'img'
)
print
(
line
)
from
PIL
import
Image
font_path
=
'./fonts/simfang.ttf'
# PaddleOCR下提供字体包
image
=
Image
.
open
(
img_path
).
convert
(
'RGB'
)
im_show
=
draw_structure_result
(
image
,
result
,
font_path
=
font_path
)
im_show
=
Image
.
fromarray
(
im_show
)
im_show
.
save
(
'result.jpg'
)
```
<a
name=
"3"
></a>
...
...
@@ -292,4 +200,4 @@ im_show.save('result.jpg')
通过本节内容,相信您已经熟练掌握PaddleOCR whl包的使用方法并获得了初步效果。
PaddleOCR是一套丰富领先实用的OCR工具库,打通数据、模型训练、压缩和推理部署全流程,
因此在
[
下一节
](
./
paddleOCR_overview.md
)
中我们将首先为您介绍PaddleOCR的全景图,然后克隆PaddleOCR项目
,正式开启PaddleOCR的应用之旅。
PaddleOCR是一套丰富领先实用的OCR工具库,打通数据、模型训练、压缩和推理部署全流程,
您可以参考
[
文档教程
](
.
.
/
../README_ch.md#文档教程
)
,正式开启PaddleOCR的应用之旅。
Prev
1
2
3
4
5
6
7
8
…
11
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment