两款开源的中文OCR工具,简直碉堡了

createh52个月前 (02-01)技术教程11

1.cnocr

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

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

cnocr 是Python3下的中英文OCR包,通过pip命令安装后即可直接使用。

pip install cnocr==1.1.0

V1.1.0 对代码做了很大改动,重写了大部分训练的代码,也生成了更多更难的训练和测试数据。训练好的模型相较于之前版本的模型精度有显著提升,尤其是针对英文单词的识别。

以下列出了主要的变更:

  • 更新了训练代码,使用mxnet的recordio首先把数据转换成二进制格式,提升后续的训练效率。训练时支持对图片做实时数据增强。也加入了更多可传入的参数。
  • 允许训练集中的文字数量不同,目前是中文10个字,英文20个字母。
  • 提供了更多的模型选择,允许大家按需训练多种不同大小的识别模型。
  • 内置了各种训练好的模型,最小的模型只有之前模型的1/5大小。所有模型都可免费使用。
  • 相较于之前版本的模型,新的模型精度有显著提升,尤其是针对英文单词的识别。新模型已经可以识别英文单词间的空格。
  • 支持文字识别只在给定字符集中进行。 对于一些纯数字或者纯英文字母的应用场景可以带来识别率提升。
  • 优化了对黑底白字多行文字图片的支持。
  • mxnet依赖升级到更新的版本了。很多人反馈mxnet 1.4.1经常找不到没法装,现在升级到>=1.5.0,<1.7.0。

示例

自带可直接使用的模型

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

  1. 局部编码模型(emb model)
  • conv:多层的卷积网络;
  • conv-lite:更小的多层卷积网络;
  • densenet:一个小型的densenet网络;
  • densenet-lite:一个更小的densenet网络。

2. 序列编码模型(seq model)

    • lstm:两层的LSTM网络;
    • gru:两层的GRU网络;
    • fc:两层的全连接网络。


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

github: https://github.com/breezedeus/cnocr

2.中文 OCR 开源项目是 chineseocr_lite

目前比较常用的中文 OCR 开源项目是 chineseocr,它基于 YOLO V3 与 CRNN 实现中文自然场景文字检测及识别,目前该项目已经有 2.5K 的 Star 量。而本文介绍的是另一个新 开源的中文 OCR 项目,它基于 chineseocr 做出改进,是一个超轻量级的中文字符识别项目。

项目地址
:https://github.com/ouyanghuiyu/chineseocr_lite


该 chineseocr_lite 项目表示,相比 chineseocr,它采用了轻量级的主干网络 PSENet,轻量级的 CRNN 模型和行文本方向分类网络 AngleNet。支持竖排文字识别,支持 ncnn 推理,psenet (8.5M) + crnn (6.3M) + anglenet (1.5M) 总模型仅 17M .

目前 chineseocr_lite 支持任意方向文字检测,在识别时会自动判断行文本方向。我们可以先看看项目作者给出的效果示例:

可以看到,chineseocr_lite 在横排文字和竖排文字的识别上都有不错的效果,而且它提供的交互式网页端能直接在页面插入图像与调用识别模型。

相关文章

有了它、就可以开始做一个简单的Java项目了

今天是刘小爱自学Java的第98天。感谢你的观看,谢谢你。话不多说,开始今天的学习:经过97天的学习,对于JavaSE、数据库以及前端的基本知识,都有了一个大致的了解。在有了这些基础后,就可以开始做J...

神器!一键生成Spring Boot +Vue项目,接私活能缩短一半工期

今天给大家推荐一款自己公司正在打磨的一款一键部署,一键生成全自动化的低代码生成器工具,可以实现前端可视化操作(拖拽形式+配置就可以生成前端页面),后端直接结合前端代码一键生成,数据库(含表字段)可一键...

公司使用了6年的Spring Boot项目部署方案 打包 + 一键部署,稳得一批

云服务器我们需要一台云服务器,我之前白嫖过一台丐版的,1 核1G 内存,并且已经安装了宝塔面板。这是从宝塔面板首页看到的服务器配置详情。MySQL登录宝塔面板,点击「数据库」→「添加数据库」,填写数据...

Java程序员也能迅速读懂区块链工作原理,以开源的区块链项目为例

开篇我关注区块链相关的知识比较多,本身也是出身java的,但市面上的java区块链项目很少,除了新经币是java的,但开源不彻底。所以学java的同学很多人不知道区块链原理。那么今天来调试个简单的区块...

京东顶尖架构师手撸Vue+SpringBoot神级项目实战手册,传疯啦

前言:不同终端的兴起,对开发人员的要求越来越高,纯浏览器端的响应式页面已经不能满足用户体验的要求,需要针对不同的终端开发不同的定制版本;为了提升开发效率,前后端分离的需求越来越被重视。内容简介本书以实...

SpringBoot2.x系列教程54--SpringBoot整合日志记录项目重要信息

前言我们在进行项目开发时,无论是前端还是后端,都必须进行日志的记录。通过日志,来记录项目开发、运行时产生的各种异常信息和重要数据。这样我们才能对项目的异常进行定位,对项目的后期运营提供数据支撑。但我们...