赞
踩
本周的前沿课程由微众银行的钟伟老师、廖梓雄老师和周智老师带来了《金融科技 SaaS 产品》的分享。本次学习报告笔者将分两部分进行:
- 对金融实人认证部分以关键词或者提出问题的形式进行简略总结。
- 就其中笔者感兴趣的身份证OCR内容,结合课程理论进行实战开发,应用于解决问题。
实名认证产品知多少?
金融级实人认证的市场背景?
实人认证产品对比:传统银行 VS 互联网银行
远程实人认证逐渐成为线上业务服务的基础
金融级实人认证:产品模块介绍
金融级实人认证:标准流程
金融级实人认证:整体框架
金融级实人认证:如何保护用户隐私
交互流程
设计要点
文字识别能力
复印件告警
【攻击手段】攻击者并无身份证原件,采用黑白或彩色打印/复印出被攻击者的身份证。
【拦截原理】根据边框、颜色、材质等差异,识别彩色及黑白复印件。
屏幕翻拍件告警
【攻击手段】攻击者并无身份证原件,采用手机、电脑等电子设备中的被攻者的身份证。
【拦截原理】根据边框、摩尔纹、光线情况等差异,识别屏幕翻拍件。
PS 涂改告警
【攻击手段】情况一:攻击者有身份证原件,在原件卡面涂改信息以修改身份证件内容;情况二:攻击者无身份证原件,在身份证电子文件中使用 PS 等图像编辑软件修改身份证件内容。
【拦截原理】根据字体大小、间距行距、字形等字体改动识别 PS 涂改。
产品流程
实证 NFC 产品的认证流程如下图所示,用户通过放置身份证在手机 NFC 位置,实证 NFC 产品读取并解码身份证内置加密信息,即可获取到身份证上的要素信息、证件头像、身份证国徽面、身份证人像面等 11 要素信息,并返回给客户进行业务使用。
支持识别内容与类型
分级活体检测:可根据分级策略动态下发交互策略
活体攻击常见类型
图片内容标签识别指:对人脸核身中图片增加涉黄、涉政、涉暴、广告特征、人物特征识别等特征识别;
背景聚类主要提供对图片进行背景识别分类,将相似的背景识别归类在一起,应用于风控判断场景中;
识别结果标签直接在人脸核身的结果字段中返回,无需二次开发调用。
笔者基于对金融实人认证中的证件OCR部分感兴趣,想动手实际操作一番。一番调查,发现使用百度大脑AI提供的API可以很简单地免费实现批量识别身份证图片信息,并制成Excel表格,方便下一步进行数据分析。
百度AI的身份证接口支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限,识别准确率超过99%;同时支持身份证正面头像检测,并返回头像切片的base64编码及位置信息。
同时,支持对用户上传的身份证图片进行图像质量和风险检测,是否存在正反颠倒、模糊、欠曝、过曝等质量问题,可识别图片是否为复印件或临时身份证,是否被翻拍或编辑,是否存在四角不完整、头像或关键字段被遮挡。
python 3.6 ,pandas=1.3.5 ,requests=2.26.0 ,openpyxl=3.0.9
在编写调用程序前,首先需要到百度智能云官网的文字识别免费注册一个身份证识别。
领取后在官网控制台的应用列表里面创建一个应用,可以得到APIKey和SecretKey,后面就可以在python程序中进行API调用了。
调用接口需要添加URL参数:access_token,所以需要通过上面注册得到的API Key和Secret Key获取的access_token。
参考官方文档“Access Token获取”,笔者首先在目录下创建一个config.conf配置文件(用来存储API Key、Secret Key,已经获取的access_token)和img文件夹(用来存储要识别的身份证图片)
从config文件读取AK和SK,接着调用接口获取access_token,最后再将提取access_token,并写入config。代码如下:
config.read('config.conf', encoding='UTF-8')
# 从config文件读取AK和SK
AK = config['ApplicationInfo']['APIKey']
SK = config['ApplicationInfo']['SecretKey']
if (AK == '') + (SK == ''):
print('未填写APIKey和SecretKey,请打开config.conf填写')
time.sleep(2)
quit()
# 获取access_token
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + AK + '&client_secret=' + SK
response = requests.get(host)
# 提取access_token,并写入config
if response:
Access_token = response.json()['access_token']
try:
Access_token
except NameError:
print('APIKey和SecretKey填写有误,access_token获取失败,请检查你的填写')
time.sleep(2)
quit()
config['token'] = {
'AccessToken': Access_token
}
config.write(open('config.conf', 'w', encoding='UTF-8'), space_around_delimiters=False)
最后接口的config文件如下:
[ApplicationInfo]
apikey = wjCs6rBdyFSy7IOiqe7FEGah
secretkey =zdULBykXkvmGbrb02lOQrTmBDDC4mnLa
[token]
accesstoken=24.ca18001507c7301c1bca181e41d26ccc.2592000.1653986974.282335-26140110
笔者接着新建了一个idocr.py
文件,写了idocr(filepath)函数用来调用接口进行身份证OCR识别,这里的参数为识别图片二进制文件路径。
调用接口的核心代码如下:
# 百度大脑AI接口识别身份证信息
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"
# 二进制方式打开图片文件
f = open(filepath, 'rb')
img = base64.b64encode(f.read())
params = {"id_card_side":"front","image":img}
# access_token = ''
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
并提取身份证中有用的信息
# 提取有用信息
if 'words_result' in idinfo:
if '姓名' in idinfo['words_result']:
birthday=list(idinfo['words_result']['出生']['words'])
birthday.insert(4,'/')
birthday.insert(7,'/')
birthday=''.join(birthday)
idresult=[
idinfo['words_result']['姓名']['words'],
idinfo['words_result']['民族']['words'],
idinfo['words_result']['住址']['words'],
idinfo['words_result']['公民身份号码']['words'],
birthday,
idinfo['words_result']['性别']['words']
]
接着新建一个csvmod.py
文件,用来新建csv文件,并为csv文件追加行信息,将识别出来的身份证信息写入output.csv
文件。
import csv
def create_csv(csv_head): #新建csv文件,参数为标题行,使用py列表
path = "output.csv"
with open(path,'w',newline='',encoding='utf-8') as f:
csv_write = csv.writer(f)
csv_write.writerow(csv_head)
def write_csv(data_row): #为csv文件追加行信息,使用py列表
path = "output.csv"
with open(path,'a+',newline='',encoding='utf-8') as f:
csv_write = csv.writer(f)
csv_write.writerow(data_row)
最后将上述步骤涉及的代码封装起来,遍历img文件夹,识别身份证信息,并写入excal表格。
笔者这里以从网上找到的几张身份证假照片进行测试。(笔者也测试了自己的身份证识别,也可以成功,这里由于隐私问题就不放出来了)
再看输出的excel文件,如下图所示,完成了身份证识别并写入excel。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。