深入浅出了解ocr识别票据原理

深入浅出了解ocr识别票据原理

ID:15892573

大小:6.06 MB

页数:21页

时间:2018-08-06

深入浅出了解ocr识别票据原理_第1页
深入浅出了解ocr识别票据原理_第2页
深入浅出了解ocr识别票据原理_第3页
深入浅出了解ocr识别票据原理_第4页
深入浅出了解ocr识别票据原理_第5页
资源描述:

《深入浅出了解ocr识别票据原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、深入浅出了解OCR识别票据原理光学字符识别技术(OCR)目前被广泛利用在手写识别、打印识别及文本图像识别等相关领域。小到文档识别、银行卡身份证识别,大到广告、海报。因为OCR技术的发明,极大简化了我们处理数据的方式。同时,机器学习(ML)和卷积神经网络(CNN)的快速发展也让文本识别出现了巨大的飞跃!我们在本文的研究中也将使用卷积神经网络CNN技术来识别零售店的纸质票据。为了方便演示,我们本次将仅采用俄语版的票据进行测试。我们的目标是项目开发一个客户端来识别来获取相关文档,在有服务器端去识别解析数据。准备好了吗?让我们一起去看看怎么做吧!预处理

2、首先,我们需要接收图像相关数据,使其水平竖直方向垂直,接下来使用算法进行检测是否为票据,最终二值化方便识别。旋转图像识别收据我们有三种方案来识别票据,下文对这三种方案做了测试。1.高阈值的自适应二值化技术。2.卷积神经网络(CNN)。3.Haar特征分类器。自适应二值化技术首先,我们看到,图中图像上包含了完整的数据,同时票据又与背景有些差距。为了能更好识别相关数据,我们需要将图片进行旋转。使其水平沿竖直方向对齐。我们使用Opencv中的自适应阈值化函数adaptive_threshold和scikit-image框架来调整收据数据。利用这两项函

3、数,我们可以在高梯度区域保留白色像素,低梯度区域保留黑色像素。这使得我们获得了一个高反差的样本图片。这样,通过裁剪,我们就能得到票据的相关信息了。使用卷积神经网络(CNN)起初我们决定使用CNN来做相关位置检测的接收点,就像我们之前做对象检测项目一样。我们使用判断角度来拾取相关关键点。这种方案虽然好用,但是和高阈值对比检测裁剪更差。因为CNN只能找到文本的角度坐标,而文字的角度变化很大,这就意味着CNN模型不是很精准。详情请参考下面CNN测试的结果。使用Haar特征分类器来识别收据作为第三种选择,我们尝试使用Haar特征分类器来做分类筛选。然而

4、经过一周的分类训练和改变相关参数,我们并没有得到什么比较积极的结果,甚至发现CNN都比Haar表现好得多。二值化最终我们使用opencv中的adaptive_threshold方法进行二值化,经过二值化处理,我们得到了一个不错的图片。文本检测接下来我们来介绍几个不同的文本检测组件。通过链接组件检测文本首先,我们使用Opencv中的findContours函数找到链接的文本组。大多数链接的组件是字符,但是也有二值化留下来嘈杂的文本,这里我们通过设置阈值的大小来过滤相关文本。然后,我们执行合成算法来合成字符,如:Й和=。通过搜索最临近的字符组合合成

5、单词。这种算法需要你找到每个相关字字母最临近的字符,然后从若干字母中找到最佳选择展示。接下来文字形成文字行。我们通过判断文字是否高度一致来判断文本是否属于同一行。当然,这个方案的缺点是不能识别有噪声的文本。使用网格对文本进行检测我们发现几乎所有票据都是相同宽度的文本,所以我们设法在收据上画出一个网格,并利用网格分割每个字符:网格一下子精简了票据识别的难度。神经网络可以精准识别每个网格内的字符。这样就解决了文本嘈杂的情况。最终可以精确统计文本数量。我们使用了以下算法来识别网格。首先,我在二值化镜像中使用这个连接组件算法。然后我们发现图中左下角有些

6、是真,所哟我们通过二维周期函数来调整网格识别。修正网格失真背后主要的思想是利用图形峰值点找到非线性几何失真,换句话说,我们必须找到这个函数的最大值的和。另外,我们还需要一个最佳失真值才行。我们使用ScipyPython模块中的RectBivariateSpline函数来参数化几何失真。并用Scipy函数进行优化。得到如下结果:总而言之,这个方法缓慢且不稳定,所以坚决不打算使用这个方案。光学字符识别我们通过组连接识别发现文本,并识别完整的单词。识别通过连接组发现的文本对于文本识别,我们使用卷积神经网络(CNN)接收相关字体进行培训。输出部分,我们

7、通过对比来提升概率。我们那个几个最初的几个选项多对比,发现有99%的准确识别率后。又通过对比字典来提高准确度,并消除相关类似的字符,如"З"和"Э"造成的错误。然而,当涉及嘈杂的文本时,该方法性能却十分低下。识别完整的单词当文本太嘈杂的时候,需要找到完整的单词才能进行单个字母的识别。我们使用下面两个方法来解决这个问题:·LSTM网络·图像非均匀分割技术LSTM网络您可以阅读这些文章,以更加深入了解使用卷积神经网络识别序列中的文本,或我们可以使用神经网络建立与语言无关的OCR吗?为此,我们使用了OCRopus库来进行识别。我们使用了等宽的字体来作

8、为人工识别样本进行训练。训练结束后,我们由利用其他数据来测试我们的神经网络,当然,测试结果非常积极。这是我们得到的数据:训练好的神经网络在简单的例子上

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。