使用 OpenCV,如何在执行 OCR 之前检测文本方向?
Posted
技术标签:
【中文标题】使用 OpenCV,如何在执行 OCR 之前检测文本方向?【英文标题】:Using OpenCV, how can I detect text orientation before performing OCR? 【发布时间】:2012-04-24 17:50:46 【问题描述】:我在 ios 应用程序中使用 OpenCV。我想对某些文本执行 OCR,但我首先需要确定它的方向。
如何在 OpenCV 中做到这一点?
【问题讨论】:
我想这可以通过估计文本对齐来完成。 太模糊了 - 没有关于提议的库或用例(手动扫描等)的更多细节。 @ScottCorscadden 使用 openCV 【参考方案1】:我不确定在 Objective-C 中不提供 OCR 的情况下是否可以回答问题 - 如果不使用 OCR 库,几行文本很难做到这一点。
嗯,20 年前,我编写了一个 OCR 系统(不使用任何 OCR 库)来实时读取银行支票。顺便说一句,它还在验证手写签名。
检查方向的问题很严重,因为支票可以(由人工操作员)随机插入小型电动银行支票扫描仪中。
由于所有银行都使用不同的页面布局和装饰,不依赖磁性墨水(扫描仪未检测到)查找方向的唯一方法是实际尝试对在顶部找到的第一个字符进行 OCR 识别“页面”。
有些字符像“O”一样模棱两可,但大多数其他字符会告诉您图片是倒置还是镜像,因此只需阅读前 3-5 个字符即可完成工作(除非您有重复)。
祝你好运!
【讨论】:
【参考方案2】:此答案已更新。
如果需要检测文字的旋转角度,可以看this article(分享源码): 文本被校正后,可以执行 OCR 程序并将其结果与字典进行比较。如果匹配率很高,则说明文本已正确旋转并且方向现在正常。【讨论】:
【参考方案3】:几周前我遇到了类似的问题,只是在我分心之前才开始研究它。无论如何,您可以使用离散傅立叶变换(在一定程度上)实现您想要的。模糊或侵蚀图像,使单个单词/行中的所有小白色间隙都填充成一条实心黑线(这有助于从图像中去除大量高频噪声),对图像进行 DFT,应用低-通过或带通滤波器(频率根据相对于图像大小的所需字体大小),并分析生成的幅度图。您将需要进行一些研究,否则其他人将需要详细说明,但这绝对是我找到的最佳解决方案。
我现在正在做另一个项目,但我会在一周左右的时间内回到这个项目,如果其他人还没有这样做的话,我会告诉你更多的细节。当然,这个帖子现在有点老了,所以我什至可能没有得到回应哈哈,但无论如何它对将来的其他人来说是一个很好的参考。
【讨论】:
【参考方案4】:Hough transform 可能是help you。霍夫投票地图上的最大值(准确地说是占主导地位的集群,但您需要 k-means 和 k=1)将为您提供所需的角度。
【讨论】:
以上是关于使用 OpenCV,如何在执行 OCR 之前检测文本方向?的主要内容,如果未能解决你的问题,请参考以下文章
文本的检测识别实战:使用 Tesseract 进行 OpenCV OCR 和文本识别