Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleOCR
提交
2dae3b70
P
PaddleOCR
项目概览
PaddlePaddle
/
PaddleOCR
大约 1 年 前同步成功
通知
1528
Star
32962
Fork
6643
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
108
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
108
Issue
108
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2dae3b70
编写于
9月 09, 2021
作者:
qq_25193841
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add directory
Add directory
上级
5bec6c46
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
51 addition
and
20 deletion
+51
-20
README_ch.md
README_ch.md
+1
-1
deploy/cpp_infer/readme.md
deploy/cpp_infer/readme.md
+28
-6
doc/doc_ch/angle_class.md
doc/doc_ch/angle_class.md
+12
-12
doc/doc_ch/config.md
doc/doc_ch/config.md
+10
-1
未找到文件。
README_ch.md
浏览文件 @
2dae3b70
...
@@ -98,7 +98,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
...
@@ -98,7 +98,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力
-
[
PP-OCR模型训练
](
./doc/doc_ch/training.md
)
-
[
PP-OCR模型训练
](
./doc/doc_ch/training.md
)
-
[
文本检测
](
./doc/doc_ch/detection.md
)
-
[
文本检测
](
./doc/doc_ch/detection.md
)
-
[
文本识别
](
./doc/doc_ch/recognition.md
)
-
[
文本识别
](
./doc/doc_ch/recognition.md
)
-
[
方向分类器
](
./doc/doc_ch/angle_class.md
)
-
[
文本
方向分类器
](
./doc/doc_ch/angle_class.md
)
-
[
配置文件内容与生成
](
./doc/doc_ch/config.md
)
-
[
配置文件内容与生成
](
./doc/doc_ch/config.md
)
-
PP-OCR模型推理部署
-
PP-OCR模型推理部署
-
[
基于C++预测引擎推理
](
./deploy/cpp_infer/readme.md
)
-
[
基于C++预测引擎推理
](
./deploy/cpp_infer/readme.md
)
...
...
deploy/cpp_infer/readme.md
浏览文件 @
2dae3b70
...
@@ -4,15 +4,32 @@
...
@@ -4,15 +4,32 @@
C++在性能计算上优于python,因此,在大多数CPU、GPU部署场景,多采用C++的部署方式,本节将介绍如何在Linux
\W
indows (CPU
\G
PU)环境下配置C++环境并完成
C++在性能计算上优于python,因此,在大多数CPU、GPU部署场景,多采用C++的部署方式,本节将介绍如何在Linux
\W
indows (CPU
\G
PU)环境下配置C++环境并完成
PaddleOCR模型部署。
PaddleOCR模型部署。
*
[
1. 准备环境
](
#1
)
+
[
1.0 运行准备
](
#10
)
+
[
1.1 编译opencv库
](
#11
)
+
[
1.2 下载或者编译Paddle预测库
](
#12
)
-
[
1.2.1 直接下载安装
](
#121
)
-
[
1.2.2 预测库源码编译
](
#122
)
*
[
2 开始运行
](
#2
)
+
[
2.1 将模型导出为inference model
](
#21
)
+
[
2.2 编译PaddleOCR C++预测demo
](
#22
)
+
[
2.3运行demo
](
#23
)
<a
name=
"1"
></a>
## 1. 准备环境
## 1. 准备环境
### 运行准备
<a
name=
"10"
></a>
### 1.0 运行准备
-
Linux环境,推荐使用docker。
-
Linux环境,推荐使用docker。
-
Windows环境,目前支持基于
`Visual Studio 2019 Community`
进行编译。
-
Windows环境,目前支持基于
`Visual Studio 2019 Community`
进行编译。
*
该文档主要介绍基于Linux环境的PaddleOCR C++预测流程,如果需要在Windows下基于预测库进行C++预测,具体编译方法请参考
[
Windows下编译教程
](
./docs/windows_vs2019_build.md
)
*
该文档主要介绍基于Linux环境的PaddleOCR C++预测流程,如果需要在Windows下基于预测库进行C++预测,具体编译方法请参考
[
Windows下编译教程
](
./docs/windows_vs2019_build.md
)
<a
name=
"11"
></a>
### 1.1 编译opencv库
### 1.1 编译opencv库
*
首先需要从opencv官网上下载在Linux环境下源码编译的包,以opencv3.4.7为例,下载命令如下。
*
首先需要从opencv官网上下载在Linux环境下源码编译的包,以opencv3.4.7为例,下载命令如下。
...
@@ -71,6 +88,8 @@ opencv3/
...
@@ -71,6 +88,8 @@ opencv3/
|-- share
|-- share
```
```
<a
name=
"12"
></a>
### 1.2 下载或者编译Paddle预测库
### 1.2 下载或者编译Paddle预测库
*
有2种方式获取Paddle预测库,下面进行详细介绍。
*
有2种方式获取Paddle预测库,下面进行详细介绍。
...
@@ -132,9 +151,12 @@ build/paddle_inference_install_dir/
...
@@ -132,9 +151,12 @@ build/paddle_inference_install_dir/
其中
`paddle`
就是C++预测所需的Paddle库,
`version.txt`
中包含当前预测库的版本信息。
其中
`paddle`
就是C++预测所需的Paddle库,
`version.txt`
中包含当前预测库的版本信息。
<a
name=
"2"
></a>
## 2 开始运行
## 2 开始运行
<a
name=
"21"
></a>
### 2.1 将模型导出为inference model
### 2.1 将模型导出为inference model
*
可以参考
[
模型预测章节
](
../../doc/doc_ch/inference.md
)
,导出inference model,用于模型预测。模型导出之后,假设放在
`inference`
目录下,则目录结构如下。
*
可以参考
[
模型预测章节
](
../../doc/doc_ch/inference.md
)
,导出inference model,用于模型预测。模型导出之后,假设放在
`inference`
目录下,则目录结构如下。
...
@@ -149,6 +171,7 @@ inference/
...
@@ -149,6 +171,7 @@ inference/
| |--inference.pdmodel
| |--inference.pdmodel
```
```
<a
name=
"22"
></a>
### 2.2 编译PaddleOCR C++预测demo
### 2.2 编译PaddleOCR C++预测demo
...
@@ -172,13 +195,14 @@ CUDNN_LIB_DIR=/your_cudnn_lib_dir
...
@@ -172,13 +195,14 @@ CUDNN_LIB_DIR=/your_cudnn_lib_dir
*
编译完成之后,会在
`build`
文件夹下生成一个名为
`ppocr`
的可执行文件。
*
编译完成之后,会在
`build`
文件夹下生成一个名为
`ppocr`
的可执行文件。
<a
name=
"23"
></a>
### 运行demo
###
2.3
运行demo
运行方式:
运行方式:
```
shell
```
shell
./build/ppocr <mode>
[
--param1
]
[
--param2
]
[
...]
./build/ppocr <mode>
[
--param1
]
[
--param2
]
[
...]
```
```
其中,
`mode`
为必选参数,表示选择的功能,取值范围['det', 'rec', 'system'],分别表示调用检测、识别、检测识别串联(包括方向分类器)。具体命令如下:
其中,
`mode`
为必选参数,表示选择的功能,取值范围['det', 'rec', 'system'],分别表示调用检测、识别、检测识别串联(包括方向分类器)。具体命令如下:
##### 1. 只调用检测:
##### 1. 只调用检测:
...
@@ -258,6 +282,4 @@ CUDNN_LIB_DIR=/your_cudnn_lib_dir
...
@@ -258,6 +282,4 @@ CUDNN_LIB_DIR=/your_cudnn_lib_dir
</div>
</div>
### 2.3 注意
**注意:在使用Paddle预测库时,推荐使用2.0.0版本的预测库。**
*
在使用Paddle预测库时,推荐使用2.0.0版本的预测库。
doc/doc_ch/angle_class.md
浏览文件 @
2dae3b70
# 文本方向分类器
# 文本方向分类器
-
[
方法介绍
](
#方法介绍
)
-
[
1.
方法介绍
](
#方法介绍
)
-
[
数据准备
](
#数据准备
)
-
[
2.
数据准备
](
#数据准备
)
-
[
启动训练
](
#启动训练
)
-
[
3.
启动训练
](
#启动训练
)
-
[
训练
](
#训练
)
-
[
4.
训练
](
#训练
)
-
[
评估
](
#评估
)
-
[
5.
评估
](
#评估
)
-
[
预测
](
#预测
)
-
[
6.
预测
](
#预测
)
<a
name=
"方法介绍"
></a>
<a
name=
"方法介绍"
></a>
## 方法介绍
##
1.
方法介绍
文本方向分类器主要用于图片非0度的场景下,在这种场景下需要对图片里检测到的文本行进行一个转正的操作。在PaddleOCR系统内,
文本方向分类器主要用于图片非0度的场景下,在这种场景下需要对图片里检测到的文本行进行一个转正的操作。在PaddleOCR系统内,
文字检测之后得到的文本行图片经过仿射变换之后送入识别模型,此时只需要对文字进行一个0和180度的角度分类,因此PaddleOCR内置的
文字检测之后得到的文本行图片经过仿射变换之后送入识别模型,此时只需要对文字进行一个0和180度的角度分类,因此PaddleOCR内置的
文本方向分类器
**只支持了0和180度的分类**
。如果想支持更多角度,可以自己修改算法进行支持。
文本方向分类器
**只支持了0和180度的分类**
。如果想支持更多角度,可以自己修改算法进行支持。
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
![](
../imgs_results/angle_class_example.jpg
)
![](
../imgs_results/angle_class_example.jpg
)
<a
name=
"数据准备"
></a>
<a
name=
"数据准备"
></a>
## 数据准备
##
2.
数据准备
请按如下步骤设置数据集:
请按如下步骤设置数据集:
...
@@ -70,7 +70,7 @@ train/cls/train/word_002.jpg 180
...
@@ -70,7 +70,7 @@ train/cls/train/word_002.jpg 180
| ...
| ...
```
```
<a
name=
"启动训练"
></a>
<a
name=
"启动训练"
></a>
## 启动训练
##
3.
启动训练
将准备好的txt文件和图片文件夹路径分别写入配置文件的
`Train/Eval.dataset.label_file_list`
和
`Train/Eval.dataset.data_dir`
字段下,
`Train/Eval.dataset.data_dir`
字段下的路径和文件里记载的图片名构成了图片的绝对路径。
将准备好的txt文件和图片文件夹路径分别写入配置文件的
`Train/Eval.dataset.label_file_list`
和
`Train/Eval.dataset.data_dir`
字段下,
`Train/Eval.dataset.data_dir`
字段下的路径和文件里记载的图片名构成了图片的绝对路径。
...
@@ -99,7 +99,7 @@ PaddleOCR提供了多种数据增强方式,如果您希望在训练时加入
...
@@ -99,7 +99,7 @@ PaddleOCR提供了多种数据增强方式,如果您希望在训练时加入
*由于OpenCV的兼容性问题,扰动操作暂时只支持linux*
*由于OpenCV的兼容性问题,扰动操作暂时只支持linux*
<a
name=
"训练"
></a>
<a
name=
"训练"
></a>
## 训练
##
4.
训练
PaddleOCR支持训练和评估交替进行, 可以在
`configs/cls/cls_mv3.yml`
中修改
`eval_batch_step`
设置评估频率,默认每1000个iter评估一次。训练过程中将会保存如下内容:
PaddleOCR支持训练和评估交替进行, 可以在
`configs/cls/cls_mv3.yml`
中修改
`eval_batch_step`
设置评估频率,默认每1000个iter评估一次。训练过程中将会保存如下内容:
```
bash
```
bash
...
@@ -118,7 +118,7 @@ PaddleOCR支持训练和评估交替进行, 可以在 `configs/cls/cls_mv3.yml`
...
@@ -118,7 +118,7 @@ PaddleOCR支持训练和评估交替进行, 可以在 `configs/cls/cls_mv3.yml`
**注意,预测/评估时的配置文件请务必与训练一致。**
**注意,预测/评估时的配置文件请务必与训练一致。**
<a
name=
"评估"
></a>
<a
name=
"评估"
></a>
## 评估
##
5.
评估
评估数据集可以通过修改
`configs/cls/cls_mv3.yml`
文件里的
`Eval.dataset.label_file_list`
字段设置。
评估数据集可以通过修改
`configs/cls/cls_mv3.yml`
文件里的
`Eval.dataset.label_file_list`
字段设置。
...
@@ -129,7 +129,7 @@ python3 tools/eval.py -c configs/cls/cls_mv3.yml -o Global.checkpoints={path/to/
...
@@ -129,7 +129,7 @@ python3 tools/eval.py -c configs/cls/cls_mv3.yml -o Global.checkpoints={path/to/
```
```
<a
name=
"预测"
></a>
<a
name=
"预测"
></a>
## 预测
##
6.
预测
*
训练引擎的预测
*
训练引擎的预测
...
...
doc/doc_ch/config.md
浏览文件 @
2dae3b70
# 配置文件内容与生成
# 配置文件内容与生成
*
[
1. 可选参数列表
](
#1
)
*
[
2. 配置文件参数介绍
](
#2
)
*
[
3. 多语言配置文件生成
](
#3
)
<a
name=
"1"
></a>
## 1. 可选参数列表
## 1. 可选参数列表
以下列表可以通过
`--help`
查看
以下列表可以通过
`--help`
查看
...
@@ -9,11 +15,12 @@
...
@@ -9,11 +15,12 @@
| -c | ALL | 指定配置文件 | None |
**配置模块说明请参考 参数介绍**
|
| -c | ALL | 指定配置文件 | None |
**配置模块说明请参考 参数介绍**
|
| -o | ALL | 设置配置文件里的参数内容 | None | 使用-o配置相较于-c选择的配置文件具有更高的优先级。例如:
`-o Global.use_gpu=false`
|
| -o | ALL | 设置配置文件里的参数内容 | None | 使用-o配置相较于-c选择的配置文件具有更高的优先级。例如:
`-o Global.use_gpu=false`
|
<a
name=
"2"
></a>
## 2. 配置文件参数介绍
## 2. 配置文件参数介绍
以
`rec_chinese_lite_train_v2.0.yml `
为例
以
`rec_chinese_lite_train_v2.0.yml `
为例
###
2.1
Global
### Global
| 字段 | 用途 | 默认值 | 备注 |
| 字段 | 用途 | 默认值 | 备注 |
| :----------------------: | :---------------------: | :--------------: | :--------------------: |
| :----------------------: | :---------------------: | :--------------: | :--------------------: |
...
@@ -124,6 +131,8 @@
...
@@ -124,6 +131,8 @@
| drop_last | 是否丢弃因数据集样本数不能被 batch_size 整除而产生的最后一个不完整的mini-batch | True |
\
|
| drop_last | 是否丢弃因数据集样本数不能被 batch_size 整除而产生的最后一个不完整的mini-batch | True |
\
|
| num_workers | 用于加载数据的子进程个数,若为0即为不开启子进程,在主进程中进行数据加载 | 8 |
\
|
| num_workers | 用于加载数据的子进程个数,若为0即为不开启子进程,在主进程中进行数据加载 | 8 |
\
|
<a
name=
"3"
></a>
## 3. 多语言配置文件生成
## 3. 多语言配置文件生成
PaddleOCR目前已支持80种(除中文外)语种识别,
`configs/rec/multi_languages`
路径下提供了一个多语言的配置文件模版:
[
rec_multi_language_lite_train.yml
](
../../configs/rec/multi_language/rec_multi_language_lite_train.yml
)
。
PaddleOCR目前已支持80种(除中文外)语种识别,
`configs/rec/multi_languages`
路径下提供了一个多语言的配置文件模版:
[
rec_multi_language_lite_train.yml
](
../../configs/rec/multi_language/rec_multi_language_lite_train.yml
)
。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录