向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

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

cnocr主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等。cnocr目前内置的文字检测和分行模块无法处理复杂的文字排版定位。如果要用于场景文字图片的识别,需要结合其他的场景文字检测引擎使用。

示例

安装真的很简单

pip install cnocr

请使用Python3 (3.4, 3.5, 3.6以及之后版本应该都行

可直接使用的模型

cnocr的ocr模型可以分为两阶段:第一阶段是获得ocr图片的局部编码向量,第二部分是对局部编码向量进行序列学习,获得序列编码向量。目前两个阶段分别包含以下的模型:

  1. 局部编码模型(emb model)

  • conv:多层的卷积网络;

  • conv-lite:更小的多层卷积网络;

  • densenet:一个小型的densenet网络;

  • densenet-lite:一个更小的densenet网络。

  • 序列编码模型(seq model)

    • lstm:两层的LSTM网络;

    • gru:两层的GRU网络;

    • fc:两层的全连接网络。

    cnocr目前包含以下可直接使用的模型,训练好的模型都放在 cnocr-models 项目中,可免费下载使用:

    模型名称是由局部编码模型和序列编码模型名称拼接而成。

    图片预测速度是在多核CPU机器上做的测试, 绝对值依赖机器资源,意义不大;但不同模型之间的相对值是可以参考的。

    虽然上表中给出的多个模型在测试集上的准确率都是 98.6%,但从实际使用经验看,综合中英文的识别效果,conv-lite-fc是效果最好的,其次是 densenet-lite-lstm 和 conv-lite-lstm。对于中文识别且识别困难(如文字比较模糊)的场景,建议尝试模型 conv-lite-lstm。对于简单的中文识别场景,可以使用模型 densenet-lite-lstm 或 densenet-lite-fc ,或者利用自己的训练数据对它们进行精调。

    模型 conv-lstm把图片长度压缩到 1/8再做预测,其他模型是压缩到1/4再做预测,所以 conv-lstm 虽然比 conv-lite-lstm 有更多参数,但预测速度却快了一倍。

    使用方法

    首次使用cnocr时,系统会自动从 cnocr-models 下载zip格式的模型压缩文件,并存于 ~/.cnocr目录。下载后的zip文件代码会自动对其解压,然后把解压后的模型相关目录放于~/.cnocr/1.1.0目录中。

    如果系统不能自动从 cnocr-models 成功下载zip文件,则需要手动下载此zip文件并把它放于 ~/.cnocr/1.1.0目录。如果Github下载太慢,也可以从 百度云盘 下载。

    项目地址、模型下载地址 获取:

    关注微信公众号 datayx  然后回复  OCR  即可获取。

    放置好zip文件后,后面的事代码就会自动执行了。

    图片预测

    CnOcr是OCR的主类,包含了三个函数针对不同场景进行文字识别。类CnOcr的初始化函数如下:

    其中的几个参数含义如下:

    • model_name: 模型名称,即上面表格第一列中的值。默认为 conv-lite-fc

    • model_epoch: 模型迭代次数。默认为 None,表示使用默认的迭代次数值。对于模型名称 conv-lite-fc就是 27

    • cand_alphabet: 待识别字符所在的候选集合。默认为 None,表示不限定识别字符范围。cnocr.consts中内置了两个候选集合:(1) 数字和标点 NUMBERS;(2) 英文字母、数字和标点 ENG_LETTERS

      • 例如对于图片

      • ,不做约束时识别结果为 o12345678;如果加入数字约束时(ocr = CnOcr(cand_alphabet=NUMBERS)),识别结果为 012345678

    • root: 模型文件所在的根目录。

      • Linux/Mac下默认值为 ~/.cnocr,表示模型文件所处文件夹类似 ~/.cnocr/1.1.0/conv-lite-fc

      • Windows下默认值为 C:\Users\<username>\AppData\Roaming\cnocr

    每个参数都有默认取值,所以可以不传入任何参数值进行初始化:ocr = CnOcr()

    CnOcr主要包含三个函数,下面分别说明。

    1. 函数CnOcr.ocr(img_fp)

    函数CnOcr.ocr(img_fp)可以对包含多行文字(或单行)的图片进行文字识别。

    函数说明:

    • 输入参数 img_fp: 可以是需要识别的图片文件路径(如上例);或者是已经从图片文件中读入的数组,类型可以为mx.nd.NDArray 或 np.ndarray,取值应该是[0,255]的整数,维数应该是(height, width, 3),第三个维度是channel,它应该是RGB格式的。

    • 返回值:为一个嵌套的list,类似这样[['第', '一', '行'], ['第', '二', '行'], ['第', '三', '行']]

    调用示例:

    上面使用的图片文件 examples/multi-line_cn1.png内容如下:

    2. 函数CnOcr.ocr_for_single_line(img_fp)

    如果明确知道要预测的图片中只包含了单行文字,可以使用函数CnOcr.ocr_for_single_line(img_fp)进行识别。和 CnOcr.ocr()相比,CnOcr.ocr_for_single_line()结果可靠性更强,因为它不需要做额外的分行处理。

    函数说明:

    • 输入参数 img_fp: 可以是需要识别的单行文字图片文件路径(如上例);或者是已经从图片文件中读入的数组,类型可以为mx.nd.NDArray 或 np.ndarray,取值应该是[0,255]的整数,维数应该是(height, width)(height, width, channel)。如果没有channel,表示传入的就是灰度图片。第三个维度channel可以是1(灰度图片)或者3(彩色图片)。如果是彩色图片,它应该是RGB格式的。

    • 返回值:为一个list,类似这样['你', '好']

    调用示例:

    3. 函数CnOcr.ocr_for_single_lines(img_list)

    函数CnOcr.ocr_for_single_lines(img_list)可以对多个单行文字图片进行批量预测。函数CnOcr.ocr(img_fp)CnOcr.ocr_for_single_line(img_fp)内部其实都是调用的函数CnOcr.ocr_for_single_lines(img_list)

    函数说明:

    • 输入参数 img_list: 为一个list;其中每个元素是已经从图片文件中读入的数组,类型可以为mx.nd.NDArray 或 np.ndarray,取值应该是[0,255]的整数,维数应该是(height, width)(height, width, channel)。如果没有channel,表示传入的就是灰度图片。第三个维度channel可以是1(灰度图片)或者3(彩色图片)。如果是彩色图片,它应该是RGB格式的。

    • 返回值:为一个嵌套的list,类似这样[['第', '一', '行'], ['第', '二', '行'], ['第', '三', '行']]

    调用示例:

    训练自己的模型

    cnocr自带训练好的模型, 安装后即可直接使用。但如果你需要训练自己的模型,请参考下面的步骤。所有代码均可在文件 Makefile 中找到。

    (一)转换图片数据格式

    为了提升训练效率,在开始训练之前,需要使用mxnet的recordio首先把数据转换成二进制格式:

    如果需要在GPU上训练,把上面命令中的参数 --gpu 0改为--gpu <num_gpu>,其中的<num_gpu> 为使用的GPU数量。注意,使用GPU训练需要安装mxnet的GPU版本,如mxnet-cu101

    (三)评估模型

    评估模型的代码依赖一些额外的python包,使用下面命令安装这些额外的包:


    阅读过本文的人还看了以下文章:

    【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

    《美团机器学习实践》_美团算法团队.pdf

    《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

    特征提取与图像处理(第二版).pdf

    python就业班学习视频,从入门到实战项目

    2019最新《PyTorch自然语言处理》英、中文版PDF+源码

    《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

    《深度学习之pytorch》pdf+附书源码

    PyTorch深度学习快速实战入门《pytorch-handbook》

    【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

    《Python数据分析与挖掘实战》PDF+完整源码

    汽车行业完整知识图谱项目实战视频(全23课)

    李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

    笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

    《神经网络与深度学习》最新2018版中英PDF+源码

    将机器学习模型部署为REST API

    FashionAI服装属性标签图像识别Top1-5方案分享

    重要开源!CNN-RNN-CTC 实现手写汉字识别

    yolo3 检测出图像中的不规则汉字

    同样是机器学习算法工程师,你的面试为什么过不了?

    前海征信大数据算法:风险概率预测

    【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

    VGG16迁移学习,实现医学图像识别分类工程项目

    特征工程(一)

    特征工程(二) :文本数据的展开、过滤和分块

    特征工程(三):特征缩放,从词袋到 TF-IDF

    特征工程(四): 类别特征

    特征工程(五): PCA 降维

    特征工程(六): 非线性特征提取和模型堆叠

    特征工程(七):图像特征提取和深度学习

    如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

    Machine Learning Yearning 中文翻译稿

    蚂蚁金服2018秋招-算法工程师(共四面)通过

    全球AI挑战-场景分类的比赛源码(多模型融合)

    斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

    python+flask搭建CNN在线识别手写中文网站

    中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

    不断更新资源

    深度学习、机器学习、数据分析、python

     搜索公众号添加: datayx  

cnocr:用来做中文OCR的Python3包,装上就能用!相关推荐

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

    English README. cnocr 使用交流QQ群 欢迎扫码加入QQ交流群: Release Notes Update 2020.04.21: 发布 cnocr V1.1.0 V1.1.0对代 ...

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

    English README. cnocr 使用交流QQ群 欢迎扫码加入QQ交流群: 最近更新 [2020.05.29]:V1.2.2 主要变更: 优化了对数字识别的准确度. 优化了模型结构,进一步降 ...

  3. python编程ocr_cnocr是用来做中文OCR的Python 3包

    English README. cnocr 使用交流QQ群 欢迎扫码加入QQ交流群: 最近更新 [2020.05.29]:V1.2.2 主要变更: 优化了对数字识别的准确度. 优化了模型结构,进一步降 ...

  4. cnocr训练_cnocr: 极简的中文OCR Python包

    Update 2020.04.21: 发布 cnocr V1.1.0 更轻量的 cnocr-V1.1.0 :最小模型只有 6.8M.具体说明见: BreezeDeus:更轻量的 cnocr-V1.1. ...

  5. studioone精调效果包_cnocr: 极简的中文OCR Python包

    Update 2020.04.21: 发布 cnocr V1.1.0 更轻量的 cnocr-V1.1.0 :最小模型只有 6.8M.具体说明见: BreezeDeus:更轻量的 cnocr-V1.1. ...

  6. 两款开源的中文OCR工具

    1.cnocr cnocr是用来做中文OCR的Python 3包.cnocr自带了训练好的识别模型,安装后即可直接使用. cnocr主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等.cnoc ...

  7. 实测超轻量中文OCR开源项目,总模型仅17M

    本文授权转自"机器之心"(almosthuman2014) 光学字符识别(OCR)现在已经有很广泛的应用了,很多开源项目都会嵌入已有的 OCR 项目来扩展能力,例如 12306 开 ...

  8. 中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本

    中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本 本文介绍 中文OCR光学字符检测与识别二:用最先进的DBNet训练自己的数据集检测中文文本 中文OCR光学字符检测与识 ...

  9. GitHub开源:17M超轻量级中文OCR模型、支持NCNN推理

    目录 1.项目简介 2.项目配置 3.问题解决 1.项目简介 近期GitHub上一位大神开源了一个叫做chineseocr_lite的OCR的项目,这是一个超轻量级中文OCR,支持竖排文字识别.NCN ...

最新文章

  1. java 随机取三个_Java-Random 从五个人中随机三个 且不能重复
  2. R语言:如何快速生成许多差异明显的颜色?
  3. 图解Skip List——本质是空间换时间的数据结构,在lucene的倒排列表,bigtable,hbase,cassandra的memtable,redis中sorted set中均用到...
  4. .NET基础 (03)生成、部署和管理
  5. 数据库设计基础:数据字典相关知识笔记
  6. oracle定时加载文件,采用sqlldr定时将文本文件加载进入数据库
  7. CSS相关知识点:6种清除浮动和BFC
  8. EL表达式判断条件要写在${}内
  9. centos java进程号_centos中分析java占用大量CPU资源的原因
  10. Javascript框架设计思路图
  11. 潮流计算 matlab,用matlab进行潮流计算
  12. 如何在线将WAV转换为MP3格式
  13. pc端软件怎么做性能测试,企点PC端性能测试——UI卡顿分析
  14. CSS 边框 圆角 盒子阴影 圆角 solid dotted dashed
  15. IAR下载程序只有提示音,没有任何反应。或报错The configuration does not have debuggable output.(A debug-only project shoul
  16. 使用adb命令修改build.prop文件
  17. 华为云硬盘备份(VBS)服务
  18. Unity物体自发光
  19. 武侠小说中绝顶高手生存指南
  20. Linux使用技巧1--挂载U盘和Windwos分区

热门文章

  1. Python 萌新 - 花10分钟学爬虫
  2. DataSet和实体类的相互转换
  3. 【分布式系统工程实现】系统可扩展性演化
  4. 控件readonly之后的取值
  5. oracle数据库文件dbf复制#ocp试验#
  6. 接口访问次数_如何基于spring开发自定义注解实现对接口访问频次限制?
  7. html 获取下一个兄弟节点,js jquery获取当前元素的兄弟级 上一个 下一个元素
  8. java 判断类型_Java中类型判断的几种方式
  9. oracle账户用root权限执行sh,安装Oracle执行orainstRoot.sh与root.sh作用
  10. 为什么手机网速太慢_为什么不同的5G手机网速差别高达47%!