返回 登录
0

华为手机钱包中银行卡识别技术的原理

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

评论