微信钱包中扫描识别银行卡号的技术原理
微信已经成为世界上用户量最大的社交APP,微信支付,也非常方便,细心的朋友可能会发现,微信在绑定银行卡的环节中,有一个扫描识别银行卡号的技术,相信很多人对这个扫描识别银行卡号功能非常感兴趣,也非常想了解其中的原理。
其实这只是运用了移动端的OCR识别技术(银行卡号识别技术)。通过手机摄像头扫描采集图像后,通过移动端OCR识别软件对图片进程处理,提取银行卡卡号的过程。
但肯定有想了解的更细的开发者,下面详细介绍一下银行卡号识别技术原理:
银行卡号识别技术实现的主要步骤如下:
1.取图到彩色银行卡图片:目前主要是采用视频预览方式,对视频进行抽针,取一针清晰的彩色图像。也就是手机相机扫描界面在实时取图,目前主要的是通过检测边框来判断银行卡是否已经放到指定框内,这样保证能取到质量比较好的图片。
2.图像预处理:这里主要是去噪(包含灰度处理)和二值化,最终只留下黑色和白色。
3.卡号行定位:二值化完成后,需要定位到银行卡号的行业为主。
4.卡号单字符切分:将银行卡号单个数字进行切分(切分其实也是银行卡识别技术中 一大难点)
5.卡号字库比对识别:这一步只有是将切分完成后的单数字与字库中的数值模版进行对比,取置信度最高值。
6.输出前校验:银行卡识别输出前需要做校验,主要是使用Luhn算法进行校验,校验正确后进行输出。(这里详细说下Luhn算法:所有银行发的银行卡都是有校验规则的,卡号最好一位是校验码。主要符合以下规则:
1)从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2)从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3)将奇数位总和加上偶数位总和,结果应该可以被10整除。)
7:输出:输出银行卡号字符串。
整个银行卡识别过程结束。虽然说起来感觉简单,但是有很多细节处理方面还是需要很强的技术积累的,如果只是简单做出一个SDK,识别效果肯定不好,这需要专业级的OCR技术才能做好。这就是为什么这么多公司都使用我们的银行卡识别SDK的原因。
最后说下:微信中的银行卡识别技术原理和支付宝中银行卡扫识别技术的原理都是基于以上介绍的技术实现过程。想了解更多,可以上:https://www.sjocr.com/products/64.html
最后更新:2017-10-08 06:48:20