如何在没有背景的情况下预处理信用卡并提取数字
Posted
技术标签:
【中文标题】如何在没有背景的情况下预处理信用卡并提取数字【英文标题】:How to preprocess credit card and extract numbers without background 【发布时间】:2014-03-12 02:43:23 【问题描述】:我正在尝试制作像 Card.io 这样的信用卡 ocr 引擎。但是要将卡片预处理成无噪声的二值图像是非常困难的。我使用 SWT 算法,但它不适用于所有卡。有各种低对比度背景和浮雕数字的信用卡。 OCR很难设计一个通用的算法来很好地预处理卡片,所以任何人都对这种卡片处理有经验。下图是我很难预处理的卡片示例
【问题讨论】:
我想不出任何合法的理由来做 CC OCR。 就像card.io一样,这是一种新的移动设备支付方式。我只想谈技术,这里不想谈法律 【参考方案1】:问题是信用卡是故意如此难以阅读(因此难以处理)。我能做的最好的是将它们转换为灰度并添加一些水平索贝尔过滤器,然后可能会进行更多的转换。仍然很难仅用数字提取二进制图像......而且它肯定会从图像到图像有不同的结果...... 祝你好运!
【讨论】:
【参考方案2】:我知道我迟到了,但在阿德里安·罗斯布鲁克的博文中找到了解决方案 -
https://www.pyimagesearch.com/2017/07/17/credit-card-ocr-with-opencv-and-python/
技术是用opencv进行模板匹配 然后使用灰度、形态学运算和阈值对信用卡图像进行过滤。
然后我们可以找到我们感兴趣的轮廓,即具有相关高宽比的轮廓。
一旦我们得到了我们感兴趣的轮廓(带有一组数字的轮廓),我们就可以再次找到并提取单个数字。然后我们可以将这些数字与我们的模板图像中的数字进行比较。
通过这种方式,我们可以对信用卡进行 OCR
【讨论】:
欢迎提供解决方案链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted. @Mithrandir 我编辑了答案。我觉得这就足够了,因为其他所有内容都在博客中进行了解释以上是关于如何在没有背景的情况下预处理信用卡并提取数字的主要内容,如果未能解决你的问题,请参考以下文章
如何提取json数组并在没有tableview的情况下使用它