携程2015 Open House获奖项目:银行卡扫描识别

银行卡扫描识别

Ctrip Tech

背景介绍:

图像识别是人工智能的一个重要领域 。为了编制模拟人类图像识别活动的计算机程序,人们提出了不同的图像识别模型。图像识别经历了三个阶段的发展:文字识别,数字图像处理与识别,物体识别。文字识别的研究是从1950年开始的,一般是识别字母,数字和符号,从印刷文字识别到手写文字识别,应用非常广泛。

随着智能手机兴起,手机支付的行为越来越普及。但是用户在手机上输入银行卡卡号时,速度很慢,需要仔细的校对,用户体验很差。美国的PAYPAL 、苹果公司,中国的阿里公司和腾讯都在自己的手机支付软件上推出了银行卡号识别的方案。

信用卡识别的一般流程:

项目介绍:

随着智能手机兴起,手机支付的行为越来越普及。但是用户在手机上输入银行卡卡号时,速度很慢,需要仔细的校对,用户体验不好。

某开源方案提供了信用卡卡号拍照输入的支持,本项目在开源项目的基础上增加对中国本地借记卡的支持。

本项目的主要目标是在开源方案的基础上,增加对中国本地的19位凹凸卡、平面卡、复杂背景的银行卡的卡号识别,达到或接近支付宝的识别率。

项目成果:

原开源方案只支持15位、16位信用卡,并且对于背景很浅的或者有复杂背景的15、16位信用卡不能识别。经过研究和分析,使用原开源方案框架,新增了19位银行卡的支持,解决了原来部分15、16位信用卡不能识别的问题。

解决哪几项主要问题:

1、黑色印刷体银行卡的纵坐标识别:

某些中国本地银行卡由于不使用凹凸字体而是用黑色印刷字体,原方案的原有的方式无法识别卡号的纵坐标,需要一种识别能力更强并且识别更准确的算法,以代替或者补充原算法,并使其不降低原方案对于原有凹凸卡的识别率。

通过研究图形识别的一般概念,我们了解 kitty 算法可以用于计算二值化的阀值。反向思考,如果我们规定阀值,那么kitty算法将能很好的计算图像边缘。

按照每行分别计算图像边缘的多少,我们将得到每一行的分数。连续的高分则被认为是银行卡卡号的纵坐标。

2、背景为浅色的凹凸字体的银行卡的纵坐标识别:

某些中国本地借记卡由于颜色太浅,原方案的原有的方式无法识别卡号的纵坐标,需要一种识别能力更强并且识别更准确的算法,以代替或者补充原算法,并使其不降低原有凹凸卡的识别率。

通过研究图形学的一般知识,我们了解Prewit算子能够很好的识别线段,我们使用了一些特殊的方法和特殊的限制针对银行卡做了一些优化,使其能够很好地检测前景字体。

具体的流程如下:

3、字体为黑色印刷体的背景过滤;

通过研究图形识别的一般概念, 我们了解二值化是区分前景背景的一般方法。但是对于复杂背景,对于相同眼感官的黑色,其实,其灰度值并不相同,所以使用各种算法选取合适的阀值、然后二值化的方法,可能无法取到合适阀值;换一种说法则是合适的阀值,根本不存在。我们需要一种新的方法,区分字体的前景和背景。

我们综合Laplace算子和二值化算法,提出一种新的算法。该算法能较好的过滤背景,还原字体;以达到识别的所需要二值化图像。

4、黑色印刷体的单字识别;

由于Card.IO不具备印刷字体的单字符识别能力,所以我们需要一种轻量的能适用于多种银行卡字符的单字符识别算法。

中国银行卡的印刷并不是特别规范,具体来说是有两种字体,字体大小是也在某种范围之内,所以单字符识别算法必须特征提取和模板匹配两种方式相结合的方式。

由于银行卡的字体大小在某种范围之内,特征提取选取比较简单的横投影和总投影的方式。

举例说明 0 的横投影可能是4、4、6、4 ,纵投影是2、3、4、3、4、4 ,依靠其特征匹配后,选取有相同特征的字符,再做模板匹配。

5、银行卡卡号的验证;

事实证明由于银行卡的背景,虽然经过多次扫描并统计概率 ,扫描银行卡的识别的正确率仍然无法达到用户所需的100%正确程度,所以识别的银行卡卡号必须经过校验。

由于18位银行卡不符合中国的银行卡的校验规范,所以也无法支持18位银行卡。

中国的银行卡规范确定银行卡号为19位,最后一位为校验位。校验位的值通过lihn算法计算前18位数字得出。

具体算法为:

1、所有的偶数位乘2 。

2、大于9的数字,个位数和十位数相加。

3、所有数字相加之和乘以9 。

4、其结果的个位数就是校验位。

原文发布于微信公众号 - 携程技术中心(ctriptech)

原文发表时间:2015-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 使用Gym和CNN构建多智能体自动驾驶马里奥赛车

5146
来自专栏机器学习算法与Python学习

5月,机器学习开源新项目Top-10

1614
来自专栏人工智能

一文详解如何使用Python和Keras构建属于你的“AlphaZero AI”

图:pixabay 本文来自于微信公众号:雷克世界 编译 | 嗯~是阿童木呀、KABUDA 在这篇文章中,我将试图对以下三件事情进行阐述: 1.AlphaZer...

2388
来自专栏Python专栏

Python | 论做游戏外挂,Python输过谁?

来源:http://blog.csdn.net/qq_37267015/article/details/71330600

9071
来自专栏数据小魔方

数据地图系列3|散点图模拟数据地图

今天是数据地图的第三篇——使用散点图模拟地图轮廓制作数据地图! 这一篇的地图制作思路,相对比较曲折,使用的是散点图的做法。 先用一组数据模拟地图经纬度,制作出...

3354
来自专栏AI研习社

为个人深度学习机器选择合适的配置

对于那些一直想进行深度学习研究的同学来说,如何选择合适的配置一直是个比较纠结的问题,既要考虑到使用的场景,又要考虑到价格等各方面因素。日前,medium上的一篇...

6265
来自专栏ATYUN订阅号

AI算法可以通过脑电图读数检测睡眠障碍模式

脑电图(EEG)使用放置在头皮上的电极测量大脑中的电活动。睡眠专家可利用它来诊断和评估神经系统疾病,这可能是一项繁琐的工作,需要在数小时记录的大脑活动中注释峰值...

1053
来自专栏量子位

神经网络造“汉字”新技能全开,biangbiang面自愧不如

861
来自专栏mwangblog

几种蚁群算法介绍

最早的蚁群算法,其在小规模TSP中性能尚可,再大规模TSP问题中性能下降,容易停滞。其解决旅行商问题(TSP)过程大致如下:

2953
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/7/8

1. Nathan Benaich(一个伦敦投资AI的VC,比较懂技术)写的state of AI ppt,写的不错,还有他不久之前组织的一次AI会议(水准较高...

952

扫码关注云+社区

领取腾讯云代金券