ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CV学习笔记(二十三):卡号格式化匹配

2021-02-04 12:55:49  阅读:326  来源: 互联网

标签:digits 10 BIN 格式化 checksum 卡号 CV card


作者:云时之间
来源:知乎
链接:https://zhuanlan.zhihu.com/p/143662990
编辑:王萌

在后续完成了银行卡的识别之后,现在可以进行卡号核验和格式化的工作了,这些工作虽然没有之前的那么复杂,但是还是比较繁琐的。

一:卡号检测

来判断银行卡(储蓄卡,信用卡)的卡号的合法性我们用到了Luhn算法

算法流程如下:

  1. 从右到左给卡号字符串编号,最右边第一位是1,最右边第二位是2,最右边第三位是3….
  2. 从右向左遍历,对每一位字符t执行第三个步骤,并将每一位的计算结果相加得到一个数s。
  3. 对每一位的计算规则:如果这一位是奇数位,则返回t本身,如果是偶数位,则先将t乘以2得到一个数n,如果n是一位数(小于10),直接返回n,否则将n的个位数和十位数相加返回。
  4. 如果s能够整除10,则此号码有效,否则号码无效。

因为最终的结果会对10取余来判断是否能够整除10,所以又叫做模10算法。

算法代码:

def luhn_checksum(card_number):
    def digits_of(n):
        return [int(d) for d in str(n)]
    digits = digits_of(card_number)
    odd_digits = digits[-1::-2]
    even_digits = digits[-2::-2]
    checksum = 0
    checksum += sum(odd_digits)
    for d in even_digits:
    return checksum % 10

def is_luhn_valid(card_number):
    return luhn_checksum(card_number) == 0

二:BIN码校验

银行卡号一般是13-19位组成,国内一般是16,19位,其中16位为信用卡,19位为储蓄卡,通常情况下都是由“卡BIN+发卡行自定位+校验位”这三部分构成,

银行卡的前6位用来识别发卡银行或者发卡机构的,称为发卡行识别码,简称为卡BIN。拿出钱包里的卡,会发现如果是只带有银联标注的卡,十有八九都是以62开头的,但是也有例外。

这里边包含一个坑:你知道Bin码的规则,但是你不知道国内银行的BIN码,网上的也大都不全,只能以后慢慢人工扩充。

我这边整理了一份,但是也不全,大概包含有1300个BIN号,以后再慢慢整理

CV学习笔记(二十三):卡号格式化匹配
只需要将合法的卡号前6位切片出来进行查询就好了。

文件地址:

链接:pan.baidu.com/s/1jnfITx
提取码:ywud

三:模型上线

为了让模型快速上线,我用的是flask框架,然后返回一个json格式,还是比较方便的,这里推荐使用Postman来检测你的页面的合法性,在《软件测试技术大全》一书中,有个说法:

响应时间在4秒以内,大部分用户可以接受;
4~9秒以内,30%的用户选择离开;
8~9秒,则有60%的用户选择离开;
超过10秒,则90%以上的用户选择离开。

现在我的访问时间是3-6s,视网络情况不等,仍有很多地方需要优化,比如模型载入,代码耦合,特殊情况下的识别准确率等等,以及一些功能上的缺失,比如卡号有效期的识别等,这些地方仍需要不断地改进。

CV学习笔记(二十三):卡号格式化匹配

标签:digits,10,BIN,格式化,checksum,卡号,CV,card
来源: https://blog.51cto.com/15047484/2618842

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有