CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包,支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖排文字的识别。自带了20+个训练好的识别模型,适用于不同应用场景,安装后即可直接使用。同时,CnOCR也提供简单的训练命令供使用者训练自己的模型。
1. 相关文档
2. 安装
pip install cnocr
国内安装源
pip install cnocr -i https://pypi.doubanio.com/simple
推荐使用python3.6及以上版本3. 使用
class CnOcr(object):
def __init__(
self,
rec_model_name: str = 'densenet_lite_136-fc',
*,
det_model_name: str = 'ch_PP-OCRv3_det',
cand_alphabet: Optional[Union[Collection, str]] = None,
context: str = 'cpu', # ['cpu', 'gpu', 'cuda']
rec_model_fp: Optional[str] = None,
rec_model_backend: str = 'onnx', # ['pytorch', 'onnx']
rec_vocab_fp: Union[str, Path] = VOCAB_FP,
rec_more_configs: Optional[Dict[str, Any]] = None,
rec_root: Union[str, Path] = data_dir(),
det_model_fp: Optional[str] = None,
det_model_backend: str = 'onnx', # ['pytorch', 'onnx']
det_more_configs: Optional[Dict[str, Any]] = None,
det_root: Union[str, Path] = det_data_dir(),
**kwargs,
)
参数说明:
参数 | 说明 |
---|---|
rec_model_name | 识别模型名称。默认为 densenet_lite_136-fc,可选模型地址:https://cnocr.readthedocs.io/zh/latest/models/ |
det_model_name | 检测模型名称。默认为 ch_PP-OCRv3_det,可选模型地址:https://cnocr.readthedocs.io/zh/latest/models/ |
cand_alphabet | 待识别字符所在的候选集合。默认为 None,表示不限定识别字符范围。取值可以是字符串,如 “0123456789”,或者字符列表,如 [“0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”]。 |
context | 预测使用的机器资源,可取值为字符串cpu、gpu、cuda:0等。默认为 cpu。此参数仅在 model_backend==‘pytorch’ 时有效。 |
rec_model_fp | 如果不使用系统自带的识别模型,可以通过此参数直接指定所使用的模型文件(.ckpt 或 .onnx 文件)。 |
rec_model_backend | pytorch’, or ‘onnx’。表明识别时是使用 PyTorch 版本模型,还是使用 ONNX 版本模型。 同样的模型,ONNX 版本的预测速度一般是 PyTorch 版本的 2倍左右。 默认为 ‘onnx’。 |
rec_vocab_fp | 识别字符集合的文件路径,即 label_cn.txt 文件路径。若训练的自有模型更改了字符集,看通过此参数传入新的字符集文件路径。 |
rec_more_configs | 识别模型初始化时传入的其他参数。 |
rec_root | 识别模型文件所在的根目录。 |
det_model_fp | 如果不使用系统自带的检测模型,可以通过此参数直接指定所使用的模型文件(.ckpt 或 .onnx 文件)。 |
det_model_backend | ‘pytorch’, or ‘onnx’。表明检测时是使用 PyTorch 版本模型,还是使用 ONNX 版本模型。 同样的模型,ONNX 版本的预测速度一般是 PyTorch 版本的 2倍左右。 默认为 ‘onnx’。 |
det_more_configs | dict,识别模型初始化时传入的其他参数。 |
det_root | 检测模型文件所在的根目录。 |
from cnocr import CnOcr
img_path = 'emoj.jpg'
ocr = CnOcr()
result = ocr.ocr(img_path)
# 具体参数设置参考:https://cnocr.readthedocs.io/zh/latest/usage/
备注:
- 首次使用 CnOCR 时,系统会自动下载 zip 格式的模型压缩文件,并存于 ~/.cnocr目录(Windows下默认路径为 C:\Users
\AppData\Roaming\cnocr)。 下载后的zip文件代码会自动对其解压,然后把解压后的模型相关目录放于~/.cnocr/2.2目录中。 - 如果系统无法自动成功下载zip文件,则需要手动从https://huggingface.co/breezedeus/cnstd-cnocr-models/tree/main下载此zip文件并把它放于 ~/.cnocr/2.2目录。