原文地址:http://blog.csdn.net/luojun2007/article/details/51614133
OCR识别的开源分析
OCR软件主要是由下面几个部分组成。
1. 图像输入、预处理:
2. 图像输入:对于不同的图像格式,有着不同的存储格式,不同的压缩方式。预处理:主要包括二值化,噪声去除,倾斜较正等
3. 二值化: 对摄像头拍摄的图片,大多数是彩色图像,彩色图像所含信息量巨大,对于图片的内容,我们可以简单的分为前景与背景,为了让计算机更快的,更好的识别文字,我们需要先对彩色图进行处理,使图片只前景信息与背景信息,可以简单的定义前景信息为黑色,背景信息为白色,这就是二值化图了。
4. 噪声去除: 对于不同的文档,我们对燥声的定义可以不同,根据燥声的特征进行去燥,就叫做噪声去除
5. 倾斜较正: 由于一般用户,在拍照文档时,都比较随意,因此拍照出来的图片不可避免的产生倾斜,这就需要文字识别软件进行较正。
6. 版面分析: 将文档图片分段落,分行的过程就叫做版面分析,由于实际文档的多样性,复杂性,因此,目前还没有一个固定的,最优的切割模型。
7. 字符切割: 由于拍照条件的限制,经常造成字符粘连,断笔,因此极大限制了识别系统的性能,这就需要文字识别软件有字符切割功能。
8. 字符识别: 这一研究,已经是很早的事情了,比较早有模板匹配,后来以特征提取为主,由于文字的位移,笔画的粗细,断笔,粘连,旋转等因素的影响,极大影响特征的提取的难度。
9. 版面恢复: 人们希望识别后的文字,仍然像原文档图片那样排列着,段落不变,位置不变,顺序不变,的输出到word文档,pdf文档等,这一过程就叫做版面恢复。
10. 后处理、校对: 根据特定的语言上下文的关系,对识别结果进行较正,就是后处理。
开源引擎
—— 本来是个Windows软件,这是的移植,2011年4月已经停止维护。
—— 命令行工具。有JS移植,可用于前端。
—— 命令行工具。有JS移植,可用于前端。
—— 开源OCR引擎,也有命令行工具。HP开发Google接手。3.0之后支持训练。Golang绑定。入门教程。
—— 基于训练的OCR引擎,训练后可以达到比Tesseract更高的准确度,项目比Tesseract更年轻。包含一个叫做OCRopus的布局分析器。in 。
—— Windows8.1之后的版本内置OCR引擎,可用于桌面和WindowsPhone。
—— 收费软件,有SDK,有Cloud版本。
预处理代码
—— 图像处理老大哥。OpenCV3中有Scene Text Detection值得一用。
—— 现代图像处理库,被很多人推荐。实现了精选的若干个图像处理,干净容易移植。其中尤其有用。
—— 分行检测。
—— 基于神经学习网络算法的布局分析库。教程。
—— 文字区域检测库,效果演示。
—— 检测文字和旋转,用的是Hough transform算法。
Scene Text Detection()
,
1,
2,
,
高层项目
—— in ,整合了OpenCV、Tesseract和一些其他项目。
—— node-dv的更高层,用于证件识别。
—— 包装了SWT、Tesseract、、RabbitMQ,提供队列和HTTP访问服务。in Golang。
—— 包装了Tesseract和OpenCV,支持多系统build,支持Docker,有Python和Node.js绑定。
移动端
,Tesseract的移植,教程。
,免费的移动OCR-SDK。
新方法:
如果有够多的样本和验证能力,机器学习可以很好的处理OCR的问题。
一个快速的框架,和基于它构建的OCR项目。
JS构建的神经学习网络
参考:
[1]