Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleOCR
提交
31ab300c
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看板
提交
31ab300c
编写于
6月 23, 2022
作者:
T
Topdu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[application] svtr ch model
上级
0a343fd3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
101 addition
and
0 deletion
+101
-0
applications/高精度中文识别模型.md
applications/高精度中文识别模型.md
+101
-0
未找到文件。
applications/高精度中文识别模型.md
0 → 100644
浏览文件 @
31ab300c
# 高精度中文场景文本识别模型SVTR
## 1. 简介
PP-OCRv3是百度开源的超轻量级场景文本检测识别模型库,其中超轻量的场景中文识别模型SVTR_LCNet使用了SVTR算法结构。为了保证速度,SVTR_LCNet将SVTR模型的Local Blocks替换为LCNet,使用两层Global Blocks。在中文场景中,经过多次优化,SVTR_LCNet的最终精度为79.4%。具体的:
-
GTC:Attention指导CTC训练策略;
-
TextConAug:挖掘文字上下文信息的数据增广策略;
-
TextRotNet:自监督的预训练模型;
-
UDML:联合互学习策略;
-
UIM:无标注数据挖掘方案。
其中
*UIM:无标注数据挖掘方案*
使用了高精度的SVTR中文模型,该模型在PP-OCRv3识别的数据集上训练,精度为82.5%。本项目主要介绍SVTR中文模型如何使用。
aistudio项目链接:
[
高精度中文场景文本识别模型SVTR
](
https://aistudio.baidu.com/aistudio/projectdetail/4263032
)
## 2. SVTR中文模型使用
### 环境准备
本任务基于Aistudio完成, 具体环境如下:
-
操作系统: Linux
-
PaddlePaddle: 2.3
-
PaddleOCR: dygraph
下载 PaddleOCR代码
```
bash
git clone
-b
dygraph https://github.com/PaddlePaddle/PaddleOCR
```
安装依赖库
```
bash
pip
install
-r
PaddleOCR/requirements.txt
-i
https://mirror.baidu.com/pypi/simple
```
### 快速使用
获取SVTR中文模型文件,请扫码填写问卷,加入PaddleOCR官方交流群获取全部OCR垂类模型下载链接、《动手学OCR》电子书等全套OCR学习资料🎁
<div
align=
"center"
>
<img
src=
"https://ai-studio-static-online.cdn.bcebos.com/dd721099bd50478f9d5fb13d8dd00fad69c22d6848244fd3a1d3980d7fefc63e"
width =
"150"
height =
"150"
/>
</div>
```
bash
# 解压模型文件
tar
xf svtr_ch_high_accuracy.tar
```
预测中文文本,以下图为例:
![](
https://ai-studio-static-online.cdn.bcebos.com/511f6d65f0e84ccc8c5668eafbe7feb73b26c40befec4bd58dde64b59bf340a1
)
预测命令:
```
bash
# CPU预测
python tools/infer_rec.py
-c
configs/rec/rec_svtrnet_ch.yml
-o
Global.pretrained_model
=
./svtr_ch_high_accuracy/best_accuracy Global.infer_img
=
./doc/imgs_words/ch/word_1.jpg Global.use_gpu
=
False
# GPU预测
#python tools/infer_rec.py -c configs/rec/rec_svtrnet_ch.yml -o Global.pretrained_model=./svtr_ch_high_accuracy/best_accuracy Global.infer_img=./doc/imgs_words/ch/word_1.jpg Global.use_gpu=True
```
可以看到最后打印结果为
-
result: 韩国小馆 0.9853458404541016
0.
9853458404541016为预测置信度。
### 推理模型导出与预测
inference 模型(paddle.jit.save保存的模型) 一般是模型训练,把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。 训练过程中保存的模型是checkpoints模型,保存的只有模型的参数,多用于恢复训练等。 与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合于实际系统集成。
运行识别模型转inference模型命令,如下:
```
bash
python tools/export_model.py
-c
configs/rec/rec_svtrnet_ch.yml
-o
Global.pretrained_model
=
./svtr_ch_high_accuracy/best_accuracy Global.save_inference_dir
=
./inference/svtr_ch
```
转换成功后,在目录下有三个文件:
```
shell
inference/svtr_ch/
├── inference.pdiparams
# 识别inference模型的参数文件
├── inference.pdiparams.info
# 识别inference模型的参数信息,可忽略
└── inference.pdmodel
# 识别inference模型的program文件
```
inference模型预测,命令如下:
```
bash
# CPU预测
python3 tools/infer/predict_rec.py
--image_dir
=
"./doc/imgs_words/ch/word_1.jpg"
--rec_algorithm
=
'SVTR'
--rec_model_dir
=
./inference/svtr_ch/
--rec_image_shape
=
'3, 32, 320'
--rec_char_dict_path
=
ppocr/utils/ppocr_keys_v1.txt
--use_gpu
=
False
# GPU预测
#python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/ch/word_1.jpg" --rec_algorithm='SVTR' --rec_model_dir=./inference/svtr_ch/ --rec_image_shape='3, 32, 320' --rec_char_dict_path=ppocr/utils/ppocr_keys_v1.txt --use_gpu=True
```
**注意**
-
使用PP-OCRv3识别SVTR_LCNet进行推理时,不需要使用--rec_algorithm指定算法名称,使用默认的推理方式即为PP-OCRv3识别的推理过程。但是使用SVTR算法时,需要指定--rec_algorithm='SVTR'
-
如果使用自定义字典训练的模型,需要将--rec_char_dict_path=ppocr/utils/ppocr_keys_v1.txt修改为自定义的字典
-
--rec_image_shape='3, 32, 320' 该参数不能去掉
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录