三证一卡

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

银行卡DFBankCardInfo

行驶证DFVehicleLicenseInfo

驾驶证DFDrivingLicenseInfo

errorCode参考DFCardClassifySDK

results matching ""

    No results matching ""