whl.md 20.7 KB
Newer Older
W
WenmuZhou 已提交
1 2
# paddleocr package使用说明

W
WenmuZhou 已提交
3
## 1 快速上手
W
WenmuZhou 已提交
4

W
WenmuZhou 已提交
5
### 1.1 安装whl包
W
WenmuZhou 已提交
6 7

pip安装
8

W
WenmuZhou 已提交
9
```bash
W
WenmuZhou 已提交
10
pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本
W
WenmuZhou 已提交
11 12 13
```

本地构建并安装
14

W
WenmuZhou 已提交
15
```bash
W
WenmuZhou 已提交
16 17
python3 setup.py bdist_wheel
pip3 install dist/paddleocr-x.x.x-py3-none-any.whl # x.x.x是paddleocr的版本号
W
WenmuZhou 已提交
18 19
```

W
WenmuZhou 已提交
20
## 2 使用
21

W
WenmuZhou 已提交
22
### 2.1 代码使用
23

W
WenmuZhou 已提交
24 25 26
paddleocr whl包会自动下载ppocr轻量级模型作为默认模型,可以根据第3节**自定义模型**进行自定义更换。

* 检测+方向分类器+识别全流程
27

W
WenmuZhou 已提交
28 29
```python
from paddleocr import PaddleOCR, draw_ocr
30

W
WenmuZhou 已提交
31 32
# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
33
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
34 35 36 37 38 39 40
img_path = 'PaddleOCR/doc/imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

# 显示结果
from PIL import Image
41

W
WenmuZhou 已提交
42 43 44 45
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
W
WenmuZhou 已提交
46
im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')
W
WenmuZhou 已提交
47 48 49
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```
50

W
WenmuZhou 已提交
51
结果是一个list,每个item包含了文本框,文字和识别置信度
52

W
WenmuZhou 已提交
53 54 55 56 57 58
```bash
[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]]
[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]]
[[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]]
......
```
59

W
WenmuZhou 已提交
60 61 62 63 64 65 66
结果可视化

<div align="center">
    <img src="../imgs_results/whl/11_det_rec.jpg" width="800">
</div>

* 检测+识别
67

W
WenmuZhou 已提交
68 69
```python
from paddleocr import PaddleOCR, draw_ocr
70 71

ocr = PaddleOCR()  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
72
img_path = 'PaddleOCR/doc/imgs/11.jpg'
73
result = ocr.ocr(img_path, cls=False)
W
WenmuZhou 已提交
74 75 76 77 78
for line in result:
    print(line)

# 显示结果
from PIL import Image
79

W
WenmuZhou 已提交
80 81 82 83
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
W
WenmuZhou 已提交
84
im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')
W
WenmuZhou 已提交
85 86 87
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```
88

W
WenmuZhou 已提交
89
结果是一个list,每个item包含了文本框,文字和识别置信度
90

W
WenmuZhou 已提交
91 92 93 94
```bash
[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]]
[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]]
[[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]]
W
WenmuZhou 已提交
95
......
W
WenmuZhou 已提交
96
```
97

W
WenmuZhou 已提交
98 99 100 101 102 103
结果可视化

<div align="center">
    <img src="../imgs_results/whl/11_det_rec.jpg" width="800">
</div>

W
WenmuZhou 已提交
104
* 方向分类器+识别
105

W
WenmuZhou 已提交
106 107
```python
from paddleocr import PaddleOCR
108 109

ocr = PaddleOCR(use_angle_cls=True)  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
110 111 112 113 114
img_path = 'PaddleOCR/doc/imgs_words/ch/word_1.jpg'
result = ocr.ocr(img_path, det=False, cls=True)
for line in result:
    print(line)
```
115

W
WenmuZhou 已提交
116
结果是一个list,每个item只包含识别结果和识别置信度
117

W
WenmuZhou 已提交
118 119 120 121
```bash
['韩国小馆', 0.9907421]
```

W
WenmuZhou 已提交
122
* 单独执行检测
123

W
WenmuZhou 已提交
124 125
```python
from paddleocr import PaddleOCR, draw_ocr
126 127

ocr = PaddleOCR()  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
128
img_path = 'PaddleOCR/doc/imgs/11.jpg'
W
WenmuZhou 已提交
129
result = ocr.ocr(img_path, rec=False)
W
WenmuZhou 已提交
130 131 132 133 134 135 136
for line in result:
    print(line)

# 显示结果
from PIL import Image

image = Image.open(img_path).convert('RGB')
W
WenmuZhou 已提交
137
im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')
W
WenmuZhou 已提交
138 139 140
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```
141

W
WenmuZhou 已提交
142
结果是一个list,每个item只包含文本框
143

W
WenmuZhou 已提交
144 145 146 147
```bash
[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]]
[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]]
[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]]
W
WenmuZhou 已提交
148
......
W
WenmuZhou 已提交
149
```
150

W
WenmuZhou 已提交
151 152 153 154 155 156 157 158
结果可视化


<div align="center">
    <img src="../imgs_results/whl/11_det.jpg" width="800">
</div>

* 单独执行识别
159

W
WenmuZhou 已提交
160 161
```python
from paddleocr import PaddleOCR
162 163

ocr = PaddleOCR()  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
164
img_path = 'PaddleOCR/doc/imgs_words/ch/word_1.jpg'
W
WenmuZhou 已提交
165
result = ocr.ocr(img_path, det=False)
W
WenmuZhou 已提交
166 167 168
for line in result:
    print(line)
```
169

W
WenmuZhou 已提交
170
结果是一个list,每个item只包含识别结果和识别置信度
171

W
WenmuZhou 已提交
172 173 174 175
```bash
['韩国小馆', 0.9907421]
```

W
WenmuZhou 已提交
176
* 单独执行方向分类器
177

W
WenmuZhou 已提交
178 179
```python
from paddleocr import PaddleOCR
180 181

ocr = PaddleOCR(use_angle_cls=True)  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
182 183 184 185 186
img_path = 'PaddleOCR/doc/imgs_words/ch/word_1.jpg'
result = ocr.ocr(img_path, det=False, rec=False, cls=True)
for line in result:
    print(line)
```
187

W
WenmuZhou 已提交
188
结果是一个list,每个item只包含分类结果和分类置信度
189

W
WenmuZhou 已提交
190 191 192 193
```bash
['0', 0.9999924]
```

W
WenmuZhou 已提交
194
### 2.2 通过命令行使用
W
WenmuZhou 已提交
195 196

查看帮助信息
197

W
WenmuZhou 已提交
198 199 200 201
```bash
paddleocr -h
```

W
WenmuZhou 已提交
202
* 检测+方向分类器+识别全流程
203

W
WenmuZhou 已提交
204
```bash
205
paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --use_angle_cls true --rec_image_shape 3,48,320
W
WenmuZhou 已提交
206
```
207

W
WenmuZhou 已提交
208
结果是一个list,每个item包含了文本框,文字和识别置信度
209

W
WenmuZhou 已提交
210
```bash
211
[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('纯臻营养护发素', 0.9658738374710083)]
W
WenmuZhou 已提交
212 213 214 215
......
```

* 检测+识别
216

W
WenmuZhou 已提交
217
```bash
218
paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --rec_image_shape 3,48,320
W
WenmuZhou 已提交
219
```
220

W
WenmuZhou 已提交
221
结果是一个list,每个item包含了文本框,文字和识别置信度
222

W
WenmuZhou 已提交
223
```bash
224
[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('纯臻营养护发素', 0.9658738374710083)]
W
WenmuZhou 已提交
225
......
W
WenmuZhou 已提交
226 227
```

W
WenmuZhou 已提交
228
* 方向分类器+识别
229

W
WenmuZhou 已提交
230
```bash
231
paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --use_angle_cls true --det false --rec_image_shape 3,48,320
W
WenmuZhou 已提交
232 233 234
```

结果是一个list,每个item只包含识别结果和识别置信度
235

W
WenmuZhou 已提交
236
```bash
237
['韩国小馆', 0.994467]
W
WenmuZhou 已提交
238 239
```

W
WenmuZhou 已提交
240
* 单独执行检测
241

W
WenmuZhou 已提交
242 243 244
```bash
paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --rec false
```
245

W
WenmuZhou 已提交
246
结果是一个list,每个item只包含文本框
247

W
WenmuZhou 已提交
248
```bash
249 250
[[27.0, 459.0], [136.0, 459.0], [136.0, 479.0], [27.0, 479.0]]
[[28.0, 429.0], [372.0, 429.0], [372.0, 445.0], [28.0, 445.0]]
W
WenmuZhou 已提交
251
......
W
WenmuZhou 已提交
252 253 254
```

* 单独执行识别
255

W
WenmuZhou 已提交
256
```bash
257
paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false --rec_image_shape 3,48,320
W
WenmuZhou 已提交
258 259 260
```

结果是一个list,每个item只包含识别结果和识别置信度
261

W
WenmuZhou 已提交
262
```bash
263
['韩国小馆', 0.994467]
W
WenmuZhou 已提交
264 265
```

W
WenmuZhou 已提交
266
* 单独执行方向分类器
267

W
WenmuZhou 已提交
268
```bash
W
WenmuZhou 已提交
269
paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --use_angle_cls true --det false --rec false
W
WenmuZhou 已提交
270 271 272
```

结果是一个list,每个item只包含分类结果和分类置信度
273

W
WenmuZhou 已提交
274 275 276 277
```bash
['0', 0.9999924]
```

W
WenmuZhou 已提交
278
## 3 自定义模型
279 280

当内置模型无法满足需求时,需要使用到自己训练的模型。 首先,参照[inference.md](./inference.md) 第一节转换将检测、分类和识别模型转换为inference模型,然后按照如下方式使用
W
WenmuZhou 已提交
281

W
WenmuZhou 已提交
282
### 3.1 代码使用
283

W
WenmuZhou 已提交
284 285
```python
from paddleocr import PaddleOCR, draw_ocr
286

W
WenmuZhou 已提交
287
# 模型路径下必须含有model和params文件
288 289 290
ocr = PaddleOCR(det_model_dir='{your_det_model_dir}', rec_model_dir='{your_rec_model_dir}',
                rec_char_dict_path='{your_rec_char_dict_path}', cls_model_dir='{your_cls_model_dir}',
                use_angle_cls=True)
W
WenmuZhou 已提交
291
img_path = 'PaddleOCR/doc/imgs/11.jpg'
W
WenmuZhou 已提交
292
result = ocr.ocr(img_path, cls=True)
W
WenmuZhou 已提交
293 294 295 296 297
for line in result:
    print(line)

# 显示结果
from PIL import Image
298

W
WenmuZhou 已提交
299 300 301 302
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
W
WenmuZhou 已提交
303
im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')
W
WenmuZhou 已提交
304 305 306 307
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```

W
WenmuZhou 已提交
308
### 3.2 通过命令行使用
W
WenmuZhou 已提交
309 310

```bash
W
WenmuZhou 已提交
311
paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir {your_det_model_dir} --rec_model_dir {your_rec_model_dir} --rec_char_dict_path {your_rec_char_dict_path} --cls_model_dir {your_cls_model_dir} --use_angle_cls true
W
WenmuZhou 已提交
312 313
```

W
WenmuZhou 已提交
314
## 4 使用网络图片或者numpy数组作为输入
W
WenmuZhou 已提交
315

W
WenmuZhou 已提交
316
### 4.1 网络图片
W
WenmuZhou 已提交
317

W
WenmuZhou 已提交
318
- 代码使用
319

W
WenmuZhou 已提交
320
```python
321 322
from paddleocr import PaddleOCR, draw_ocr, download_with_progressbar

W
WenmuZhou 已提交
323 324
# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
325
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
326 327 328 329 330 331 332
img_path = 'http://n.sinaimg.cn/ent/transform/w630h933/20171222/o111-fypvuqf1838418.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

# 显示结果
from PIL import Image
333 334 335

download_with_progressbar(img_path, 'tmp.jpg')
image = Image.open('tmp.jpg').convert('RGB')
W
WenmuZhou 已提交
336 337 338
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
W
WenmuZhou 已提交
339
im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')
W
WenmuZhou 已提交
340 341 342
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```
343

W
WenmuZhou 已提交
344
- 命令行模式
345

W
WenmuZhou 已提交
346 347 348 349
```bash
paddleocr --image_dir http://n.sinaimg.cn/ent/transform/w630h933/20171222/o111-fypvuqf1838418.jpg --use_angle_cls=true
```

W
WenmuZhou 已提交
350
### 4.2 numpy数组
351

W
WenmuZhou 已提交
352
仅通过代码使用时支持numpy数组作为输入
353

W
WenmuZhou 已提交
354
```python
W
WenmuZhou 已提交
355
import cv2
W
WenmuZhou 已提交
356
from paddleocr import PaddleOCR, draw_ocr
357

W
WenmuZhou 已提交
358 359
# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
360
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
W
WenmuZhou 已提交
361 362 363
img_path = 'PaddleOCR/doc/imgs/11.jpg'
img = cv2.imread(img_path)
# img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY), 如果你自己训练的模型支持灰度图,可以将这句话的注释取消
W
WenmuZhou 已提交
364
result = ocr.ocr(img, cls=True)
W
WenmuZhou 已提交
365 366 367 368 369
for line in result:
    print(line)

# 显示结果
from PIL import Image
370

W
WenmuZhou 已提交
371 372 373 374
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
W
WenmuZhou 已提交
375
im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')
W
WenmuZhou 已提交
376 377 378 379
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
```

W
WenmuZhou 已提交
380
## 5 参数说明
W
WenmuZhou 已提交
381 382 383 384 385 386 387

| 字段                    | 说明                                                                                                                                                                                                                 | 默认值                  |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|
| use_gpu                 | 是否使用GPU                                                                                                                                                                                                          | TRUE                    |
| gpu_mem                 | 初始化占用的GPU内存大小                                                                                                                                                                                              | 8000M                   |
| image_dir               | 通过命令行调用时执行预测的图片或文件夹路径                                                                                                                                                                           |                         |
| det_algorithm           | 使用的检测算法类型                                                                                                                                                                                                   | DB                      |
W
WenmuZhou 已提交
388
| det_model_dir          |  检测模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 `~/.paddleocr/det`;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件 |   None        |
W
WenmuZhou 已提交
389 390 391 392 393 394 395 396
| det_max_side_len        | 检测算法前向时图片长边的最大尺寸,当长边超出这个值时会将长边resize到这个大小,短边等比例缩放                                                                                                                         | 960                     |
| det_db_thresh           | DB模型输出预测图的二值化阈值                                                                                                                                                                                         | 0.3                     |
| det_db_box_thresh       | DB模型输出框的阈值,低于此值的预测框会被丢弃                                                                                                                                                                           | 0.5                     |
| det_db_unclip_ratio     | DB模型输出框扩大的比例                                                                                                                                                                                               | 2                       |
| det_east_score_thresh   | EAST模型输出预测图的二值化阈值                                                                                                                                                                                       | 0.8                     |
| det_east_cover_thresh   | EAST模型输出框的阈值,低于此值的预测框会被丢弃                                                                                                                                                                         | 0.1                     |
| det_east_nms_thresh     | EAST模型输出框NMS的阈值                                                                                                                                                                                              | 0.2                     |
| rec_algorithm           | 使用的识别算法类型                                                                                                                                                                                                   | CRNN                    |
W
WenmuZhou 已提交
397
| rec_model_dir          | 识别模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 `~/.paddleocr/rec`;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件 | None |
W
WenmuZhou 已提交
398 399
| rec_image_shape         | 识别算法的输入图片尺寸                                                                                                                                                                                             | "3,32,320"              |
| rec_batch_num           | 进行识别时,同时前向的图片数                                                                                                                                                                                         | 30                      |
W
WenmuZhou 已提交
400 401
| max_text_length         | 识别算法能识别的最大文字长度                                                                                                                                                                                         | 25                      |
| rec_char_dict_path      | 识别模型字典路径,当rec_model_dir使用方式2传参时需要修改为自己的字典路径                                                                                                                                                | ./ppocr/utils/ppocr_keys_v1.txt                        |
W
WenmuZhou 已提交
402
| use_space_char          | 是否识别空格                                                                                                                                                                                                         | TRUE                    |
W
WenmuZhou 已提交
403
| drop_score          | 对输出按照分数(来自于识别模型)进行过滤,低于此分数的不返回                                                                                                                                                                                                         | 0.5                    |
W
WenmuZhou 已提交
404 405 406 407 408
| use_angle_cls          | 是否加载分类模型                                                                                                                                                                                                         | FALSE                    |
| cls_model_dir          | 分类模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 `~/.paddleocr/cls`;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件                                                                                 | None                    |
| cls_image_shape          | 分类算法的输入图片尺寸                                                                           | "3, 48, 192"                    |
| label_list          | 分类算法的标签列表                                                                           | ['0', '180']                  |
| cls_batch_num          | 进行分类时,同时前向的图片数                                                                          |30                 |
W
WenmuZhou 已提交
409
| enable_mkldnn           | 是否启用mkldnn                                                                                                                                                                                                       | FALSE                   |
W
WenmuZhou 已提交
410
| use_zero_copy_run           | 是否通过zero_copy_run的方式进行前向                                                                                                                                                                               | FALSE                   |
W
WenmuZhou 已提交
411
| lang                     | 模型语言类型,目前支持 目前支持中英文(ch)、英文(en)、法语(french)、德语(german)、韩语(korean)、日语(japan)                                                                                                                                                                                               | ch                    |
W
WenmuZhou 已提交
412 413
| det                     | 前向时使用启动检测                                                                                                                                                                                                   | TRUE                    |
| rec                     | 前向时是否启动识别                                                                                                                                                                                                   | TRUE                    |
W
WenmuZhou 已提交
414
| cls                     | 前向时是否启动分类 (命令行模式下使用use_angle_cls控制前向是否启动分类)                                                                                                                                                                                                | FALSE                    |
文幕地方's avatar
文幕地方 已提交
415
| show_log                     | 是否打印logger信息                                                                                                                                               | FALSE                    |
W
WenmuZhou 已提交
416
| type                     | 执行ocr或者表格结构化, 值可选['ocr','structure']                                                                                                                                                                                             | ocr                    |
417 418
| ocr_version                     | OCR模型版本,可选PP-OCRv3, PP-OCRv2, PP-OCR。PP-OCRv3 目前仅支持中、英文的检测和识别模型,方向分类器模型;PP-OCRv2 目前仅支持中文的检测和识别模型;PP-OCR支持中文的检测,识别,多语种识别,方向分类器等模型                                                                                                                                        | PP-OCRv3                   |
| structure_version                     | 表格结构化模型版本,可选 PP-STRUCTURE。PP-STRUCTURE支持表格结构化模型                                                                                                                                                                                        | PP-STRUCTURE                    |