type
status
date
slug
summary
tags
category
icon
password
URL
Rating
V2.3
新版说明
CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包,支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖排文字的识别。相比于 CnOCR
V2.2.*
版本,新发布的 V2.3
版本中,主要模型都经过了重新训练和精调,精度比旧版模型更高。V2.2
中包含了一些非常小的模型(如 densenet_lite_124-fc
、densenet_lite_134-gru
等),这些模型参数太少导致精度欠佳,被使用次数也不多。V2.3
在删除这些微型模型的同时,考虑到机器性能的不断改进,以及用户使用过程中的真实反馈,加入了两个参数量更多的模型系列,可供精度要求更高的应用场景使用。V2.3
主要包含了 3 个规模从小到大的模型系列:densenet_lite_136-gru
、densenet_lite_246-gru_base
、densenet_lite_666-gru_large
。它们对应的信息如下,其中densenet_lite_136-gru
与 V2.2
中对应模型有相同结构:V2.3 模型系列 | 模型参数量 | 模型文件大小 |
densenet_lite_136-gru | 3.1 M | 12 M |
densenet_lite_246-gru_base | 6.6 M | 25 M |
densenet_lite_666-gru_large | 21.3 M | 82 M |
与之前版本不同,
V2.3
中的模型按使用场景进行了分类,分为以下几大类:scene
:场景图片,适合识别一般拍照图片中的文字。此类模型以scene-
开头,如模型scene-densenet_lite_136-gru
。
doc
:文档图片,适合识别规则文档的截图图片,如书籍扫描件等。此类模型以doc-
开头,如模型doc-densenet_lite_136-gru
。
number
:仅识别纯数字(只能识别0~9
十个数字)图片,适合银行卡号、身份证号等场景。此类模型以number-
开头,如模型number-densenet_lite_136-gru
。此系列具体说明参考:CnOCR 纯数字识别新模型 | Breezedeus.com 。
general
: 通用场景,适合图片无明显倾向的一般图片。此类模型无特定开头,与旧版模型名称保持一致,如模型densenet_lite_136-gru
。
以上说明仅供参考,具体选择模型时建议以实际效果为准。
<ins/>
模型训练及效果对比:小、中、大模型
V2.3
的模型训练包括两个步骤:- 预训练:从 0 开始利用千万级别数据量训练模型,获得预训练模型;
- 精调:针对不同使用场景,利用场景对应的百万级别数据量精调预训练模型,获得最终的精调模型。
预训练对比
以下是
densenet_lite_136-gru
、densenet_lite_246-gru_base
、densenet_lite_666-gru_large
3 个模型预训练时期对应的曲线。可以发现,随着模型规模逐渐变大,模型精度在迅速提升。精调
以下各图展示了不同场景下对不同规模的预训练模型进行精调而得到的各种场景模型。不同场景精调时使用的训练数据各有不同,着重偏向特定场景。从各图中可明显观察到,随着模型规模的逐渐变大,模型精度也在迅速提升。
场景图片(Scene)
scene
:场景图片,适合识别一般拍照图片中的文字。此类模型以scene-
开头,如模型scene-densenet_lite_136-gru
。
文档图片(Doc)
doc
:文档图片,适合识别规则文档的截图图片,如书籍扫描件等。此类模型以doc-
开头,如模型doc-densenet_lite_136-gru
。
通用图片(General)
general
: 通用场景,适合图片无明显倾向的一般图片。此类模型无特定开头,与旧版模型名称保持一致,如模型densenet_lite_136-gru
。
精度对比:V2.2
vs. V2.3
V2.3
仅保留了 V2.2
中存在的 densenet_lite_136-gru
模型,只是此模型本身也做了重新的训练和精调。接下来对比
V2.2
和 V2.3
中densenet_lite_136-gru
模型在两个真实数据集上的测试效果。P2T-doc 数据集是对 P2T 在线网页服务中用户真实上传图片标注获得,标注图片主要偏文档图片。Baidu-scene 数据集摘选自百度开放的场景图片数据集,对应图片主要是场景图片。
评估指标包括 CER 和 Complete Match。Char Error Rate (CER) 为字错误率,值越低表示模型效果越好。而 Complete Match 表示所有测试样本中,模型预测完全正确(对一个样本的预测字符序列与其真实字符序列完全一致)的样本比例,故值越高表示模型效果越好。
从下图可看出
V2.3
的新版densenet_lite_136-gru
模型,较之 V2.2
的旧版densenet_lite_136-gru
模型,精度在两个数据集和两个指标上都有提升。在线 Demo
可以在 HuggingFace 上的 CnOCR Demo 上传自己的照片验证所有模型的效果(需要梯子 🪜 才可访问,具体说明见 这里)。没有梯子可以访问我在阿里的 ModelScope 上创建的 CnOCR Demo:https://www.modelscope.cn/studios/Breezedeus/CnOCR-Demo。不过 ModelScope 上的 Demo 体验不太好,如果有梯子 🪜 请优先使用 HuggingFace 上的 Demo 吧。
检测模型会极大影响最终的识别效果,可以在不变动识别模型的基础上多尝试几个检测模型看效果;或者上传单行文字图片,然后在页面左侧勾选
单行文字模式(不使用检测模型)
,这样可以不使用检测模型而只使用识别模型。模型的获取方式和使用说明
V2.3
中的模型覆盖了 3 个规模(densenet_lite_136-gru
、densenet_lite_246-gru_base
、densenet_lite_666-gru_large
)和 4 个使用场景(scene
、doc
、number
和 general
)。densenet_lite_136-gru
系列模型当前已开源可免费使用,使用时可自动下载。首次使用 CnOCR 时,系统会自动下载 zip 格式的识别模型压缩文件,并存于 ~/.cnocr
目录(Windows下默认路径为 C:\Users\<username>\AppData\Roaming\cnocr
)。 下载后的zip文件代码会自动对其解压,然后把解压后的模型相关目录放于~/.cnocr/2.3
目录中。如果系统无法自动成功下载zip文件,则需要手动从 cnstd-cnocr-models 下载此zip文件并把它放于
~/.cnocr/2.3
目录。如果下载太慢,也可以从 百度云盘 下载, 提取码为 nocr
。densenet_lite_246-gru_base
系列模型当前仅供 知识星球 CnOCR/CnSTD/P2T 私享群 会员使用。densenet_lite_666-gru_large
系列模型,购买后可使用。模型名称( rec_model_name ) | 模型获取方式 | 模型文件大小 | 支持语言 | 是否支持竖排文字识别 |
densenet_lite_136-gru 🆕 | 开源 | 12 M | 简体中文、英文、数字 | ✖️ |
scene-densenet_lite_136-gru 🆕 | 开源 | 12 M | 简体中文、英文、数字 | ✖️ |
doc-densenet_lite_136-gru 🆕 | 开源 | 12 M | 简体中文、英文、数字 | ✖️ |
densenet_lite_246-gru_base 🆕 | 星球会员专享 | 25 M | 简体中文、英文、数字 | ✖️ |
scene-densenet_lite_246-gru_base 🆕 | 星球会员专享 | 25 M | 简体中文、英文、数字 | ✖️ |
doc-densenet_lite_246-gru_base 🆕 | 星球会员专享 | 25 M | 简体中文、英文、数字 | ✖️ |
densenet_lite_666-gru_large 🆕 | 购买链接:B站、Lemon Squeezy | 82 M | 简体中文、英文、数字 | ✖️ |
scene-densenet_lite_666-gru_large 🆕 | 购买链接:B站、Lemon Squeezy | 82 M | 简体中文、英文、数字 | ✖️ |
doc-densenet_lite_666-gru_large 🆕 | 购买链接:B站、Lemon Squeezy | 82 M | 简体中文、英文、数字 | ✖️ |
number-densenet_lite_136-fc 🆕 | 开源 | 2.7 M | 纯数字(仅包含 0~9 十个数字) | ✖️ |
number-densenet_lite_136-gru 🆕 | 星球会员专享 | 5.5 M | 纯数字(仅包含 0~9 十个数字) | ✖️ |
number-densenet_lite_666-gru_large 🆕 | 购买链接:B站、Lemon Squeezy | 55 M | 纯数字(仅包含 0~9 十个数字) | ✖️ |
ch_PP-OCRv3 | 开源 | 10 M | 简体中文、英文、数字 | ✔️ |
ch_ppocr_mobile_v2.0 | 开源 | 4.2 M | 简体中文、英文、数字 | ✔️ |
en_PP-OCRv3 | 开源 | 8.5 M | 英文、数字 | ✔️ |
en_number_mobile_v2.0 | 开源 | 1.8 M | 英文、数字 | ✔️ |
chinese_cht_PP-OCRv3 | 开源 | 11 M | 繁体中文、英文、数字 | ✖️ |
下载模型zip文件后,把它们放于
~/.cnocr/2.3
目录(Windows下默认路径为 C:\Users\<username>\AppData\Roaming\cnocr
)。CnOCR 会自动对其进行解压并使用(如有问题,请关注使用时输出的log信息)。如果文件放在其他路径下,CnOCR 无法自动找到,初始化时可通过 rec_vocab_fp
传入对应路径,具体参考下面的示例。一般应用场景
densenet_lite_136-gru
应该就够用。建议先用自己的应用图片(多试几张)在 CnOCR 在线 Demo 上验证效果后再决定是否需要更大更高精度的模型。模型使用说明
首先,请确保用开源的模型跑通了 CnOCR >= V2.3 ,否则下载完更大的付费模型也跑不起来。详细安装和使用说明看 CnOCR 在线文档 就行。遇到问题可以在这里评论,或者加入群聊与我沟通,但请注意帮你跑通代码不在星主的服务范围之内(参考 星球说明)。
使用方法和 CnOCR 中其他模型一样,只需把识别模型名称对应的参数
rec_model_name
设置为对应的识别模型即可,使用方法如下:<ins/>
分享视频
有问题可以在这里评论,或者加入群聊与我沟通,谢谢。
- 作者:Breezedeus
- 链接:https://www.breezedeus.com/article/cnocr-v2.3-better-more
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章