如何将信用卡号码数字拆分为单独的块以进一步识别?

目前,我公司的研发部门正在开发一款iOS应用程序,可以使用移动设备的相机识别信用卡号和有效期。 我们已经成功完成了大部分项目,现在正在将卡号数字分成不同的块进行进一步识别。 阅读更多内容以查找详细信息: http : //rnd.azoft.com/optical-recognition-ios-application/如果您已完成类似任务,我们将非常感谢您分享您的方法和收到的结果。

我所知道的所有信用卡都使用Luhn方案,类似于校验和,因此您应该使用它来validation数字。 最关键的数字在左侧,因为它们对品牌进行编码,然后通知您长度。 也就是说,有些例外情况会使绝对假设变得困难。 Luhn代码将是你最好的朋友。

有一个iOS 信用卡输入项目 ,其中包含一些Luhn代码和品牌标识的代码应该会有所帮助。

1)图像质量判断,只将质量好的图像发送到下一阶段。 质量差的图像会给你不正确的结果。 这将是一个非常糟糕的智能手机用户体验。 许多智能手机的相机具有自动对焦function,您只能在相机完成自动对焦时使用图像。

2)卡检测。 检测整张卡。 这个阶段非常重要,许多算法都失败了。 您可以通过形态学操作员或其他图像操作员检测卡片。 但这款运营商在智能手机上的速度有点慢。 或者您可以训练级联分类器进行卡检测。 这种检测比最后一种方法更快。 但是处理普通卡非常困难,我的意思是,这种方法只能检测一种卡。

3)提取字符区域,很容易获得字符区域,因为数字位于指定卡片的固定位置。

4)字符分割,使用垂直投影做分割,可以获得每个人的数字图像

5)字符识别。 在每个数字图像中查找连接的组件,裁剪图像以便仅包含连接的组件。 将裁剪的图像发送到信号数字分类器。 我试过tesseact,结果不是很糟糕。 也许你可以使用其他伟大的数字分类器。

6)数字validation。 有些卡号有validation规则。 你可以利用它。