"src/runtime/vscode:/vscode.git/clone" did not exist on "1d28bf8b71fc441e7dcf10b753d29cd1d2e1fe81"
README.md 6.75 KB
Newer Older
liuhy's avatar
liuhy committed
1
2
3
4
5
6
7
8
# Paddle Ocr v5

## 论文
A Practical Ultra Lightweight OCR System

- https://arxiv.org/pdf/2009.09941

## 模型结构
liuhy's avatar
liuhy committed
9
详细结构通过netron( https://netron.app/ ) 查看
liuhy's avatar
liuhy committed
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
- DBNet
 ![alt text](Doc/Images/DBNet.png)

- CRNN
![alt text](Doc/Images/CRNN.png)
## 算法原理

使用DBNet对字符区域进行分隔,并对分割后的二值图用Vatti Clipping算法对字符区域多边形简化处理,找到精确的字符区域,然后将精确的字符图片送入到CRNN网络,CRNN负责提取图片的特征,学习字符序列的上下文关系,输出是一个概率分布序列(每个时间步对应一个字符类别的概率分布),CTC 层是 CRNN 的核心组成部分之一,它解决了如何将 RNN 输出的不定长概率序列对齐到不定长的目标标签序列(即真实文本)的问题,将输出的概率序列解码为最终的文本字符串。
![alt text](Doc/Images/pipeline.png)

## 环境配置

### Docker(方法一)

拉取镜像:

```plaintext
docker pull image.sourcefind.cn:5000/dcu/admin/base/migraphx:5.0.0-ubuntu22.04-dtk25.04.1-py3.10
```

创建并启动容器:

```plaintext
docker run --shm-size 16g --network=host --name=ppocr_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/ppocr_migraphx:/home/ppocr_migraphx -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash

# 激活dtk
source /opt/dtk/env.sh
```

### Dockerfile(方法二)

```plaintext
cd ./docker
docker build --no-cache -t ppocrv5_migraphx:1.0 .

docker run --shm-size 16g --network=host --name=ppocr_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/ppocr_migraphx:/home/ppocr_migraphx -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash

# 激活dtk
source /opt/dtk/env.sh
```

## 数据集

根据需求上传所需图像,测试图片位于Resource/Image下

## 推理

### Python版本推理

59
下面介绍如何运行Python代码示例,Python API调用示例的详细说明见Doc目录下的Tutorial_Python.md。
liuhy's avatar
liuhy committed
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

#### 设置环境变量

```
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```

#### 运行示例

```python
# 进入ppocrv5 migraphx工程根目录
cd <ppocrv5_migraphx> 
# 进入示例程序目录
cd Python/
# 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
liuhy's avatar
liuhy committed
77
如果测试环境是离线环境,可手动安装需要的依赖(shapely,pyclipper),依赖文件存放在3rdParty/rbuild_depend目录下
liuhy's avatar
liuhy committed
78
运行示例程序:
liuhy's avatar
liuhy committed
79
80
81
```
python inference.py
```
82
结果图片保存在当前目录下:res.jpg
liuhy's avatar
liuhy committed
83
84
85

### C++版本推理

86
下面介绍如何运行C++代码示例,C++ API调用示例的详细说明见Doc目录下的Tutorial_Cpp.md。
liuhy's avatar
liuhy committed
87
88

#### 安装OpenCV并构建工程
89
在path_to_ppocrv5_migraphx目录下执行以下命令:
liuhy's avatar
liuhy committed
90
```
91
sh ./3rdParty/buildOpencv.sh
liuhy's avatar
liuhy committed
92
93
94
95
96
97
98
99
100
```

#### 运行示例

```python
# 进入ppocrv5 migraphx工程根目录
cd <path_to_ppocrv5_migraphx> 

# 进入build目录
101
mkdir build && cd build
liuhy's avatar
liuhy committed
102
103
104
105
106
107

#编译
cmake .. && make 
#运行
./ppOcrV5cd 
```
108
结果图片保存在当前目录下:res.jpg
liuhy's avatar
liuhy committed
109
110
111
112
113

## result

### Python版本

114
输出结果中展示了识别到的字符,每个字符后面跟着一个置信度,置信度值越大,识别结果越准确。
liuhy's avatar
liuhy committed
115
116

```
117
118
119
120
121
122
123
124
125
126
'0', 0.991
纯臻营养护发素, 1.000
'0'.'9''9''3''6''0''4', 0.999
'1', 0.998
产品信息/参数, 0.934
'0'.'9''9''2''7''2''8', 0.999
'2', 0.999
('4''5'元/每公斤,'1''0''0'公斤起订), 0.970
'0'.'9''7''4''1''7', 0.999
'3', 0.999
liuhy's avatar
liuhy committed
127
每瓶'2''2'元,'1''0''0''0'瓶起订), 0.998
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
'0'.'9''9''3''9''7''6', 0.999
'4', 0.998
【品牌】:代加工方式/'0'EMODM, 0.959
'0'.'9''8''5''1''3''3', 0.998
'5', 0.998
【品名】:纯臻营养护发素, 0.997
'0'.'9''9''5''0''0''7', 0.999
'6', 0.995
【产品编号】:YM'-'X'-''3''0''1''1''0'.'9''6''8''9''9', 0.973
'7', 0.999
【净含量】:'2''2''0'ml, 0.994
'0'.'9''9''6''5''7''7', 0.999
'8', 0.998
【适用人群】:适合所有肤质, 0.997
'0'.'9''9''5''8''4''2', 0.999
'9', 0.997
【主要成分】:鲸蜡硬脂醇、燕麦B'-'葡聚, 0.976
'0'.'9''6''1''9''2''8', 0.999
'1''0', 1.000
糖、椰油酰胺丙基甜菜碱、泛醒, 0.996
'0'.'9''2''5''8''9''8', 0.999
'1''1', 0.999
(成品包材), 0.998
'0'.'9''7''2''5''7''3', 0.999
'1''2', 1.000
【主要功能】:可紧致头发磷层,从而达到, 0.992
'0'.'9''9''4''4''4''8', 0.999
'1''3', 0.999
即时持久改善头发光泽的效果,给干燥的头, 0.989
'0'.'9''9''0''1''9''8', 0.999
'1''4', 0.999
发足够的滋养, 0.999
'0'.'9''9''7''6''6''8', 0.999
花费了'0'.'4''5''7''3''3''5'秒, 0.993
[Time info] elapsed:578.6152 ms
liuhy's avatar
liuhy committed
163
164
165
166
```

### C++版本
```
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
ocr res :花费了'0'.'4''5''7''3''3''5'秒  0.984009
ocr res :'0'.'9''9''7'  0.773633
ocr res :发足够的滋养  0.96818
ocr res :'1'  0.697754
ocr res :'0''0'.'9''9''0''1''9'  0.656647
ocr res :即时持久改善头发光泽的效果,给干燥的头  0.996608
ocr res :  0
ocr res :【主要功能】:可紧致头发磷层,从而达到  0.993421
ocr res :'0'.'9''9''4''4'  0.677327
ocr res :  0
ocr res :'0'.'9''7''2'  0.637158
ocr res :(成品包材)  0.901937
ocr res :'1'  0.32251
ocr res :糖、椰油酰胺丙基甜菜碱、泛醒  0.993478
ocr res :'0'.'9''2''5'  0.586279
ocr res :'1''0'  0.547241
ocr res :【主要成分】:鲸蜡硬脂醇、燕麦B'-'葡聚  0.975303
ocr res :'0'.'9''1''9'  0.568408
ocr res :  0
ocr res :'0'.'9''9''5''2'  0.613647
ocr res :【适用人群】:适合所有肤质  0.996882
ocr res :'8'  0.378906
ocr res :'0'.'9''9'  0.595581
ocr res :【净含量】:'2''2''0'ml  0.835671
ocr res :'7'  0.356689
ocr res :【产品编号】:YM'-'X'-''3''0''1''1''0'.'9''6''8''9''9'  0.993695
ocr res :'6'  0.214355
ocr res :'0'.'9''9''5'  0.478052
ocr res :【品名】:纯臻营养护发素  0.996175
ocr res :'5'  0.594727
ocr res :  0
ocr res :'0'.'9''8''5'  0.55166
ocr res :【品牌】:代加工方式/'0'EMODM  0.917768
ocr res :每瓶'2''2'元,'1''0''0''0'瓶起订)  0.974644
ocr res :'0'.'9''9''3''9''7''6'  0.736755
ocr res :'3'  0.486572
ocr res :('4''5'元/每公斤,'1''0''0'公斤起订)  0.940028
ocr res :'0'.'9'm'7'  0.534668
ocr res :'2'  0.961426
ocr res :  0
ocr res :'0'.'9''9''2'  0.524121
ocr res :产品信息/参数  0.913853
ocr res :纯臻营养护发素'0'.'9''9''3''6''0''4'  0.964128
ocr res :'0'  0.380127
ocr res :The detection visualized imagesavedin./vis.jpg  0.94302
[Time info] elapsed: 389 ms
liuhy's avatar
liuhy committed
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
```
### 精度



## 应用场景
图片文字提取,票据扫描、工业铭牌识别等

### 算法类别

OCR

### 热点应用行业

制造,政府,医疗,科研,交通,教育

## 源码仓库及问题反馈
https://developer.sourcefind.cn/codes/modelzoo/ppocrv5_migraphx
 

## 参考资料

 https://zhuanlan.zhihu.com/p/43534801