三证一卡
1. 三证一卡 SDK 说明文档
1.1 简介
三证一卡扫描SDK用于扫描是 身份证、银行卡、行驶证、驾驶证,并返回OCR识别结果。工作的原理为SDK从摄像头取得视频流,并分析每一帧图片是否清晰,是否为目标证件,如果是则抽取当前帧图片,发送到服务端返回OCR识别结果。
服务端接口介绍:
类型 | 接口 |
---|---|
身份证 | /ocr/idcard |
银行卡 | /ocr/bankcard |
行驶证 | /ocr/vehicle_license |
驾驶证 | /ocr/driving_license |
VIN码 | /ocr/vin |
1.2 当前版本
慧定损 SDK 当前最新版本是v1.0.2,2020年9月25日更新。
支持架构armeabi-v7a,arm64-v8a
sdk双架构编译增量4.8M
最低支持系统版本Android4.4
2. 三证一卡 SDK 集成说明
2.1 注意事项
license文件(DFLicense)用以控制程序的包名和有效时间(时间范围可以直接查看文件内容获取),请用户一定要确认程序的包名是否与 license 绑定的包名一致,请确保程序运行设备的系统时间在 license 的有效时间内。
2.2 SDK目录结构
2.3 将SDK集成到开发环境
使用SDK前,首先需要将其集成到您的开发环境中。
1,将DFCardScanDemo下的module模块DFCardScan以module的方式导入工程,通过File->New>importModule->选中DFCardScanDemo文件夹下的DFCardScan->连续点击Next完成导入。
2,在新建应用的根目录下面的builde.gradle下添加
repositories {
flatDir {
dirs project(':DFCardScan').file('libs')
}
}
在build.gradle中的dependencies{}中添加
compile project(':DFCardScan')
修改如下
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs project(':DFCardScan').file('libs')
}
}
}
dependencies {
compile project('DFCardScan')
}
3,将DFCardScanDemo工程中app的assets目录下的所有文件拷贝到您的工程中的assets目录下。
2.4 开始检测
跳转身份证检测界面
DFCardScan.create(this)
.startCardDetect()
.setCallRecognize(true)//选填,是否调用识别接口,true-调用,fasle-不调用,默认不调用
.setApiId(API_ID)//api id,如果setCallRecognize设置为true,必填,设置为false,不用填
.setApiSecret(API_SECRET)// api secret,如果setCallRecognize设置为true,必填,设置为false,不用填
.setScanType(DFScanType.ID_CARD)//身份证类型,必填
.setFilterCopyCard(false)//是否过滤复印件,true-过滤,false-不过滤,默认过滤,选填
.forResult(100);
跳转银行卡检测界面
DFCardScan.create(this)
.startCardDetect()
.setCallRecognize(true)//选填,是否调用识别接口,true-调用,fasle-不调用,默认不调用
.setApiId(API_ID)//api id,如果setCallRecognize设置为true,必填,设置为false,不用填
.setApiSecret(API_SECRET)// api secret,如果setCallRecognize设置为true,必填,设置为false,不用填
.setScanType(DFScanType.BANK_CARD)//银行卡类型,必填
.setFilterCopyCard(false)//是否过滤复印件,true-过滤,false-不过滤,默认过滤,选填
.forResult(101);
跳转行驶证检测界面
DFCardScan.create(this)
.startCardDetect()
.setCallRecognize(true)//选填,是否调用识别接口,true-调用,fasle-不调用,默认不调用
.setApiId(API_ID)//api id,如果setCallRecognize设置为true,必填,设置为false,不用填
.setApiSecret(API_SECRET)// api secret,如果setCallRecognize设置为true,必填,设置为false,不用填
.setScanType(DFScanType.VEHICLE_LICENSE)//行驶证类型,必填
.setFilterCopyCard(false)//是否过滤复印件,true-过滤,false-不过滤,默认过滤,选填
.forResult(102);
跳转驾驶证检测界面
DFCardScan.create(this)
.startCardDetect()
.setCallRecognize(true)//选填,是否调用识别接口,true-调用,fasle-不调用,默认不调用
.setApiId(API_ID)//api id,如果setCallRecognize设置为true,必填,设置为false,不用填
.setApiSecret(API_SECRET)// api secret,如果setCallRecognize设置为true,必填,设置为false,不用填
.setScanType(DFScanType.DRIVING_LICENSE)//驾驶证类型,必填
.setFilterCopyCard(false)//是否过滤复印件,true-过滤,false-不过滤,默认过滤,选填
.forResult(103);
跳转自动扫描检测界面
DFCardScan.create(this)
.startCardDetect()
.setCallRecognize(true)//选填,是否调用识别接口,true-调用,fasle-不调用,默认不调用
.setApiId(API_ID)//api id,如果setCallRecognize设置为true,必填,设置为false,不用填
.setApiSecret(API_SECRET)// api secret,如果setCallRecognize设置为true,必填,设置为false,不用填
.setScanType(DFScanType.AUTO_SCAN)//自动检测卡片类型,必填
.setFilterCopyCard(false)//是否过滤复印件,true-过滤,false-不过滤,默认过滤,选填
.forResult(104);
在 onActivityResult 接收数据
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode) {
//获取身份证数据
case 100:
if (resultCode == RESULT_OK) {
DFIDCardInfo idCardInfo = DFCardScan.obtainIDCardResult(data);
} else {
if (data != null) {
int errorCode = DFCardScan.obtainErrorCode(data);
}
}
break;
//获取银行卡数据
case 101:
if (resultCode == RESULT_OK) {
DFBankCardInfo bankCardInfo = DFCardScan.obtainBankCardResult(data);
} else {
if (data != null) {
int errorCode = DFCardScan.obtainErrorCode(data);
}
}
//获取行驶证数据
case 102:
if (resultCode == RESULT_OK) {
DFVehicleLicenseInfo vehicleLicenseInfo = DFCardScan.obtainVehicleLicenseResult(data);
} else {
if (data != null) {
int errorCode = DFCardScan.obtainErrorCode(data);
}
}
//获取驾驶证数据
case 103:
if (resultCode == RESULT_OK) {
DFDrivingLicenseInfo drivingLicenseInfo = DFCardScan.obtainDrivingLicenseResult(data);
} else {
if (data != null) {
int errorCode = DFCardScan.obtainErrorCode(data);
}
}
//获取自动扫描数据
case 104:
if (resultCode == RESULT_OK) {
//扫描到的卡片数据类型
DFCardTypeInfo cardTypeInfo = DFCardScan.obtainCardTypeInfo(data);
switch (cardTypeInfo) {
case ID_CARD:
DFIDCardInfo idCardInfo = DFCardScan.obtainIDCardResult(data);
break;
case BANK_CARD:
DFBankCardInfo bankCardInfo = DFCardScan.obtainBankCardResult(data);
break;
case VEHICLE_LICENSE:
DFVehicleLicenseInfo vehicleLicenseInfo = DFCardScan.obtainVehicleLicenseResult(data);
break;
case DRIVING_LICENSE:
DFDrivingLicenseInfo drivingLicenseInfo = DFCardScan.obtainDrivingLicenseResult(data);
break;
}
} else {
if (data != null) {
int errorCode = DFCardScan.obtainErrorCode(data);
}
}
break;
}
}
扫描结果参考
身份证DFIDCardInfo
errorCode参考DFCardClassifySDK