功能介绍
支持对主流银行卡的卡号、有效期、发卡行、卡片类型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个字
百度的识别准确率真的很高
这个功能用起来感觉很不错啊