python ocr 识别中文_cnocr: 极简的中文OCR Python包

Update 2020.04.21: 发布 cnocr V1.1.0

更轻量的 cnocr-V1.1.0 :最小模型只有 6.8M。具体说明见:BreezeDeus:更轻量的 cnocr-V1.1.0 :最小模型只有 6.8M​zhuanlan.zhihu.com

Update 2019.07.25: 发布 cnocr V1.0.0

cnocr发布了预测效率更高的新版本v1.0.0。具体说明见https://github.com/breezedeus/cnocr/blob/master/README_cn.md​github.com

主要更新如下:crnn模型支持可变长预测,提升预测效率

支持利用特定数据对现有模型进行精调(继续训练)

修复bugs,如训练时accuracy一直为0等

虽然现在的对话机器人主要理解的还是用户的文本信息,但对图片(尤其是表情)、视频和语音的理解,也逐渐地会成为机器人的标配能力。

理解图片的一种最简单的方式,就是识别图片中的文字,做这个事的技术主要有两种:OCR(Optical Character Recognition,光学字符识别),或者STR(Scene Text Recognition,场景文字识别)。

OCR主要针对文字比较规范,没什么底色或底色单一的图片,类文字扫描后获得的图片,如:

STR针对的图片是更一般的复杂场景,比如随手拍的照片中广告牌上的文字,店铺名称等,如:

显然STR比OCR难得多,所以使用的方法也会更复杂更耗资源。很多应用场景使用OCR技术就足够了。

因为项目需要,我之前找了下已有可用的开源中文OCR工具,发现居然没有特别好用的。 所以就自己封装了一个中文OCR Python包,称之为https://github.com/breezedeus/cnocr​github.com

cnocr主打使用简单,功能极简。

以下是使用说明,欢迎大家试用,帮忙提issue。

cnocr

cnocr是用来做中文OCR的Python 3包。cnocr自带了训练好的识别模型,所以安装后即可直接使用。

目前使用的识别模型是crnn,识别准确度约为 98.7%。

本项目起源于我们自己 (爱因互动 Ein+) 内部的项目需求,所以非常感谢公司的支持。

特色

本项目的大部分代码都fork自 crnn-mxnet-chinese-text-recognition,感谢作者。 但源项目使用起来不够方便,所以我在此基础上做了一些封装和重构。主要变化如下:不再使用需要额外安装的MXNet WarpCTC Loss,改用原生的 MXNet CTC Loss。所以安装极简!

自带训练好的中文OCR识别模型。不再需要额外训练!

增加了预测(或推断)接口。所以使用方便!

安装

pip install cnocr注意:请使用Python3 (3.4, 3.5, 3.6以及之后版本应该都行),没测过Python2下是否ok。

使用方法

以如下图片文件为例,文件内容如下:

预测

代码引用

from cnocr import CnOcr

ocr = CnOcr()

res = ocr.ocr_for_single_line('examples/rand_cn1.png')

print("Predicted Chars:", res)

首次使用cnocr时,系统会自动从Dropbox下载zip格式的模型压缩文件,并存于 ~/.cnocr目录。 下载后的zip文件代码会自动对其解压,然后把解压后的模型相关文件放于~/.cnocr/models目录。 如果系统不能自动从Dropbox成功下载zip文件,则需要手动下载此zip文件并把它放于 ~/.cnocr目录。 另一个下载地址是百度云盘(提取码为pg26)。 放置好zip文件后,后面的事代码就会自动执行了。

上面预测代码段的返回结果如下:

Predicted Chars: ['笠', '淡', '嘿', '骅', '谧', '鼎', '皋', '姚', '歼', '蠢', '驼', '耳', '胬', '挝', '涯', '狗', '蒽', '子', '犷']

脚本引用

也可以使用脚本模式预测:

python scripts/cnocr_predict.py --file examples/rand_cn1.png

返回结果和前面相同:

Predicted Chars: ['笠', '淡', '嘿', '骅', '谧', '鼎', '皋', '姚', '歼', '蠢', '驼', '耳', '胬', '挝', '涯', '狗', '蒽', '子', '犷']

训练自己的模型

cnocr安装后即可直接使用,但如果你非要训练自己的模型,请参考下面命令:

python scripts/cnocr_train.py --cpu 2 --num_proc 4 --loss ctc --dataset cn_ocr

未来工作支持空格识别

修bugs(目前代码还比较凌乱。。)

完善测试用例

考虑使用MxNet的命令式编程重写代码,提升灵活性

尝试新模型,如 DenseNet、ResNet,进一步提升识别准确率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值