Merge pull request #188 from breezedeus/dev fix readthedocs error
Merge pull request #188 from breezedeus/dev
fix readthedocs error
📖 文档 | 🛠️ 安装 | 🧳 可用模型 | 🕹 模型训练 | 🛀🏻 在线Demo | 💬 交流群
English | 中文
CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包,支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖排文字的识别。自带了20+个 训练好的模型,适用于不同应用场景,安装后即可直接使用。同时,CnOCR也提供简单的训练命令供使用者训练自己的模型。欢迎扫码加入微信交流群:
作者也维护 知识星球 CnOCR/CnSTD私享群 ,欢迎加入。知识星球私享群会陆续发布一些CnOCR/CnSTD相关的私有资料,包括更详细的训练教程,未公开的模型,使用过程中遇到的难题解答等。本群也会发布OCR/STD相关的最新研究资料。此外,私享群中作者每月提供两次免费特有数据的训练服务。
见 CnOCR在线文档 。
CnOCR 从 V2.2 开始,内部自动调用文字检测引擎 CnSTD 进行文字检测和定位。所以 CnOCR V2.2 不仅能识别排版简单的印刷体文字图片,如截图图片,扫描件等,也能识别一般图片中的场景文字。
以下是一些不同场景的调用示例。
所有参数都使用默认值即可。如果发现效果不够好,多调整下各个参数看效果,最终往往能获得比较理想的精度。
from cnocr import CnOcr img_fp = './docs/examples/huochepiao.jpeg' ocr = CnOcr() # 所有参数都使用默认值 out = ocr.ocr(img_fp) print(out)
识别结果:
针对 排版简单的印刷体文字图片,如截图图片,扫描件图片等,可使用 det_model_name='naive_det',相当于不使用文本检测模型,而使用简单的规则进行分行。
det_model_name='naive_det'
Note det_model_name='naive_det' 的效果相当于 V2.2 之前(V2.0.*, V2.1.*)的 CnOCR 版本。
Note
det_model_name='naive_det' 的效果相当于 V2.2 之前(V2.0.*, V2.1.*)的 CnOCR 版本。
V2.2
V2.0.*
V2.1.*
使用 det_model_name='naive_det' 的最大优势是速度快,劣势是对图片比较挑剔。如何判断是否该使用此检测模型呢?最简单的方式就是拿应用图片试试效果,效果好就用,不好就不用。
from cnocr import CnOcr img_fp = './docs/examples/multi-line_cn1.png' ocr = CnOcr(det_model_name='naive_det') out = ocr.ocr(img_fp) print(out)
采用来自 PaddleOCR(之后简称 ppocr)的中文识别模型 rec_model_name='ch_PP-OCRv3' 进行识别。
rec_model_name='ch_PP-OCRv3'
from cnocr import CnOcr img_fp = './docs/examples/shupai.png' ocr = CnOcr(rec_model_name='ch_PP-OCRv3') out = ocr.ocr(img_fp) print(out)
虽然中文检测和识别模型也能识别英文,但专为英文文字训练的检测器和识别器往往精度更高。如果是纯英文的应用场景,建议使用来自 ppocr 的英文检测模型 det_model_name='en_PP-OCRv3_det', 和英文识别模型 rec_model_name='en_PP-OCRv3' 。
det_model_name='en_PP-OCRv3_det'
rec_model_name='en_PP-OCRv3'
from cnocr import CnOcr img_fp = './docs/examples/en_book1.jpeg' ocr = CnOcr(det_model_name='en_PP-OCRv3_det', rec_model_name='en_PP-OCRv3') out = ocr.ocr(img_fp) print(out)
采用来自ppocr的繁体识别模型 rec_model_name='chinese_cht_PP-OCRv3' 进行识别。
rec_model_name='chinese_cht_PP-OCRv3'
from cnocr import CnOcr img_fp = './docs/examples/fanti.jpg' ocr = CnOcr(rec_model_name='chinese_cht_PP-OCRv3') # 识别模型使用繁体识别模型 out = ocr.ocr(img_fp) print(out)
使用此模型时请注意以下问题:
识别精度一般,不是很好;
除了繁体字,对标点、英文、数字的识别都不好;
此模型不支持竖排文字的识别。
如果明确知道待识别的图片是单行文字图片(如下图),可以使用类函数 CnOcr.ocr_for_single_line() 进行识别。这样就省掉了文字检测的时间,速度会快一倍以上。
CnOcr.ocr_for_single_line()
from cnocr import CnOcr img_fp = './docs/examples/helloworld.jpg' ocr = CnOcr() out = ocr.ocr_for_single_line(img_fp) print(out)
核酸疫苗截图识别
身份证识别
饭店小票识别
嗯,顺利的话一行命令即可。
pip install cnocr
安装速度慢的话,可以指定国内的安装源,如使用豆瓣源:
pip install cnocr -i https://pypi.doubanio.com/simple
Note 请使用 Python3(3.6以及之后版本应该都行),没测过Python2下是否ok。
请使用 Python3(3.6以及之后版本应该都行),没测过Python2下是否ok。
更多说明可见 安装文档。
Warning 如果电脑中从未安装过 PyTorch,OpenCV python包,初次安装可能会遇到问题,但一般都是常见问题,可以自行百度/Google解决。
Warning
如果电脑中从未安装过 PyTorch,OpenCV python包,初次安装可能会遇到问题,但一般都是常见问题,可以自行百度/Google解决。
PyTorch
OpenCV
det_model_name
rec_model_name
Done
V1.0.0
Doing
空格
V1.1.0
V2.0.0
开源不易,如果此项目对您有帮助,可以考虑 给作者加点油🥤,鼓鼓气💪🏻 。
官方代码库:https://github.com/breezedeus/cnocr。
CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包,支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖排文字的识别。自带了20+个训练好的识别模型,适用于不同应用场景,安装后即可直接使用。同时,CnOCR也提供简单的训练命令供使用者训练自己的模型。
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
📖 文档 | 🛠️ 安装 | 🧳 可用模型 | 🕹 模型训练 | 🛀🏻 在线Demo | 💬 交流群
English | 中文
CnOCR
CnOCR 是 Python 3 下的文字识别(Optical Character Recognition,简称OCR)工具包,支持简体中文、繁体中文(部分模型)、英文和数字的常见字符识别,支持竖排文字的识别。自带了20+个 训练好的模型,适用于不同应用场景,安装后即可直接使用。同时,CnOCR也提供简单的训练命令供使用者训练自己的模型。欢迎扫码加入微信交流群:
作者也维护 知识星球 CnOCR/CnSTD私享群 ,欢迎加入。知识星球私享群会陆续发布一些CnOCR/CnSTD相关的私有资料,包括更详细的训练教程,未公开的模型,使用过程中遇到的难题解答等。本群也会发布OCR/STD相关的最新研究资料。此外,私享群中作者每月提供两次免费特有数据的训练服务。
详细文档
见 CnOCR在线文档 。
使用说明
CnOCR 从 V2.2 开始,内部自动调用文字检测引擎 CnSTD 进行文字检测和定位。所以 CnOCR V2.2 不仅能识别排版简单的印刷体文字图片,如截图图片,扫描件等,也能识别一般图片中的场景文字。
以下是一些不同场景的调用示例。
不同场景的调用示例
常见的图片识别
所有参数都使用默认值即可。如果发现效果不够好,多调整下各个参数看效果,最终往往能获得比较理想的精度。
识别结果:
排版简单的印刷体截图图片识别
针对 排版简单的印刷体文字图片,如截图图片,扫描件图片等,可使用
det_model_name='naive_det'
,相当于不使用文本检测模型,而使用简单的规则进行分行。使用
det_model_name='naive_det'
的最大优势是速度快,劣势是对图片比较挑剔。如何判断是否该使用此检测模型呢?最简单的方式就是拿应用图片试试效果,效果好就用,不好就不用。识别结果:
每一个手机号码和邮件地址背后
都会对应着一个账户–这个账
户可以是信用卡账户、借记卡账
户,也包括邮局汇款、手机代
收、电话代收、预付费卡和点卡
等多种形式。
竖排文字识别
采用来自 PaddleOCR(之后简称 ppocr)的中文识别模型
rec_model_name='ch_PP-OCRv3'
进行识别。识别结果:
英文识别
虽然中文检测和识别模型也能识别英文,但专为英文文字训练的检测器和识别器往往精度更高。如果是纯英文的应用场景,建议使用来自 ppocr 的英文检测模型
det_model_name='en_PP-OCRv3_det'
, 和英文识别模型rec_model_name='en_PP-OCRv3'
。识别结果:
繁体中文识别
采用来自ppocr的繁体识别模型
rec_model_name='chinese_cht_PP-OCRv3'
进行识别。使用此模型时请注意以下问题:
识别精度一般,不是很好;
除了繁体字,对标点、英文、数字的识别都不好;
此模型不支持竖排文字的识别。
识别结果:
单行文字的图片识别
如果明确知道待识别的图片是单行文字图片(如下图),可以使用类函数
CnOcr.ocr_for_single_line()
进行识别。这样就省掉了文字检测的时间,速度会快一倍以上。更多应用示例
核酸疫苗截图识别
身份证识别
饭店小票识别
安装
嗯,顺利的话一行命令即可。
安装速度慢的话,可以指定国内的安装源,如使用豆瓣源:
更多说明可见 安装文档。
可使用的模型
可使用的检测模型
det_model_name
可使用的识别模型
rec_model_name
未来工作
Done
)V1.0.0
)Doing
)Doing
)空格
识别(sinceV1.1.0
)V1.1.0
)V2.0.0
)V2.2
)给作者来杯咖啡
开源不易,如果此项目对您有帮助,可以考虑 给作者加点油🥤,鼓鼓气💪🏻 。
官方代码库:https://github.com/breezedeus/cnocr。