功能介绍
支持对主流银行卡的卡号、有效期、发卡行、卡片类型4个关键字段进行结构化识别,识别准确率超过99%
应用场景
金融远程身份认证
使用银行卡和身份证识别技术,实现对客户银行账户和身份信息的结构化识别和录入,可应用于金融场景,满足对银行客户进行实名认证的需求,有效降低用户输入成本,提升用户体验,控制业务风险
电商支付绑卡
使用银行卡识别云端服务实现拍照识别或使用移动端离线SDK实现扫描识别,并结构化返回卡号、卡片类型等信息,有效提升银行卡信息录入的准确性,并大幅度降低用户手工输入成本,提升用户使用体验
接口描述
对银行卡所有关键字段进行识别。
帮助地址:https://ai.baidu.com/docs#/OCR-API-Bankcard/584acb75
请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard
请求参数
image string 是 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式
返回示例
{
"log_id": 144718895115129615,
"result": {
"bank_card_number": "3568 8900 8000 0005",
"valid_date": "07/21",
"bank_card_type": 2,
"bank_name": "招商银行"
}
}
代码实现(python3):
import urllib import base64 import json import time #client_id 为官网获取的AK, client_secret 为官网获取的SK client_id = 'XXXXXXXX' client_secret = 'XXXXXXXXX' #获取token def get_token(): host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret request = urllib.request.Request(host) request.add_header('Content-Type', 'application/json; charset=UTF-8') response = urllib.request.urlopen(request) token_content = response.read() if token_content: token_info = json.loads(token_content) token_key = token_info['access_token'] return token_key #银行卡识别 def bankcard(filename): request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard" # 二进制方式打开图片文件 f = open(filename, 'rb') img = base64.b64encode(f.read()) params = dict() params['image'] = img params['show'] = 'true' params = urllib.parse.urlencode(params).encode("utf-8") access_token = get_token() request_url = request_url + "?access_token=" + access_token request = urllib.request.Request(url=request_url, data=params) request.add_header('Content-Type', 'application/x-www-form-urlencoded') response = urllib.request.urlopen(request) content = response.read() if content: content=content.decode('utf-8') data = json.loads(content) words_result=data['result'] print ('银行卡卡号:',words_result['bank_card_number']) print ('有效日期:',words_result['valid_date']) cardtype=words_result['bank_card_type'] if cardtype==0: cardtype=='不能识别' elif cardtype==1: cardtype='借记卡' elif cardtype==2: cardtype='信用卡' print ('银行卡类型:',cardtype) print ('银行名:',words_result['bank_name'])
产品测评:
银行卡卡号: 6228 4188 8888 8888
有效日期: 10/00
银行卡类型: 0
银行名:
银行卡卡号: 3902 0181 9864 1384
有效日期: NO VALID
银行卡类型: 0
银行名:
测试结果及建议
通过评测发现百度银行卡识别具有以下一些优势:
字段齐全:支持对银行卡卡号、有效期两个基本字段信息进行结构化识别,并根据识别到的卡号判断发卡行及卡片类型,满足各类相关业务需求
准确率高:依托百度优秀的图像处理技术和海量优质数据,支持识别各角度银行卡照片,识别准确率超过99%
服务稳定:依托百度云技术实力,提供高可靠性、弹性可伸缩、高并发承载的文字识别服务,服务可用性高达99.99%
不过在实验中对银行名,识别效果稍差,希望后续能进行优化。
百度AI的功能都很强大
是啊,非常强大
使用过一些文字识别程序,为什么有的时候名字是5个字,识别后会自动删减成2个字
百度的识别准确率真的很高
这个功能用起来感觉很不错啊