脚本工具
cnocr 包含了几个命令行工具,安装 cnocr 后即可使用。
图片预测
使用命令 cnocr predict
预测单个文件或文件夹中所有图片,以下是使用说明:
> cnocr predict -h
Usage: cnocr predict [OPTIONS]
模型预测
Options:
-m, --rec-model-name TEXT 识别模型名称。默认值为 densenet_lite_136-fc
-b, --rec-model-backend [pytorch|onnx]
识别模型类型。默认值为 `onnx`
-d, --det-model-name TEXT 检测模型名称。默认值为 ch_PP-OCRv3_det
--det-model-backend [pytorch|onnx]
检测模型类型。默认值为 `onnx`
-p, --pretrained-model-fp TEXT 识别模型使用训练好的模型。默认为 `None`,表示使用系统自带的预训练模型
-c, --context TEXT 使用cpu还是 `gpu` 运行代码,也可指定为特定gpu,如`cuda:0`。默认为
`cpu`
-i, --img-file-or-dir TEXT 输入图片的文件路径或者指定的文件夹 [required]
-s, --single-line 是否输入图片只包含单行文字。对包含单行文字的图片,不做按行切分;否则会先对图片按行分割后
再进行识别
--draw-results-dir TEXT 画出的检测与识别效果图所存放的目录;取值为 `None` 表示不画图
--draw-font-path TEXT 画出检测与识别效果图时使用的字体文件
-h, --help Show this message and exit.
例如可以使用以下命令对图片 docs/examples/rand_cn1.png
进行文字识别:
> cnstd predict -i docs/examples/rand_cn1.png -s
具体使用也可参考文件 Makefile 。
模型评估
使用命令 cnocr evaluate
在指定的数据集上评估模型效果,以下是使用说明:
> cnocr evaluate -h
Usage: cnocr evaluate [OPTIONS]
评估模型效果。检测模型使用 `det_model_name='naive_det'` 。
Options:
-m, --rec-model-name TEXT 识别模型名称。默认值为 densenet_lite_136-fc
-b, --rec-model-backend [pytorch|onnx]
识别模型类型。默认值为 `onnx`
-p, --pretrained-model-fp TEXT 识别模型使用训练好的模型。默认为 `None`,表示使用系统自带的预训练模型
-c, --context TEXT 使用cpu还是 `gpu` 运行代码,也可指定为特定gpu,如`cuda:0`。默认为
`cpu`
-i, --eval-index-fp TEXT 待评估文件所在的索引文件,格式与训练时训练集索引文件相同,每行格式为 `<图片路径>
<以空格分割的labels>`
--img-folder TEXT 图片所在文件夹,相对于索引文件中记录的图片位置 [required]
--batch-size INTEGER batch size. 默认值:128
-o, --output-dir TEXT 存放评估结果的文件夹。默认值:`eval_results`
-v, --verbose whether to print details to screen
-h, --help Show this message and exit.
例如可以使用以下命令评估 data/test/dev.tsv
中指定的所有样本:
> cnocr evaluate -i data/test/dev.tsv --img-folder data/images
具体使用也可参考文件 Makefile 。
模型训练
使用命令 cnocr train
训练文本检测模型,以下是使用说明:
> cnocr train -h
Usage: cnocr train [OPTIONS]
训练识别模型
Options:
-m, --rec-model-name TEXT 识别模型名称。默认值为 `densenet_lite_136-fc`
-i, --index-dir TEXT 索引文件所在的文件夹,会读取文件夹中的 train.tsv 和 dev.tsv 文件
[required]
--train-config-fp TEXT 识别模型训练使用的json配置文件,参考
`docs/examples/train_config.json`
[required]
-r, --resume-from-checkpoint TEXT
恢复此前中断的训练状态,继续训练识别模型。所以文件中应该包含训练状态。默认为
`None`
-p, --pretrained-model-fp TEXT 导入的训练好的识别模型,作为模型初始值。优先级低于"--resume-from-
checkpoint",当传入"--resume-from-
checkpoint"时,此传入失效。默认为 `None`
-h, --help Show this message and exit.
例如可以使用以下命令进行训练:
> cnocr train -m densenet_lite_136-fc --index-dir data/test --train-config-fp docs/examples/train_config.json
训练数据的格式见文件夹 data/test 中的 train.tsv 和 dev.tsv 文件。
具体使用也可参考文件 Makefile 。
模型API服务
CnOCR 自 V2.2.1 开始加入了基于 FastAPI 的HTTP服务。开启服务需要安装几个额外的包,可以使用以下命令安装:
> pip install cnocr[serve]
使用命令 cnocr serve
启动API服务,以下是使用说明:
> cnocr serve -h
Usage: cnocr serve [OPTIONS]
开启HTTP服务。
Options:
-H, --host TEXT server host. Default: "0.0.0.0"
-p, --port INTEGER server port. Default: 8501
--reload whether to reload the server when the codes have been
changed
-h, --help Show this message and exit.
例如使用以下命令启动服务:
> cnocr serve -p 8501
服务调用方式参考 HTTP服务 。
模型转存
训练好的模型会存储训练状态,使用命令 cnocr resave
去掉与预测无关的数据,降低模型大小。
> cnocr resave -h
Usage: cnocr resave [OPTIONS]
训练好的识别模型会存储训练状态,使用此命令去掉预测时无关的数据,降低模型大小
Options:
-i, --input-model-fp TEXT 输入的识别模型文件路径 [required]
-o, --output-model-fp TEXT 输出的识别模型文件路径 [required]
-h, --help Show this message and exit.
PyTorch 模型导出为 ONNX 模型
把训练好的模型导出为 ONNX 格式。 当前无法导出 *-gru
模型, 具体说明见:Exporting GRU RNN to ONNX - PyTorch Forums 。后续版本会修复此问题。
> cnocr export-onnx -h
Usage: cnocr export-onnx [OPTIONS]
把训练好的识别模型导出为 ONNX 格式。 当前无法导出 `*-gru` 模型,
具体说明见:https://discuss.pytorch.org/t/exporting-gru-rnn-to-onnx/27244 ,
后续版本会修复此问题。
Options:
-m, --rec-model-name TEXT 识别模型名称。默认值为 `densenet_lite_136-fc`
-i, --input-model-fp TEXT 输入的识别模型文件路径。 默认为 `None`,表示使用系统自带的预训练模型
-o, --output-model-fp TEXT 输出的识别模型文件路径(.onnx) [required]
-h, --help Show this message and exit.