Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Just_Paranoid
CnOCR
提交
e29eb08b
CnOCR
项目概览
Just_Paranoid
/
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,发现更多精彩内容 >>
提交
e29eb08b
编写于
5月 25, 2022
作者:
B
breezedeus
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update docs
上级
040ff17b
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
109 addition
and
33 deletion
+109
-33
cnocr/cli.py
cnocr/cli.py
+38
-4
docs/command.md
docs/command.md
+5
-1
docs/index.md
docs/index.md
+23
-5
docs/models.md
docs/models.md
+30
-10
docs/usage.md
docs/usage.md
+13
-13
未找到文件。
cnocr/cli.py
浏览文件 @
e29eb08b
...
@@ -177,6 +177,13 @@ def visualize_example(example, fp_prefix):
...
@@ -177,6 +177,13 @@ def visualize_example(example, fp_prefix):
default
=
DEFAULT_MODEL_NAME
,
default
=
DEFAULT_MODEL_NAME
,
help
=
'模型名称。默认值为 %s'
%
DEFAULT_MODEL_NAME
,
help
=
'模型名称。默认值为 %s'
%
DEFAULT_MODEL_NAME
,
)
)
@
click
.
option
(
'-b'
,
'--model-backend'
,
type
=
click
.
Choice
([
'pytorch'
,
'onnx'
]),
default
=
'onnx'
,
help
=
'模型类型。默认值为 `onnx`'
,
)
@
click
.
option
(
@
click
.
option
(
'-p'
,
'-p'
,
'--pretrained-model-fp'
,
'--pretrained-model-fp'
,
...
@@ -198,9 +205,21 @@ def visualize_example(example, fp_prefix):
...
@@ -198,9 +205,21 @@ def visualize_example(example, fp_prefix):
is_flag
=
True
,
is_flag
=
True
,
help
=
"是否输入图片只包含单行文字。对包含单行文字的图片,不做按行切分;否则会先对图片按行分割后再进行识别"
,
help
=
"是否输入图片只包含单行文字。对包含单行文字的图片,不做按行切分;否则会先对图片按行分割后再进行识别"
,
)
)
def
predict
(
model_name
,
pretrained_model_fp
,
context
,
img_file_or_dir
,
single_line
):
def
predict
(
model_name
,
model_backend
,
pretrained_model_fp
,
context
,
img_file_or_dir
,
single_line
,
):
"""模型预测"""
"""模型预测"""
ocr
=
CnOcr
(
model_name
=
model_name
,
model_fp
=
pretrained_model_fp
,
context
=
context
)
ocr
=
CnOcr
(
model_name
=
model_name
,
model_backend
=
model_backend
,
model_fp
=
pretrained_model_fp
,
context
=
context
,
)
ocr_func
=
ocr
.
ocr_for_single_line
if
single_line
else
ocr
.
ocr
ocr_func
=
ocr
.
ocr_for_single_line
if
single_line
else
ocr
.
ocr
fp_list
=
[]
fp_list
=
[]
if
os
.
path
.
isfile
(
img_file_or_dir
):
if
os
.
path
.
isfile
(
img_file_or_dir
):
...
@@ -230,6 +249,13 @@ def predict(model_name, pretrained_model_fp, context, img_file_or_dir, single_li
...
@@ -230,6 +249,13 @@ def predict(model_name, pretrained_model_fp, context, img_file_or_dir, single_li
default
=
DEFAULT_MODEL_NAME
,
default
=
DEFAULT_MODEL_NAME
,
help
=
'模型名称。默认值为 %s'
%
DEFAULT_MODEL_NAME
,
help
=
'模型名称。默认值为 %s'
%
DEFAULT_MODEL_NAME
,
)
)
@
click
.
option
(
'-b'
,
'--model-backend'
,
type
=
click
.
Choice
([
'pytorch'
,
'onnx'
]),
default
=
'onnx'
,
help
=
'模型类型。默认值为 `onnx`'
,
)
@
click
.
option
(
@
click
.
option
(
'-p'
,
'-p'
,
'--pretrained-model-fp'
,
'--pretrained-model-fp'
,
...
@@ -265,6 +291,7 @@ def predict(model_name, pretrained_model_fp, context, img_file_or_dir, single_li
...
@@ -265,6 +291,7 @@ def predict(model_name, pretrained_model_fp, context, img_file_or_dir, single_li
)
)
def
evaluate
(
def
evaluate
(
model_name
,
model_name
,
model_backend
,
pretrained_model_fp
,
pretrained_model_fp
,
context
,
context
,
eval_index_fp
,
eval_index_fp
,
...
@@ -278,9 +305,16 @@ def evaluate(
...
@@ -278,9 +305,16 @@ def evaluate(
import
Levenshtein
import
Levenshtein
except
Exception
as
e
:
except
Exception
as
e
:
logger
.
error
(
e
)
logger
.
error
(
e
)
logger
.
error
(
'try to install the package by using `pip install python-Levenshtein`'
)
logger
.
error
(
'try to install the package by using `pip install python-Levenshtein`'
)
return
return
ocr
=
CnOcr
(
model_name
=
model_name
,
model_fp
=
pretrained_model_fp
,
context
=
context
)
ocr
=
CnOcr
(
model_name
=
model_name
,
model_backend
=
model_backend
,
model_fp
=
pretrained_model_fp
,
context
=
context
,
)
fn_labels_list
=
read_input_file
(
eval_index_fp
)
fn_labels_list
=
read_input_file
(
eval_index_fp
)
...
...
docs/command.md
浏览文件 @
e29eb08b
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
**cnocr**
包含了几个命令行工具,安装
**cnocr**
后即可使用。
**cnocr**
包含了几个命令行工具,安装
**cnocr**
后即可使用。
##
预测单个文件或文件夹中所有图片
##
图片预测
使用命令
**`cnocr predict`**
预测单个文件或文件夹中所有图片,以下是使用说明:
使用命令
**`cnocr predict`**
预测单个文件或文件夹中所有图片,以下是使用说明:
...
@@ -14,6 +14,8 @@ Usage: cnocr predict [OPTIONS]
...
@@ -14,6 +14,8 @@ Usage: cnocr predict [OPTIONS]
Options:
Options:
-m
,
--model-name
TEXT 模型名称。默认值为 densenet_lite_136-fc
-m
,
--model-name
TEXT 模型名称。默认值为 densenet_lite_136-fc
-b
,
--model-backend
[
pytorch|onnx]
模型类型。默认值为
`
onnx
`
-p
,
--pretrained-model-fp
TEXT 使用训练好的模型。默认为
`
None
`
,表示使用系统自带的预训练模型
-p
,
--pretrained-model-fp
TEXT 使用训练好的模型。默认为
`
None
`
,表示使用系统自带的预训练模型
-c
,
--context
TEXT 使用cpu还是
`
gpu
`
运行代码,也可指定为特定gpu,如
`
cuda:0
`
。默认为
-c
,
--context
TEXT 使用cpu还是
`
gpu
`
运行代码,也可指定为特定gpu,如
`
cuda:0
`
。默认为
`
cpu
`
`
cpu
`
...
@@ -45,6 +47,8 @@ Usage: cnocr evaluate [OPTIONS]
...
@@ -45,6 +47,8 @@ Usage: cnocr evaluate [OPTIONS]
Options:
Options:
-m
,
--model-name
TEXT 模型名称。默认值为 densenet_lite_136-fc
-m
,
--model-name
TEXT 模型名称。默认值为 densenet_lite_136-fc
-b
,
--model-backend
[
pytorch|onnx]
模型类型。默认值为
`
onnx
`
-p
,
--pretrained-model-fp
TEXT 使用训练好的模型。默认为
`
None
`
,表示使用系统自带的预训练模型
-p
,
--pretrained-model-fp
TEXT 使用训练好的模型。默认为
`
None
`
,表示使用系统自带的预训练模型
-c
,
--context
TEXT 使用cpu还是
`
gpu
`
运行代码,也可指定为特定gpu,如
`
cuda:0
`
。默认为
-c
,
--context
TEXT 使用cpu还是
`
gpu
`
运行代码,也可指定为特定gpu,如
`
cuda:0
`
。默认为
`
cpu
`
`
cpu
`
...
...
docs/index.md
浏览文件 @
e29eb08b
# CnOcr
# CnOcr
**[CnOcr](https://github.com/breezedeus/cnocr)**
是
**Python 3**
下的
**文字识别**
(
**Optical Character Recognition**
,简称
**OCR**
)工具包,
[
**CnOcr**
](
https://github.com/breezedeus/cnocr
)
是
**Python 3**
下的
**文字识别**
(
**Optical Character Recognition**
,简称
**OCR**
)工具包,支持
**简体中文**
、
**繁体中文**
(部分模型)、
**英文**
和
**数字**
的常见字符识别,支持竖排文字的识别。自带了
**10+个**
[
训练好的识别模型
](
models.md
)
,安装后即可直接使用。欢迎扫码加入
[
QQ交流群
](
contact.md
)
。
支持
**中文**
、
**英文**
的常见字符识别,自带了多个
[
训练好的识别模型
](
models.md
)
,安装后即可直接使用。
欢迎扫码加入
[
QQ交流群
](
contact.md
)
。
作者也维护
**知识星球**
[
**CnOCR/CnSTD私享群**
](
https://t.zsxq.com/FEYZRJQ
)
,欢迎加入。
**知识星球私享群**
会陆续发布一些CnOCR/CnSTD相关的私有资料,包括
**更详细的训练教程**
,
**未公开的模型**
,使用过程中遇到的难题解答等。本群也会发布OCR/STD相关的最新研究资料。此外,
**私享群中作者每月提供两次免费特有数据的训练服务**
。
作者也维护
**知识星球**
[
**CnOCR/CnSTD私享群**
](
https://t.zsxq.com/FEYZRJQ
)
,欢迎加入。
**知识星球私享群**
会陆续发布一些CnOCR/CnSTD相关的私有资料,包括
**更详细的训练教程**
,
**未公开的模型**
,使用过程中遇到的难题解答等。本群也会发布OCR/STD相关的最新研究资料。此外,
**私享群中作者每月提供两次免费特有数据的训练服务**
。
CnOcr的目标是
**使用简单**
。
CnOcr的目标是
**使用简单**
。
可以使用
[
在线 Demo
](
demo.md
)
查看效果。
可以使用
[
**在线 Demo**
](
demo.md
)
查看效果。
## 安装简单
## 安装简单
...
@@ -49,6 +47,19 @@ res = ocr.ocr(img)
...
@@ -49,6 +47,19 @@ res = ocr.ocr(img)
print
(
"Predicted Chars:"
,
res
)
print
(
"Predicted Chars:"
,
res
)
```
```
返回结果如下:
```
bash
Predicted Chars:
[
(
'网络支付并无本质的区别,因为'
, 0.996096134185791
)
,
(
'每一个手机号码和邮件地址背后'
, 0.9903925061225891
)
,
(
'都会对应着一个账户一一这个账'
, 0.6401291489601135
)
,
(
'户可以是信用卡账户、借记卡账'
, 0.9446338415145874
)
,
(
'户,也包括邮局汇款、手机代'
, 0.9997618794441223
)
,
(
'收、电话代收、预付费卡和点卡'
, 0.7029080390930176
)
,
(
'等多种形式。'
, 0.8814011812210083
)]
```
更多说明可见
[
使用方法
](
usage.md
)
。
更多说明可见
[
使用方法
](
usage.md
)
。
## 命令行工具
## 命令行工具
...
@@ -95,4 +106,11 @@ print("Predicted Chars:", res)
...
@@ -95,4 +106,11 @@ print("Predicted Chars:", res)
*
[x] 优化训练集,去掉不合理的样本;在此基础上,重新训练各个模型
*
[x] 优化训练集,去掉不合理的样本;在此基础上,重新训练各个模型
*
[x] 由 MXNet 改为 PyTorch 架构(since
`V2.0.0`
)
*
[x] 由 MXNet 改为 PyTorch 架构(since
`V2.0.0`
)
*
[x] 基于 PyTorch 训练更高效的模型
*
[x] 基于 PyTorch 训练更高效的模型
*
[ ] 支持列格式的文字识别
*
[x] 支持列格式的文字识别
-
[
] 支持与 [CnStd
](
https://github.com/breezedeus/cnstd
)
的无缝衔接
---
官方代码库:
[
https://github.com/breezedeus/cnocr
](
https://github.com/breezedeus/cnocr
)
。
docs/models.md
浏览文件 @
e29eb08b
## 可直接使用的模型
## 可直接使用的模型
cnocr
的ocr模型可以分为两阶段:第一阶段是获得ocr图片的局部编码向量,第二部分是对局部编码向量进行序列学习,获得序列编码向量。目前的PyTorch版本的两个阶段分别包含以下模型:
cnocr
自
**V2.1.2**
之后,可直接使用的模型包含两类:1)cnocr 自己训练的模型,通常会包含 PyTorch 和 ONNX 版本;2)从其他ocr引擎搬运过来的训练好的外部模型,ONNX化后用于 cnocr 中。
1.
局部编码模型(emb model)
直接使用的模型都放在
[
**cnstd-cnocr-models**
](
https://huggingface.co/breezedeus/cnstd-cnocr-models
)
项目中,可免费下载使用。具体方法可参考
[
使用方法
](
usage.md
)
。
*
**`densenet_lite_<numbers>`**
:一个微型的
`densenet`
网络;其中的
`<number>`
表示模型中每个block包含的层数。
*
**`densenet`**
:一个小型的
`densenet`
网络;
## 1) cnocr 自己训练的模型
2.
序列编码模型(seq model)
*
**`fc`**
:两层的全连接网络;
*
**`gru`**
:一层的GRU网络;
*
**`lstm`**
:一层的LSTM网络。
cnocr
**V2.1**
目前包含以下可直接使用的模型,训练好的模型都放在
**[cnstd-cnocr-models](https://github.com/breezedeus/cnstd-cnocr-models)**
项目中,可免费下载使用
:
cnocr
自己训练的模型都支持
**常见简体中文、英文和数字**
的识别,大家也可以基于这些模型在自己的领域数据上继续精调模型。模型列表如下
:
|
Name
| PyTorch 版本 | ONNX 版本 | 参数规模 | 模型文件大小 | 准确度 | 平均推断耗时(毫秒/图) |
|
`model_name`
| PyTorch 版本 | ONNX 版本 | 参数规模 | 模型文件大小 | 准确度 | 平均推断耗时(毫秒/图) |
| ----------------------- | ---------- | ------- | ----- | ------ | ------ | ------------ |
| ----------------------- | ---------- | ------- | ----- | ------ | ------ | ------------ |
| densenet
\_
lite
\_
114-fc | √ | √ | 1.3 M | 4.9 M | 0.9274 | 9.229 |
| 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
\_
124-fc | √ | √ | 1.3 M | 5.1 M | 0.9429 | 10.112 |
...
@@ -26,3 +22,27 @@ cnocr **V2.1** 目前包含以下可直接使用的模型,训练好的模型
...
@@ -26,3 +22,27 @@ cnocr **V2.1** 目前包含以下可直接使用的模型,训练好的模型
1.
模型名称是由
**局部编码**
模型和
**序列编码**
模型名称拼接而成,以符合"-"分割。
1.
模型名称是由
**局部编码**
模型和
**序列编码**
模型名称拼接而成,以符合"-"分割。
2.
列
**`PyTorch 版本`**
为
`√`
表示此模型支持
`model_backend=='pytorch'`
;列
**`ONNX 版本`**
为
`√`
表示此模型支持
`model_backend=='onnx'`
;取值为
`X`
则表示不支持对应的取值。
2.
列
**`PyTorch 版本`**
为
`√`
表示此模型支持
`model_backend=='pytorch'`
;列
**`ONNX 版本`**
为
`√`
表示此模型支持
`model_backend=='onnx'`
;取值为
`X`
则表示不支持对应的取值。
3.
`平均耗时`
是针对
`PyTorch 版本`
获得的,
**`ONNX 版本` 耗时大致是 `PyTorch 版本` 的一半。**
3.
`平均耗时`
是针对
`PyTorch 版本`
获得的,
**`ONNX 版本` 耗时大致是 `PyTorch 版本` 的一半。**
cnocr的自有模型从结构上可以分为两阶段:第一阶段是获得ocr图片的局部编码向量,第二部分是对局部编码向量进行序列学习,获得序列编码向量。目前的PyTorch版本的两个阶段分别包含以下模型:
1.
局部编码模型(emb model)
-
**`densenet_lite_<numbers>`**
:一个微型的
`densenet`
网络;其中的
`<number>`
表示模型中每个block包含的层数。
-
**`densenet`**
:一个小型的
`densenet`
网络;
2.
序列编码模型(seq model)
-
**`fc`**
:两层的全连接网络;
-
**`gru`**
:一层的GRU网络;
-
**`lstm`**
:一层的LSTM网络。
## 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 |
更多模型可参考
[
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/usage.md
浏览文件 @
e29eb08b
...
@@ -110,7 +110,7 @@ class CnOcr(object):
...
@@ -110,7 +110,7 @@ class CnOcr(object):
其中的几个参数含义如下:
其中的几个参数含义如下:
*
`model_name`
: 模型名称,即上面表格第一列中的值。默认为
`densenet_lite_136-fc`
。
*
`model_name`
: 模型名称,即上面表格第一列中的值。默认为
`densenet_lite_136-fc`
。
更多可选模型见
[
可直接使用的模型
](
models.md
)
。
*
`cand_alphabet`
: 待识别字符所在的候选集合。默认为
`None`
,表示不限定识别字符范围。取值可以是字符串,如
`"0123456789"`
,或者字符列表,如
`["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]`
。
*
`cand_alphabet`
: 待识别字符所在的候选集合。默认为
`None`
,表示不限定识别字符范围。取值可以是字符串,如
`"0123456789"`
,或者字符列表,如
`["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]`
。
...
@@ -118,7 +118,7 @@ class CnOcr(object):
...
@@ -118,7 +118,7 @@ class CnOcr(object):
*
`context`
:预测使用的机器资源,可取值为字符串
`cpu`
、
`gpu`
、
`cuda:0`
等。默认为
`cpu`
。此参数仅在
`model_backend=='pytorch'`
时有效。
*
`context`
:预测使用的机器资源,可取值为字符串
`cpu`
、
`gpu`
、
`cuda:0`
等。默认为
`cpu`
。此参数仅在
`model_backend=='pytorch'`
时有效。
*
`model_fp`
: 如果不使用系统自带的模型,可以通过此参数直接指定所使用的模型文件(
`.ckpt`
文件)。
*
`model_fp`
: 如果不使用系统自带的模型,可以通过此参数直接指定所使用的模型文件(
`.ckpt`
或
`.onnx`
文件)。
*
`model_backend`
:'pytorch', or 'onnx'。表明预测时是使用
`PyTorch`
版本模型,还是使用
`ONNX`
版本模型。
**同样的模型,ONNX 版本的预测速度一般是 PyTorch 版本的 2倍左右。**
默认为 'onnx'。
*
`model_backend`
:'pytorch', or 'onnx'。表明预测时是使用
`PyTorch`
版本模型,还是使用
`ONNX`
版本模型。
**同样的模型,ONNX 版本的预测速度一般是 PyTorch 版本的 2倍左右。**
默认为 'onnx'。
...
@@ -142,7 +142,7 @@ class CnOcr(object):
...
@@ -142,7 +142,7 @@ class CnOcr(object):
**函数说明**
:
**函数说明**
:
-
输入参数
`img_fp`
: 可以是需要识别的图片文件路径(如下例);或者是已经从图片文件中读入的数组,类型可以为
`torch.Tensor`
或
`np.ndarray`
,取值应该是
`[0,255]`
的整数,维数应该是
`[height, width]`
(灰度图片)或者
`[height, width, channel]`
,
`channel`
可以等于
`1`
(灰度图片)或者
`3`
(
`RGB`
格式的彩色图片)。
-
输入参数
`img_fp`
: 可以是需要识别的图片文件路径(如下例);或者是已经从图片文件中读入的数组,类型可以为
`torch.Tensor`
或
`np.ndarray`
,取值应该是
`[0,255]`
的整数,维数应该是
`[height, width]`
(灰度图片)或者
`[height, width, channel]`
,
`channel`
可以等于
`1`
(灰度图片)或者
`3`
(
`RGB`
格式的彩色图片)。
-
返回值:为一个嵌套的
`list`
,其中的每个元素存储了对一行文字的识别结果,其中也包含了识别概率值。类似这样
`[(
['第', '一', '行'], 0.80), (['第', '二', '行'], 0.75), (['第', '三', '行']
, 0.9)]`
,其中的数字为对应的识别概率值。
-
返回值:为一个嵌套的
`list`
,其中的每个元素存储了对一行文字的识别结果,其中也包含了识别概率值。类似这样
`[(
'第一行', 0.80), ('第二行', 0.75), ('第三行'
, 0.9)]`
,其中的数字为对应的识别概率值。
**调用示例**
:
**调用示例**
:
...
@@ -175,13 +175,13 @@ print("Predicted Chars:", res)
...
@@ -175,13 +175,13 @@ print("Predicted Chars:", res)
```
bash
```
bash
Predicted Chars:
[
Predicted Chars:
[
([
'网'
,
'络'
,
'支'
,
'付'
,
'并'
,
'无'
,
'本'
,
'质'
,
'的'
,
'区'
,
'别'
,
','
,
'因'
,
'为'
]
, 0.8677546381950378
)
,
(
'网络支付并无本质的区别,因为'
, 0.996096134185791
)
,
([
'每'
,
'一'
,
'个'
,
'手'
,
'机'
,
'号'
,
'码'
,
'和'
,
'邮'
,
'件'
,
'地'
,
'址'
,
'背'
,
'后'
]
, 0.6706454157829285
)
,
(
'每一个手机号码和邮件地址背后'
, 0.9903925061225891
)
,
([
'都'
,
'会'
,
'对'
,
'应'
,
'着'
,
'一'
,
'个'
,
'账'
,
'户'
,
'一'
,
'一'
,
'这'
,
'个'
,
'账'
]
, 0.5052655935287476
)
,
(
'都会对应着一个账户一一这个账'
, 0.6401291489601135
)
,
([
'户'
,
'可'
,
'以'
,
'是'
,
'信'
,
'用'
,
'卡'
,
'账'
,
'户'
,
'、'
,
'借'
,
'记'
,
'卡'
,
'账'
]
, 0.7785991430282593
)
,
(
'户可以是信用卡账户、借记卡账'
, 0.9446338415145874
)
,
([
'户'
,
','
,
'也'
,
'包'
,
'括'
,
'邮'
,
'局'
,
'汇'
,
'款'
,
'、'
,
'手'
,
'机'
,
'代'
]
, 0.37458470463752747
)
,
(
'户,也包括邮局汇款、手机代'
, 0.9997618794441223
)
,
([
'收'
,
'、'
,
'电'
,
'话'
,
'代'
,
'收'
,
'、'
,
'预'
,
'付'
,
'费'
,
'卡'
,
'和'
,
'点'
,
'卡'
]
, 0.7326119542121887
)
,
(
'收、电话代收、预付费卡和点卡'
, 0.7029080390930176
)
,
([
'等'
,
'多'
,
'种'
,
'形'
,
'式'
,
'。'
]
, 0.14462216198444366
)]
(
'等多种形式。'
, 0.8814011812210083
)]
```
```
### 2. 函数`CnOcr.ocr_for_single_line(img_fp)`
### 2. 函数`CnOcr.ocr_for_single_line(img_fp)`
...
@@ -191,7 +191,7 @@ Predicted Chars: [
...
@@ -191,7 +191,7 @@ Predicted Chars: [
**函数说明**
:
**函数说明**
:
-
输入参数
`img_fp`
: 可以是需要识别的图片文件路径(如下例);或者是已经从图片文件中读入的数组,类型可以为
`torch.Tensor`
或
`np.ndarray`
,取值应该是
`[0,255]`
的整数,维数应该是
`[height, width]`
(灰度图片)或者
`[height, width, channel]`
,
`channel`
可以等于
`1`
(灰度图片)或者
`3`
(
`RGB`
格式的彩色图片)。
-
输入参数
`img_fp`
: 可以是需要识别的图片文件路径(如下例);或者是已经从图片文件中读入的数组,类型可以为
`torch.Tensor`
或
`np.ndarray`
,取值应该是
`[0,255]`
的整数,维数应该是
`[height, width]`
(灰度图片)或者
`[height, width, channel]`
,
`channel`
可以等于
`1`
(灰度图片)或者
`3`
(
`RGB`
格式的彩色图片)。
-
返回值:为一个
`tuple`
,其中存储了对一行文字的识别结果,也包含了识别概率值。类似这样
`(
['第', '一', '行']
, 0.80)`
,其中的数字为对应的识别概率值。
-
返回值:为一个
`tuple`
,其中存储了对一行文字的识别结果,也包含了识别概率值。类似这样
`(
'第一行'
, 0.80)`
,其中的数字为对应的识别概率值。
**调用示例**
:
**调用示例**
:
...
@@ -223,7 +223,7 @@ print("Predicted Chars:", res)
...
@@ -223,7 +223,7 @@ print("Predicted Chars:", res)
的预测结果如下:
的预测结果如下:
```
bash
```
bash
Predicted Chars:
(
[
'笠'
,
'淡'
,
'嘿'
,
'骅'
,
'谧'
,
'鼎'
,
'皋'
,
'姚'
,
'歼'
,
'蠢'
,
'驼'
,
'耳'
,
'胬'
,
'挝'
,
'涯'
,
'狗'
,
'蒽'
,
'了'
,
'狞'
]
, 0.7832438349723816
)
Predicted Chars:
(
'笠淡嘿骅谧鼎皋姚歼蠢驼耳窝挝涯狗蒽子犷'
, 0.34973764419555664
)
```
```
### 3. 函数`CnOcr.ocr_for_single_lines(img_list, batch_size=1)`
### 3. 函数`CnOcr.ocr_for_single_lines(img_list, batch_size=1)`
...
@@ -234,7 +234,7 @@ Predicted Chars: (['笠', '淡', '嘿', '骅', '谧', '鼎', '皋', '姚', '歼'
...
@@ -234,7 +234,7 @@ Predicted Chars: (['笠', '淡', '嘿', '骅', '谧', '鼎', '皋', '姚', '歼'
-
输入参数
` img_list`
: 为一个
`list`
;其中每个元素可以是需要识别的图片文件路径(如下例);或者是已经从图片文件中读入的数组,类型可以为
`torch.Tensor`
或
`np.ndarray`
,取值应该是
`[0,255]`
的整数,维数应该是
`[height, width]`
(灰度图片)或者
`[height, width, channel]`
,
`channel`
可以等于
`1`
(灰度图片)或者
`3`
(
`RGB`
格式的彩色图片)。
-
输入参数
` img_list`
: 为一个
`list`
;其中每个元素可以是需要识别的图片文件路径(如下例);或者是已经从图片文件中读入的数组,类型可以为
`torch.Tensor`
或
`np.ndarray`
,取值应该是
`[0,255]`
的整数,维数应该是
`[height, width]`
(灰度图片)或者
`[height, width, channel]`
,
`channel`
可以等于
`1`
(灰度图片)或者
`3`
(
`RGB`
格式的彩色图片)。
-
输入参数
`batch_size`
: 待处理图片很多时,需要分批处理,每批图片的数量由此参数指定。默认为
`1`
。
-
输入参数
`batch_size`
: 待处理图片很多时,需要分批处理,每批图片的数量由此参数指定。默认为
`1`
。
-
返回值:为一个嵌套的
`list`
,其中的每个元素存储了对一行文字的识别结果,其中也包含了识别概率值。类似这样
`[(
['第', '一', '行'], 0.80), (['第', '二', '行'], 0.75), (['第', '三', '行']
, 0.9)]`
,其中的数字为对应的识别概率值。
-
返回值:为一个嵌套的
`list`
,其中的每个元素存储了对一行文字的识别结果,其中也包含了识别概率值。类似这样
`[(
'第一行', 0.80), ('第二行', 0.75), ('第三行'
, 0.9)]`
,其中的数字为对应的识别概率值。
**调用示例**
:
**调用示例**
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录