Skip to content

脚本工具

cnocr 包含了几个命令行工具,安装 cnocr 后即可使用。

图片预测

使用命令 cnocr predict 预测单个文件或文件夹中所有图片,以下是使用说明:

$ cnocr predict -h
Usage: cnocr predict [OPTIONS]

Options:
  -m, --rec-model-name TEXT       识别模型名称。默认值为 densenet_lite_136-gru
  -b, --rec-model-backend [pytorch|onnx]
                                  识别模型类型。默认值为 `onnx`
  -v, --rec-vocab-fp TEXT         识别模型使用的词表。默认取值为 `None` 表示使用系统设定的词表
  -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           画出检测与识别效果图时使用的字体文件
  --verbose                       是否打印详细日志信息。默认值为 `False`
  -h, --help                      Show this message and exit.

例如可以使用以下命令对图片 docs/examples/rand_cn1.png 进行文字识别:

$ cnocr 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-gru
  -b, --rec-model-backend [pytorch|onnx]
                                  识别模型类型。默认值为 `onnx`
  -v, --rec-vocab-fp TEXT         识别模型使用的词表。默认取值为 `None` 表示使用系统设定的词表
  -p, --pretrained-model-fp TEXT  识别模型使用训练好的模型。默认为 `None`,表示使用系统自带的预训练模型
  -c, --context TEXT              使用cpu还是 `gpu` 运行代码,也可指定为特定gpu,如`cuda:0`。默认为
                                  `cpu`
  -i, --eval-index-fp TEXT        待评估文件所在的索引文件,格式与训练时训练集索引文件相同,每行格式为 `<图片路径>
                                  <以空格分割的labels>`
  --image-folder TEXT             图片所在文件夹,相对于索引文件中记录的图片位置  [required]
  --batch-size INTEGER            batch size. 默认值:128
  -o, --output-dir TEXT           存放评估结果的文件夹。默认值:`eval_results`
  --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-gru`
  -i, --index-dir TEXT            索引文件所在的文件夹,会读取文件夹中的 train.tsv 和 dev.tsv 文件
                                  [required]
  --train-config-fp TEXT          识别模型训练使用的json配置文件,参考
                                  `docs/examples/train_config.json`
                                  [required]
  --finetuning                    是否为精调模式(精调模式使用更温柔的transform)。默认为 `False`
  -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-gru --index-dir data/test --train-config-fp docs/examples/train_config.json

训练数据的格式见文件夹 data/test 中的 train.tsvdev.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.

示例:

$ cnocr resave -i cnocr-v2.3-densenet_lite_136-gru-epoch=005.ckpt -o cnocr-v2.3-densenet_lite_136-gru-epoch=005-model.ckpt

PyTorch 模型导出为 ONNX 模型

把训练好的模型导出为 ONNX 格式。

$ cnocr export-onnx -h
Usage: cnocr export-onnx [OPTIONS]

  把训练好的识别模型导出为 ONNX 格式。

Options:
  -m, --rec-model-name TEXT   识别模型名称。默认值为 `densenet_lite_136-gru`
  -v, --rec-vocab-fp TEXT     识别模型使用的词表。默认取值为 `None` 表示使用系统设定的词表
  -i, --input-model-fp TEXT   输入的识别模型文件路径。 默认为 `None`,表示使用系统自带的预训练模型
  -o, --output-model-fp TEXT  输出的识别模型文件路径(.onnx)  [required]
  -h, --help                  Show this message and exit.

示例:

$ cnocr export-onnx -m densenet_lite_136-gru -i cnocr-v2.3-densenet_lite_136-gru-epoch=005-model.ckpt -o cnocr-v2.3-densenet_lite_136-gru-epoch=005-model.onnx