Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
自由游戏开发者
CnOCR
提交
1594ad97
CnOCR
项目概览
自由游戏开发者
/
CnOCR
与 Fork 源项目一致
Fork自
Cloud IDE / CnOCR
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
CnOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1594ad97
编写于
7月 20, 2022
作者:
B
breezedeus
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs
上级
c7fb7928
变更
9
展开全部
隐藏空白更改
内联
并排
Showing
9 changed file
with
227 addition
and
131 deletion
+227
-131
README.md
README.md
+23
-3
cnocr/cli.py
cnocr/cli.py
+1
-0
cnocr/cn_ocr.py
cnocr/cn_ocr.py
+1
-1
docs/index.md
docs/index.md
+4
-2
docs/install.md
docs/install.md
+18
-2
docs/models.md
docs/models.md
+46
-20
docs/requirements.txt
docs/requirements.txt
+5
-4
docs/usage.md
docs/usage.md
+126
-96
mkdocs.yml
mkdocs.yml
+3
-3
未找到文件。
README.md
浏览文件 @
1594ad97
...
...
@@ -14,7 +14,7 @@
[
📖文档
](
https://cnocr.readthedocs.io/zh/latest/
)
|
[
🛠️安装
](
https://cnocr.readthedocs.io/zh/latest/install/
)
|
[
🧳自带模型
](
https://cnocr.readthedocs.io/zh/latest/models/
)
|
[
🔔
在线Demo
](
https://share.streamlit.io/breezedeus/cnstd/st-deploy/cnstd/app.py
)
|
[
📟
在线Demo
](
https://share.streamlit.io/breezedeus/cnstd/st-deploy/cnstd/app.py
)
|
[
💬交流群
](
https://cnocr.readthedocs.io/zh/latest/contact/
)
</div>
...
...
@@ -162,6 +162,26 @@ print(out)
</div>
### 单行文字的图片识别
如果明确知道待识别的图片是单行文字图片(如下图),可以使用类函数
`CnOcr.ocr_for_single_line()`
进行识别。这样就省掉了文字检测的时间,速度会快一倍以上。
<div
align=
"center"
>
<img
src=
"./docs/examples/helloworld.jpg"
alt=
"单行文本识别"
width=
"300px"
/>
</div>
调用代码如下:
```
python
from
cnocr
import
CnOcr
img_fp
=
'./docs/examples/helloworld.jpg'
ocr
=
CnOcr
()
out
=
ocr
.
ocr_for_single_line
(
img_fp
)
print
(
out
)
```
### 更多应用示例
*
**核酸疫苗截图识别**
...
...
@@ -240,7 +260,7 @@ pip install cnocr -i https://pypi.doubanio.com/simple
| ch_PP-OCRv3 | X | √ | ppocr | 10 M | 简体中文、英文、数字 | √ |
| ch_ppocr_mobile_v2.0 | X | √ | ppocr | 4.2 M | 简体中文、英文、数字 | √ |
|
**en_PP-OCRv3**
| X | √ | ppocr | 8.5 M |
**英文**
、数字 | √ |
|
**en_number_mobile_v2.0**
| X | √ | ppocr | 1.8
M
|
**英文**
、数字 | √ |
|
**en_number_mobile_v2.0**
| X | √ | ppocr | 1.8
M
|
**英文**
、数字 | √ |
|
**chinese_cht_PP-OCRv3**
| X | √ | ppocr | 11 M |
**繁体中文**
、英文、数字 | X |
## 未来工作
...
...
@@ -256,7 +276,7 @@ pip install cnocr -i https://pypi.doubanio.com/simple
*
[x] 基于 PyTorch 训练更高效的模型
*
[x] 支持列格式的文字识别
*
[
x] 打通与 [CnStd
](
https://github.com/breezedeus/cnstd
)
的无缝衔接(since
`V2.2`
)
-
[ ] 支持更多的应用场景,如公式识别、表格识别、版面分析等
*
[ ] 支持更多的应用场景,如公式识别、表格识别、版面分析等
## 给作者来杯咖啡
...
...
cnocr/cli.py
浏览文件 @
1594ad97
...
...
@@ -208,6 +208,7 @@ def draw_ocr_results(image_fp, ocr_outs, out_draw_fp, font_path):
help
=
'识别模型类型。默认值为 `onnx`'
,
)
@
click
.
option
(
'-d'
,
'--det-model-name'
,
type
=
str
,
default
=
'ch_PP-OCRv3_det'
,
...
...
cnocr/cn_ocr.py
浏览文件 @
1594ad97
...
...
@@ -94,7 +94,7 @@ class CnOcr(object):
若训练的自有模型更改了字符集,看通过此参数传入新的字符集文件路径。
rec_more_configs (Optional[Dict[str, Any]]): 识别模型初始化时传入的其他参数。
rec_root (Union[str, Path]): 识别模型文件所在的根目录。
Linux/Mac下默认值为 `~/.cnocr`,表示模型文件所处文件夹类似 `~/.cnocr/2.
1
/densenet_lite_136-fc`。
Linux/Mac下默认值为 `~/.cnocr`,表示模型文件所处文件夹类似 `~/.cnocr/2.
2
/densenet_lite_136-fc`。
Windows下默认值为 `C:/Users/<username>/AppData/Roaming/cnocr`。
det_model_fp (Optional[str]): 如果不使用系统自带的检测模型,可以通过此参数直接指定所使用的模型文件('.ckpt' 文件)
det_model_backend (str): 'pytorch', or 'onnx'。表明检测时是使用 PyTorch 版本模型,还是使用 ONNX 版本模型。
...
...
docs/index.md
浏览文件 @
1594ad97
# CnO
cr
# CnO
CR
[
**CnO
cr**
](
https://github.com/breezedeus/cnocr
)
是
**Python 3**
下的
**文字识别**
(
**Optical Character Recognition**
,简称
**OCR**
)工具包,支持
**简体中文**
、
**繁体中文**
(部分模型)、
**英文**
和
**数字**
的常见字符识别,支持竖排文字的识别。自带了
**10+个**
[
训练好的识别模型
](
models.md
)
,安装后即可直接使用。欢迎扫码加入
[
QQ交流群
](
contact.md
)
。
[
**CnO
CR**
](
https://github.com/breezedeus/cnocr
)
是
**Python 3**
下的
**文字识别**
(
**Optical Character Recognition**
,简称
**OCR**
)工具包,支持
**简体中文**
、
**繁体中文**
(部分模型)、
**英文**
和
**数字**
的常见字符识别,支持竖排文字的识别。自带了
**20+个**
[
训练好的识别模型
](
models.md
)
,适用于不同应用场景
,安装后即可直接使用。欢迎扫码加入
[
QQ交流群
](
contact.md
)
。
作者也维护
**知识星球**
[
**CnOCR/CnSTD私享群**
](
https://t.zsxq.com/FEYZRJQ
)
,欢迎加入。
**知识星球私享群**
会陆续发布一些CnOCR/CnSTD相关的私有资料,包括
**更详细的训练教程**
,
**未公开的模型**
,使用过程中遇到的难题解答等。本群也会发布OCR/STD相关的最新研究资料。此外,
**私享群中作者每月提供两次免费特有数据的训练服务**
。
...
...
@@ -18,6 +18,8 @@ pip install cnocr
更多说明可见
[
安装文档
](
install.md
)
。
> 如果电脑中从未安装过 `PyTorch`,`OpenCV` python包,初次安装可能会遇到问题,但一般都是常见问题,可以自行百度/Google解决。
## 使用简单
使用
`CnOcr.ocr()`
识别下图:
...
...
docs/install.md
浏览文件 @
1594ad97
## 安装
嗯,
安装真的很简单
。
嗯,
顺利的话一行命令即可
。
```
bash
pip
install
cnocr
...
...
@@ -12,7 +12,23 @@ pip install cnocr
pip
install
cnocr
-i
https://pypi.doubanio.com/simple
```
> 注意:请使用 **Python3**(3.6以及之后版本应该都行),没测过Python2下是否ok。
> **Note**
>
> 请使用 **Python3**(3.6以及之后版本应该都行),没测过Python2下是否ok。
> **Warning**
>
> 如果电脑中从未安装过 `PyTorch`,`OpenCV` python包,初次安装可能会遇到问题,但一般都是常见问题,可以自行百度/Google解决。
如遇到安装问题,欢迎在
[
Github
](
https://github.com/breezedeus/cnocr
)
、 知识星球
[
**CnOCR/CnSTD私享群**
](
https://t.zsxq.com/FEYZRJQ
)
或者 微信交流群反馈给作者
[
breezedeus
](
https://github.com/breezedeus
)
。
### GPU 环境使用 ONNX 模型
...
...
docs/models.md
浏览文件 @
1594ad97
# 可用的模型
cnocr 自
**V2.1.2**
之后,可直接使用的模型包含两类:1)cnocr 自己训练的模型,通常会包含 PyTorch 和 ONNX 版本;2)从其他ocr引擎搬运过来的训练好的外部模型,ONNX化后用于 cnocr
中。
CnOCR 自
**V2.1.2**
之后,可直接使用的模型包含两类:1)CnOCR 自己训练的模型,通常会包含 PyTorch 和 ONNX 版本;2)从其他ocr引擎搬运过来的训练好的外部模型,ONNX化后用于 CnOCR
中。
直接使用的模型都放在
[
**cnstd-cnocr-models**
](
https://huggingface.co/breezedeus/cnstd-cnocr-models
)
项目中,可免费下载使用。具体方法可参考
[
使用方法
](
usage.md
)
。
## 1) cnocr 自己训练的模型
模型又分为两大类,1)来自
**[CnSTD](https://github.com/breezedeus/cnstd)**
的检测模型;2)CnOCR 的识别模型。
cnocr 自己训练的模型都支持
**常见简体中文、英文和数字**
的识别,大家也可以基于这些模型在自己的领域数据上继续精调模型。模型列表如下:
## 检测模型
|
`model_name`
| PyTorch 版本 | ONNX 版本 | 参数规模 | 模型文件大小 | 准确度 | 平均推断耗时(毫秒/图) |
| ----------------------- | ---------- | ------- | ----- | ------ | ------ | ------------ |
| densenet
\_
lite
\_
114-fc | √ | √ | 1.3 M | 4.9 M | 0.9274 | 9.229 |
| densenet
\_
lite
\_
124-fc | √ | √ | 1.3 M | 5.1 M | 0.9429 | 10.112 |
| densenet
\_
lite
\_
134-fc | √ | √ | 1.4 M | 5.4 M | 0.954 | 10.843 |
| densenet
\_
lite
\_
136-fc | √ | √ | 1.5M | 5.9 M | 0.9631 | 11.499 |
| densenet
\_
lite
\_
134-gru | √ | X | 2.9 M | 11 M | 0.9738 | 17.042 |
| densenet
\_
lite
\_
136-gru | √ | X | 3.1 M | 12 M | 0.9756 | 17.725 |
具体说明请参考
**[CnSTD 文档](https://github.com/breezedeus/cnstd)**
,以下仅罗列出可用模型:
|
`det_model_name`
| PyTorch 版本 | ONNX 版本 | 模型原始来源 | 模型文件大小 | 支持语言 | 是否支持竖排文字识别 |
| ------------------------------------------------------------ | ------------ | --------- | ------------ | ------------ | ------------------------------ | -------------------- |
| db_shufflenet_v2 | √ | X | cnocr | 18 M | 简体中文、繁体中文、英文、数字 | √ |
|
**db_shufflenet_v2_small**
| √ | X | cnocr | 12 M | 简体中文、繁体中文、英文、数字 | √ |
|
[
db_shufflenet_v2_tiny
](
https://mp.weixin.qq.com/s/fHPNoGyo72EFApVhEgR6Nw
)
| √ | X | cnocr | 7.5 M | 简体中文、繁体中文、英文、数字 | √ |
| db_mobilenet_v3 | √ | X | cnocr | 16 M | 简体中文、繁体中文、英文、数字 | √ |
| db_mobilenet_v3_small | √ | X | cnocr | 7.9 M | 简体中文、繁体中文、英文、数字 | √ |
| db_resnet34 | √ | X | cnocr | 86 M | 简体中文、繁体中文、英文、数字 | √ |
| db_resnet18 | √ | X | cnocr | 47 M | 简体中文、繁体中文、英文、数字 | √ |
| ch_PP-OCRv3_det | X | √ | ppocr | 2.3 M | 简体中文、繁体中文、英文、数字 | √ |
| ch_PP-OCRv2_det | X | √ | ppocr | 2.2 M | 简体中文、繁体中文、英文、数字 | √ |
|
**en_PP-OCRv3_det**
| X | √ | ppocr | 2.3 M |
**英文**
、数字 | √ |
> **Note**
>
> 列 **`PyTorch 版本`** 为 `√` 表示此模型支持 `det_model_backend=='pytorch'`;列 **`ONNX 版本`** 为 `√` 表示此模型支持 `det_model_backend=='onnx'`;取值为 `X` 则表示不支持对应的取值。
## 识别模型
### 1) CnOCR 自己训练的模型
CnOCR 自己训练的模型都支持
**常见简体中文、英文和数字**
的识别,大家也可以基于这些模型在自己的领域数据上继续精调模型。模型列表如下:
|
`rec_model_name`
| PyTorch 版本 | ONNX 版本 | 参数规模 | 模型文件大小 | 准确度 | 平均推断耗时(毫秒/图) |
| ----------------------- | ------------ | --------- | -------- | ------------ | ------ | ----------------------- |
| densenet
\_
lite
\_
114-fc | √ | √ | 1.3 M | 4.9 M | 0.9274 | 9.229 |
| densenet
\_
lite
\_
124-fc | √ | √ | 1.3 M | 5.1 M | 0.9429 | 10.112 |
| densenet
\_
lite
\_
134-fc | √ | √ | 1.4 M | 5.4 M | 0.954 | 10.843 |
| densenet
\_
lite
\_
136-fc | √ | √ | 1.5M | 5.9 M | 0.9631 | 11.499 |
| densenet
\_
lite
\_
134-gru | √ | X | 2.9 M | 11 M | 0.9738 | 17.042 |
| densenet
\_
lite
\_
136-gru | √ | X | 3.1 M | 12 M | 0.9756 | 17.725 |
一些说明:
...
...
@@ -23,7 +49,7 @@ cnocr 自己训练的模型都支持**常见简体中文、英文和数字**的
2.
列
**`PyTorch 版本`**
为
`√`
表示此模型支持
`model_backend=='pytorch'`
;列
**`ONNX 版本`**
为
`√`
表示此模型支持
`model_backend=='onnx'`
;取值为
`X`
则表示不支持对应的取值。
3.
`平均耗时`
是针对
`PyTorch 版本`
获得的,
**`ONNX 版本` 耗时大致是 `PyTorch 版本` 的一半。**
cnocr
的自有模型从结构上可以分为两阶段:第一阶段是获得ocr图片的局部编码向量,第二部分是对局部编码向量进行序列学习,获得序列编码向量。目前的PyTorch版本的两个阶段分别包含以下模型:
CnOCR
的自有模型从结构上可以分为两阶段:第一阶段是获得ocr图片的局部编码向量,第二部分是对局部编码向量进行序列学习,获得序列编码向量。目前的PyTorch版本的两个阶段分别包含以下模型:
1.
局部编码模型(emb model)
-
**`densenet_lite_<numbers>`**
:一个微型的
`densenet`
网络;其中的
`<number>`
表示模型中每个block包含的层数。
...
...
@@ -33,16 +59,16 @@ cnocr的自有模型从结构上可以分为两阶段:第一阶段是获得ocr
-
**`gru`**
:一层的GRU网络;
-
**`lstm`**
:一层的LSTM网络。
## 2) 外部模型
##
#
2) 外部模型
以下模型是
[
**PaddleOCR**
](
https://github.com/PaddlePaddle/PaddleOCR
)
中模型的
**ONNX**
版本,所以不会依赖
**PaddlePaddle**
相关工具包,故而也不支持基于这些模型在自己的领域数据上继续精调模型。这些模型应该都支持
**竖排文字**
。
|
`model_name`
| PyTorch 版本 | ONNX 版本 | 支持语言 | 模型文件大小 |
| --------------------- | ----------
| ------- | -------------- |
------ |
| ch_PP-OCRv3 | X
| √ | 简体中问、英文、数字 | 10 M
|
| ch_ppocr_mobile_v2.0 | X
| √ | 简体中问、英文、数字 | 4.2 M
|
| en_PP-OCRv3 | X
| √ |
**英文**
、数字 | 8.5 M
|
| en_number_mobile_v2.0 | X
| √ |
**英文**
、数字 | 1.8M
|
| chinese_cht_PP-OCRv3 | X
| √ |
**繁体中文**
、英文、数字 | 11 M
|
|
`model_name`
| PyTorch 版本 | ONNX 版本 | 支持语言
| 是否支持竖排文字识别
| 模型文件大小 |
| --------------------- | ----------
-- | --------- | ------------------------ | -------------------- | ------
------ |
| ch_PP-OCRv3 | X
| √ | 简体中问、英文、数字 | √ | 10 M
|
| ch_ppocr_mobile_v2.0 | X
| √ | 简体中问、英文、数字 | √ | 4.2 M
|
| en_PP-OCRv3 | X
| √ |
**英文**
、数字 | √ | 8.5 M
|
| en_number_mobile_v2.0 | X
| √ |
**英文**
、数字 | √ | 1.8 M
|
| chinese_cht_PP-OCRv3 | X
| √ |
**繁体中文**
、英文、数字 | X | 11 M
|
更多模型可参考
[
PaddleOCR/models_list.md
](
https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.5/doc/doc_ch/models_list.md
)
。如有其他外语(如日、韩等)识别需求,可在
**知识星球**
[
**CnOCR/CnSTD私享群**
](
https://t.zsxq.com/FEYZRJQ
)
中向作者提出建议。
docs/requirements.txt
浏览文件 @
1594ad97
...
...
@@ -54,7 +54,8 @@ yarl==1.6.3 # via aiohttp
# setuptools
# for mkdocs
mkdocs
mkdocs-macros-plugin
mkdocs-material
mkdocstrings
mkdocs==1.2.2
mkdocs-macros-plugin==0.6.0
mkdocs-material==7.3.0
mkdocs-material-extensions==1.0.3
mkdocstrings==0.16.1
docs/usage.md
浏览文件 @
1594ad97
此差异已折叠。
点击以展开。
mkdocs.yml
浏览文件 @
1594ad97
# Project information
site_name
:
CnO
cr
site_name
:
CnO
CR
site_url
:
https://cnocr.readthedocs.io
site_description
:
CnO
cr
使用说明
site_description
:
CnO
CR
使用说明
site_author
:
Breezedeus
# Repository
repo_url
:
https://github.com/breezedeus/cnocr
repo_name
:
Breezedeus/CnO
cr
repo_name
:
Breezedeus/CnO
CR
edit_uri
:
"
"
#disables edit button
# Copyright
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录