[转]OCR识别的开源分析

原文地址:http://blog.csdn.net/luojun2007/article/details/51614133html

OCR识别的开源分析

OCR软件主要是由下面几个部分组成。前端

1. 图像输入、预处理:   node

2. 图像输入:对于不一样的图像格式,有着不一样的存储格式,不一样的压缩方式。预处理:主要包括二值化,噪声去除,倾斜较正等   python

3. 二值化:   对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,咱们能够简单的分为前景与背景,为了让计算机更快的,更好的识别文字,咱们须要先对彩色图进行处理,使图片只前景信息与背景信息,能够简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了。   linux

4. 噪声去除:   对于不一样的文档,咱们对燥声的定义能够不一样,根据燥声的特征进行去燥,就叫作噪声去除   android

5. 倾斜较正:   因为通常用户,在拍照文档时,都比较随意,所以拍照出来的图片不可避免的产生倾斜,这就须要文字识别软件进行较正。   git

6. 版面分析:   将文档图片分段落,分行的过程就叫作版面分析,因为实际文档的多样性,复杂性,所以,目前尚未一个固定的,最优的切割模型。   github

7. 字符切割:   因为拍照条件的限制,常常形成字符粘连,断笔,所以极大限制了识别系统的性能,这就须要文字识别软件有字符切割功能。   算法

8. 字符识别:   这一研究,已是很早的事情了,比较早有模板匹配,后来以特征提取为主,因为文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。   docker

9. 版面恢复:   人们但愿识别后的文字,仍然像原文档图片那样排列着,段落不变,位置不变,顺序不变,的输出到word文档,pdf文档等,这一过程就叫作版面恢复。   

10. 后处理、校对:   根据特定的语言上下文的关系,对识别结果进行较正,就是后处理。

开源引擎

Cuneiform for Linux —— 原本是个Windows软件,这是Linux的移植,2011年4月已经中止维护。

GNU Ocrad —— 命令行工具。有JS移植,可用于前端。

GOCR —— 命令行工具。有JS移植,可用于前端。

Tesseract —— 开源OCR引擎,也有命令行工具。HP开发Google接手。3.0以后支持训练。Golang绑定。入门教程。

OCRopy —— 基于训练的OCR引擎,训练后能够达到比Tesseract更高的准确度,项目比Tesseract更年轻。包含一个叫作OCRopus的布局分析器。in Python

Microsoft OCR Library —— Windows8.1以后的版本内置OCR引擎,可用于桌面和WindowsPhone。

Abbyy —— 收费软件,有SDK,有Cloud版本。

预处理代码

OpenCV —— 图像处理老大哥。OpenCV3中有Scene Text Detection值得一用。

Libccv —— 现代图像处理库,被不少人推荐。实现了精选的若干个图像处理算法,干净容易移植。其中Stroke Width Transfor尤为有用。

lswms —— 分行检测。

OCRopus —— 基于神经学习网络算法的布局分析库。教程。

TiRG —— 文字区域检测库,效果演示。

unpaper —— 检测文字和旋转,用的是Hough transform算法。

Scene Text Detection(OpenCV)

API

例子1,

例子2,

Paper

高层包装应用。

高层项目

node-dv —— in Node.js,整合了OpenCV、Tesseract和一些其余项目。

node-fv —— node-dv的更高层,用于证件识别。

OpenOCR —— 包装了SWT、Tesseract、Docker、RabbitMQ,提供队列和HTTP访问服务。in Golang。

openalpr —— 包装了Tesseract和OpenCV,支持多系统build,支持Docker,有Python和Node.js绑定。

Android移动端

tess-two,Tesseract的安卓移植,教程。

microblink,免费的移动OCR-SDK。

新方法:机器学习

若是有够多的样本和验证能力,机器学习能够很好的处理OCR的问题。

http://www.danvk.org/2015/01/09/extracting-text-from-an-image-using-ocropus.html

http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html

https://en.wikipedia.org/wiki/Long_short_term_memory

https://github.com/nypl/map-vectorizer

一个快速深度学习的框架,和基于它构建的OCR项目。

https://github.com/BVLC/caffe/

https://github.com/pannous/caffe-ocr

JS构建的神经学习网络

https://github.com/mateogianolio/mlp-character-recognition

参考:  

[1] http://blog.yikuyiku.com/

相关文章
相关标签/搜索