2022-08-29 15:37:13 +08:00
|
|
|
|
# 推理
|
2022-09-01 09:23:06 +08:00
|
|
|
|
|
|
|
|
|
MMOCR 为示例和应用,以 [ocr.py](/mmocr/ocr.py) 脚本形式,提供了方便使用的 API。
|
|
|
|
|
|
|
|
|
|
该 API 可以通过命令行执行,也可以在 python 脚本内调用。在该 API 里,MMOCR 里的所有模型能以独立模块的形式被调用或串联。
|
|
|
|
|
|
2022-09-01 12:45:28 +08:00
|
|
|
|
```{warning}
|
|
|
|
|
该脚本仍在重构过程中,在接下来的版本接口中有可能会发生变化。
|
|
|
|
|
```
|
2022-09-01 09:23:06 +08:00
|
|
|
|
|
|
|
|
|
## 案例一:文本检测
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
2022-09-01 12:45:28 +08:00
|
|
|
|
<img src="https://user-images.githubusercontent.com/24622904/187825864-8ead5acb-c3c5-443b-bd90-3f4b188fa315.jpg" height="250"/>
|
2022-09-01 09:23:06 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
**注:** 使用 TextSnake 检测模型对图像上的文本进行检测,并保存可视化的文件。
|
|
|
|
|
|
|
|
|
|
- 命令行执行:
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
python mmocr/ocr.py demo/demo_text_det.jpg --det TextSnake --img-out-dir demo/
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- Python 调用:
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
from mmocr.ocr import MMOCR
|
|
|
|
|
|
|
|
|
|
# 导入模型到内存
|
|
|
|
|
ocr = MMOCR(det='TextSnake')
|
|
|
|
|
|
|
|
|
|
# 推理
|
|
|
|
|
results = ocr.readtext('demo/demo_text_det.jpg', img_out_dir='demo/')
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 案例二:文本检测+识别
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
2022-09-01 12:45:28 +08:00
|
|
|
|
<img src="https://user-images.githubusercontent.com/24622904/187825445-d30cbfa6-5549-4358-97fe-245f08f4ed94.jpg" height="250"/>
|
2022-09-01 09:23:06 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
**注:** 使用 DB_r18 检测模型和 CRNN 识别模型,对 demo/demo_text_det.jpg 图片执行 ocr(检测+识别)推理,在终端打印结果并展示可视化结果。
|
|
|
|
|
|
|
|
|
|
- 命令行执行:
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
python mmocr/ocr.py --det DB_r18 --recog CRNN demo/demo_text_ocr.jpg --print-result --show
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```{note}
|
|
|
|
|
|
|
|
|
|
当用户从命令行执行脚本时,默认配置文件都会保存在 `configs/` 目录下。用户可以通过指定 `config_dir` 的值来自定义读取配置文件的文件夹。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- Python 调用:
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
from mmocr.ocr import MMOCR
|
|
|
|
|
|
|
|
|
|
# 导入模型到内存
|
2022-09-28 20:56:03 +08:00
|
|
|
|
ocr = MMOCR(det='DB_r18', recog='CRNN')
|
2022-09-01 09:23:06 +08:00
|
|
|
|
|
|
|
|
|
# 推理
|
|
|
|
|
results = ocr.readtext('demo/demo_text_ocr.jpg', print_result=True, show=True)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 案例三: 文本检测+识别+关键信息提取
|
|
|
|
|
|
|
|
|
|
<div align="center">
|
2022-09-01 12:45:28 +08:00
|
|
|
|
<img src="https://user-images.githubusercontent.com/24622904/187825451-6b043df9-10f7-4656-a528-45fe043df92b.jpg" height="250"/>
|
2022-09-01 09:23:06 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
**注:** 首先,使用 DB_r18 检测模型和 CRNN 识别模型,进行端到端的 ocr (检测+识别)推理,然后对得到的结果,使用 SDMGR 模型提取关键信息(KIE),并展示可视化结果。
|
|
|
|
|
|
|
|
|
|
- 命令行执行:
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
python mmocr/ocr.py demo/demo_kie.jpeg --det DB_r18 --recog CRNN --kie SDMGR --print-result --show
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```{note}
|
|
|
|
|
|
|
|
|
|
当用户从命令行执行脚本时,默认配置文件都会保存在 `configs/` 目录下。用户可以通过指定 `config_dir` 的值来自定义读取配置文件的文件夹。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- Python 调用:
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
from mmocr.ocr import MMOCR
|
|
|
|
|
|
|
|
|
|
# 导入模型到内存
|
|
|
|
|
ocr = MMOCR(det='DB_r18', recog='CRNN', kie='SDMGR')
|
|
|
|
|
|
|
|
|
|
# 推理
|
|
|
|
|
results = ocr.readtext('demo/demo_kie.jpeg', print_result=True, show=True)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## API 参数
|
|
|
|
|
|
|
|
|
|
该 API 有多个可供使用的参数列表。下表是 python 接口的参数。
|
|
|
|
|
|
|
|
|
|
**MMOCR():**
|
|
|
|
|
|
|
|
|
|
| 参数 | 类型 | 默认值 | 描述 |
|
|
|
|
|
| -------------- | ------------------ | -------- | ---------------------------------------------------------------------------------------- |
|
|
|
|
|
| `det` | 参考 **模型** 章节 | None | 文本检测算法 |
|
|
|
|
|
| `recog` | 参考 **模型** 章节 | None | 文本识别算法 |
|
|
|
|
|
| `kie` \[1\] | 参考 **模型** 章节 | None | 关键信息提取算法 |
|
|
|
|
|
| `config_dir` | str | configs/ | 用于存放所有配置文件的文件夹路径 |
|
|
|
|
|
| `det_config` | str | None | 指定检测模型的自定义配置文件路径 |
|
|
|
|
|
| `det_ckpt` | str | None | 指定检测模型的自定义参数文件路径 |
|
|
|
|
|
| `recog_config` | str | None | 指定识别模型的自定义配置文件路径 |
|
|
|
|
|
| `recog_ckpt` | str | None | 指定识别模型的自定义参数文件路径 |
|
|
|
|
|
| `kie_config` | str | None | 指定关键信息提取模型的自定义配置路径 |
|
|
|
|
|
| `kie_ckpt` | str | None | 指定关键信息提取的自定义参数文件路径 |
|
|
|
|
|
| `device` | str | None | 推理时使用的设备标识, 支持 `torch.device` 所包含的所有设备字符. 例如, 'cuda:0' 或 'cpu'. |
|
|
|
|
|
|
|
|
|
|
\[1\]: `kie` 当且仅当同时指定了文本检测和识别模型时才有效。
|
|
|
|
|
|
|
|
|
|
```{note}
|
|
|
|
|
|
|
|
|
|
mmocr 为了方便使用提供了预置的模型配置和对应的预训练权重,用户可以通过指定 `det` 和/或 `recog` 值来指定使用,这种方法等同于分别单独指定其对应的 `*_config` 和 `*_ckpt`。需要注意的是,手动指定 `*_config` 和 `*_ckpt` 会覆盖 `det` 和/或 `recog` 指定模型预置的配置和权重值。 同理 `kie`, `kie_config` 和 `kie_ckpt` 的参数设定逻辑相同。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### readtext()
|
|
|
|
|
|
|
|
|
|
| 参数 | 类型 | 默认值 | 描述 |
|
|
|
|
|
| -------------- | ----------------------- | -------- | --------------------------------------------------------------------- |
|
|
|
|
|
| `img` | str/list/tuple/np.array | **必填** | 图像,文件夹路径,np array 或 list/tuple (包含图片路径或 np arrays) |
|
|
|
|
|
| `img_out_dir` | str | None | 存放导出图片结果的文件夹 |
|
|
|
|
|
| `show` | bool | False | 是否在屏幕展示可视化结果 |
|
|
|
|
|
| `print_result` | bool | False | 是否展示每个图片的结果 |
|
|
|
|
|
|
|
|
|
|
以上所有参数在命令行同样适用,只需要在参数前简单添加两个连接符,并且将下参数中的下划线替换为连接符即可。
|
|
|
|
|
(*例如:* `img_out_dir` 变成了 `--img-out-dir`)
|
|
|
|
|
|
|
|
|
|
对于布尔类型参数,添加在命令中默认为 true。
|
|
|
|
|
(*例如:* `python mmocr/demo/ocr.py --det DB_r18 demo/demo_text_det.jpg --print_result` 意为 `print_result` 的参数值设置为 `True`)
|
|
|
|
|
|
|
|
|
|
## 模型
|
|
|
|
|
|
|
|
|
|
**文本检测:**
|
|
|
|
|
|
2022-10-09 12:43:23 +08:00
|
|
|
|
| 名称 | 引用 |
|
|
|
|
|
| ------------- | :----------------------------------------------------------------------------: |
|
|
|
|
|
| DB_r18 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#dbnet) |
|
|
|
|
|
| DB_r50 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#dbnet) |
|
|
|
|
|
| DBPP_r50 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#dbnetpp) |
|
|
|
|
|
| DRRG | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#drrg) |
|
|
|
|
|
| FCE_IC15 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#fcenet) |
|
|
|
|
|
| FCE_CTW_DCNv2 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#fcenet) |
|
|
|
|
|
| MaskRCNN_CTW | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#mask-r-cnn) |
|
|
|
|
|
| MaskRCNN_IC15 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#mask-r-cnn) |
|
|
|
|
|
| PANet_CTW | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#panet) |
|
|
|
|
|
| PANet_IC15 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#panet) |
|
|
|
|
|
| PS_CTW | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#psenet) |
|
|
|
|
|
| PS_IC15 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#psenet) |
|
|
|
|
|
| TextSnake | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textdet_models.html#textsnake) |
|
2022-09-01 09:23:06 +08:00
|
|
|
|
|
|
|
|
|
**文本识别:**
|
|
|
|
|
|
2022-10-09 12:43:23 +08:00
|
|
|
|
| 名称 | 引用 |
|
|
|
|
|
| ------------- | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
|
|
|
| ABINet | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#abinet) |
|
|
|
|
|
| ABINet_Vision | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#abinet) |
|
|
|
|
|
| CRNN | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#crnn) |
|
|
|
|
|
| MASTER | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#master) |
|
|
|
|
|
| NRTR_1/16-1/8 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#nrtr) |
|
|
|
|
|
| NRTR_1/8-1/4 | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#nrtr) |
|
|
|
|
|
| RobustScanner | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#robustscanner) |
|
|
|
|
|
| SAR | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#sar) |
|
|
|
|
|
| SATRN | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#satrn) |
|
|
|
|
|
| SATRN_sm | [链接](https://mmocr.readthedocs.io/zh_CN/dev-1.x/textrecog_models.html#satrn) |
|
2022-09-01 09:23:06 +08:00
|
|
|
|
|
|
|
|
|
**关键信息提取:**
|
|
|
|
|
|
2022-10-09 12:43:23 +08:00
|
|
|
|
| 名称 |
|
|
|
|
|
| ------------------------------------------------------------------- |
|
|
|
|
|
| [SDMGR](https://mmocr.readthedocs.io/zh_CN/dev-1.x/kie_models.html) |
|
2022-09-01 09:23:06 +08:00
|
|
|
|
|
|
|
|
|
## 其他需要注意
|
|
|
|
|
|
|
|
|
|
- 执行检测+识别的推理(端到端 ocr),需要同时定义 `det` 和 `recog` 参数
|
|
|
|
|
- 如果只需要执行检测,则 `recog` 参数设置为 `None`。
|
|
|
|
|
- 如果只需要执行识别,则 `det` 参数设置为 `None`。
|
|
|
|
|
|
|
|
|
|
如果你对新特性有任何建议,请随时开一个 issue,甚至可以提一个 PR:)
|