使用OpenCV,如何在执行OCR之前检测文本方向?

我在iOS应用程序中使用OpenCV。 我想对某些文本执行OCR,但我首先需要确定它的方向。

我如何在OpenCV中做到这一点?

我不确定如果不在Objective-C中提供OCR就可以回复这个问题 – 在没有使用OCR库的情况下很难在几行文本中完成。

好吧,20年前,我写了一个OCR系统(不使用任何OCR库)来实时读取银行支票。 顺便说一句,它也是对手写签名进行身份validation的。

检查方向的问题是怀孕的,因为检查可以随机(由操作人员)插入小型机动银行检查扫描仪中。

由于所有银行都使用不同的页面布局和装饰,因此在不依赖磁性墨水(扫描仪未检测到)的情况下找到方向的唯一方法是实际尝试对页面顶部的第一个字符进行OCR识别”。

有些字符像’O’一样含糊不清,但大多数其他字符会告诉你图片是否被反转或镜像,所以只读前3-5个字符就能完成工作(除非你有重复)。

祝你好运!

几个星期前我遇到了类似的问题,并且在我分心之前才开始研究它。 无论如何,您可以使用离散傅立叶变换实现您想要的(在某种程度上)。 模糊或侵蚀图像,使单个字/线中的所有小白色间隙填充为纯黑线(这有助于从图像中去除很多高频噪声),拍摄图像的DFT,应用低 – 在其上传递或带通滤波器(频率根据相对于图像大小的所需字体大小),并分析得到的幅度图。 您将需要进行一些研究或其他人需要详细说明,但这绝对是我找到的最佳解决方案。

我现在正在做另一个项目,但是我会在一周左右的时间内回到这个问题,让你知道更多关于它的细节,如果其他人还没有这样做的话。 当然,这篇文章现在有点老了,所以我甚至可能都没有得到回应哈哈,但无论如何,对于未来的其他人来说,这将是一个很好的参考。

霍夫变换可能会帮助你 。 在霍夫投票地图上的最大值(确切地说它是主要的群集,但你需要k-means,其中k = 1)将为你提供所需的角度。

在此处输入图像描述

这个答案已经更新

  • 如果需要检测文本的旋转角度,请看一下这篇文章 (它共享源代码):

  • 在对文本进行了校正后,可以执行OCR过程并将其结果与字典进行比较。 如果匹配率很高,则表示文本已正确旋转且方向现在正常。