2 Android SDK Mini OCR使用说明

  Mini OCR版本是Pro的精简版本,其剥离了Pro版本中的接口,仅仅保留OCR功能。Mini OCR能完成的功能,都可以在Pro版本中找到相应实现,本文档中,Android部分都以Android Studio做集成说明,以下章节开始详细描述Mini OCR的使用说明。

2.1 导入开发包

  解压 PayEgisAuthenticationSDK.zip,解压后得到三个文件。如下图所示:

名称 具体内容 说明 备注
*.aar pgsocr-release.aar SDK主体
jniLibs armeabi-v7a 等so包 So库 建议使用v7a架构的so库,如果需要其它架构的so,将v7下的库拷贝至其它arm架构下即可(注:arm64-v8a除外,我们的so库仅支持32位环境运行,如果您的项目下包含arm64-v8a文件夹将导致搭载64位处理器的设备强制加载64位库文件报错)
license aip.license 授权文件 授权文件和应用包名一一绑定,不可在多个应用下使用

  将解压出的pgsocr-release.aar拷贝到项目的libs中

  在工程的gradle文件中添加对pgsocr-release.aar的依赖,参见下图:

  在项目工程中添加license授权文件,license文件需要拷贝至项目assets文件夹中.

[danger] 注意

license文件是和应用包名绑定的,因此不同应用使用远程实名认证SDK,需要申请相应的license。

  在项目工程中添加对应的so库文件,我们建议使用v7a架构的so库,如果需要其它架构的so,将v7下的库拷贝至其它arm架构下即可(注:arm64-v8a除外,我们的so库仅支持32位环境运行,如果您的项目下包含arm64-v8a文件夹将导致搭载64位处理器的设备强制加载64位库文件报错)。

2.2 身份证识别

  Mini OCR中细化封装了身份证识别接口,用以获取身份证正反面图,并调用相关接口识别身份证正反面文字信息。

2.2.1 身份证正反面图像获取

1.实例化PayegisAuthOCRSDK类。

sdk = new PayegisAuthOCRSDK(this, Const.AppId, Const.AppKey);

2.调用身份证OCR扫描页,获取身份证正反面图像,获取图像都以startActivityForResult()方式获取,具体分为三步:

step1 获取相应Intent。具体方法名:

public Intent createIDCardOCRIntent(Context context, int requestCode)

调用方法createIDCardOCRIntent(),获取相应Intent。以获取身份证正面为例:

//获取身份证OCR Intent Intent it = sdk.createIDCardOCRIntent(this, PayegisAuthOCRSDK.LF_SCAN_ID_CARD_FRONT_REQUEST);

  createIDCardOCRIntent()方法第二个参数指定了获取身份证正面或者反面,其具体定义在PayegisAuthOCRSDK常量中,对于身份证OCR主要有两个常量定义:

常量名称 定义
PayegisAuthOCRSDK.LF_SCAN_ID_CARD_FRONT_REQUEST 获取身份证正面
PayegisAuthOCRSDK.LF_SCAN_ID_CARD_BACK_REQUEST 获取身份证反面

  如果您希望同时获取身份证正反面,则获取拍摄正反两面的Intent。具体方法名:

public Intent createIDCardOCRIntent(Context context, int requestCode, boolean hasFrontImg, boolean hasBackImg)

  第三个参数hasFrontImg代表是否已有正面照片,第四个参数hasBackImg代表是否已有反面照片,调用方法createIDCardOCRIntent(),获取相应Intent。以优先获取身份证正面为例:

boolean hasFrontImg = idCardFrontData == null ? false : true; boolean hasBackImg = idCardBackData == null ? false : true; //获取身份证OCR Intent Intent it = sdk.createIDCardOCRIntent(this, PayegisAuthOCRSDK.LF_SCAN_ID_CARD_FRONT_REQUEST, hasFrontImg, hasBackImg);

step2 调用扫描页,并处理结果

获取图像,以startActivityForResult()方式获取,在activity回调中获取相应图片,获取单面和正反两面的处理代码如下:

//调用扫描页,获取身份证正面图 startActivityForResult(it, PayegisAuthOCRSDK.LF_SCAN_ID_CARD_FRONT_REQUEST); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); boolean needBothSide = false; if (data != null) { needBothSide = data.getBooleanExtra(PayegisAuthOCRSDK.KEY_NEED_BOTHSIDE_IDCARD, false); } switch (requestCode) { case PayegisAuthOCRSDK.LF_SCAN_ID_CARD_FRONT_REQUEST: if (resultCode == RESULT_OK) { if (!needBothSide) { //显示身份证正面 String frontCropBitmapPath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); // String frontFullBitmapPath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_FULL_PATH);//未裁剪的完整图片的路径 setImage(requestCode, frontCropBitmapPath); } else { //显示身份证正反两面 HashMap pathMap = (HashMap) data.getSerializableExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); // String frontFullBitmapPath = (String) pathMap.get(PayegisAuthOCRSDK.KEY_FRONT_FULL_PATH);//未裁剪的正面完整图片的路径 // String backFullBitmapPath = (String) pathMap.get(PayegisAuthOCRSDK.KEY_BACK_FULL_PATH);//未裁剪的反面完整图片的路径 setImage(pathMap); } } break; case PayegisAuthOCRSDK.LF_SCAN_ID_CARD_BACK_REQUEST: if (resultCode == RESULT_OK) { if (!needBothSide) { //显示身份证反面 String frontCropBitmapPath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); // String frontFullBitmapPath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_FULL_PATH);//未裁剪的完整图片的路径 setImage(requestCode, frontCropBitmapPath); } else { //显示身份证正反两面 HashMap pathMap = (HashMap) data.getSerializableExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); // String frontFullBitmapPath = (String) pathMap.get(PayegisAuthOCRSDK.KEY_FRONT_FULL_PATH);//未裁剪的正面完整图片的路径 // String backFullBitmapPath = (String) pathMap.get(PayegisAuthOCRSDK.KEY_BACK_FULL_PATH);//未裁剪的反面完整图片的路径 setImage(pathMap); } } break; } }

[danger] 注意

如果需要获取未裁剪的完整图片,请按以上代码中注释部分获取图片路径。

step3 从本地获取相应图片

  在对应的requestCode下获取图像,在onActivityResult()回调中取出Intent,并从Intent PayegisAuthOCRSDK.KEY_IMAGE_PATH KEY中获取图像本地路径,获取到真实图像文件,以下贴出以上参考代码setImage()方法的全部源代码。

/** * 显示身份证单面图片和保存 * * @param requestCode * @param filePath 文件路径 */ private void setImage(int requestCode, final String filePath) { try { switch (requestCode) { case PayegisAuthOCRSDK.LF_SCAN_ID_CARD_FRONT_REQUEST: // 正面显示与保存 new Thread(new Runnable() { @Override public void run() { final Bitmap map = ImgUtil.getBitmapByPath(filePath); idCardFrontData = SDKUtil.Bitmap2Bytes(map); runOnUiThread(new Runnable() { @Override public void run() { img_id_front.setImageBitmap(map); } }); } }).start(); break; case PayegisAuthOCRSDK.LF_SCAN_ID_CARD_BACK_REQUEST: // 反面显示与保存 new Thread(new Runnable() { @Override public void run() { final Bitmap map = ImgUtil.getBitmapByPath(filePath); idCardBackData = SDKUtil.Bitmap2Bytes(map); runOnUiThread(new Runnable() { @Override public void run() { img_id_back.setImageBitmap(map); } }); } }).start(); break; } } catch (OutOfMemoryError e) { e.printStackTrace(); } } /** * 显示身份证两面图片和保存 * * @param pathMap 文件路径 */ private void setImage(final HashMap pathMap) { try { // 正面显示与保存 new Thread(new Runnable() { @Override public void run() { String frontFilepath = (String) pathMap.get(PayegisAuthOCRSDK.KEY_FRONT_PATH); if (!TextUtils.isEmpty(frontFilepath)) { final Bitmap frontBitmap = ImgUtil.getBitmapByPath(frontFilepath); idCardFrontData = SDKUtil.Bitmap2Bytes(frontBitmap); runOnUiThread(new Runnable() { @Override public void run() { img_id_front.setImageBitmap(frontBitmap); } }); } String backFilepath = (String) pathMap.get(PayegisAuthOCRSDK.KEY_BACK_PATH); if (!TextUtils.isEmpty(backFilepath)) { final Bitmap backBitmap = ImgUtil.getBitmapByPath(backFilepath); idCardBackData = SDKUtil.Bitmap2Bytes(backBitmap); runOnUiThread(new Runnable() { @Override public void run() { img_id_back.setImageBitmap(backBitmap); } }); } } }).start(); } catch (OutOfMemoryError e) { e.printStackTrace(); } }

  以上代码中ImgUtil和SDKUtil为SDK Pro 中提供的工具类,您可以通过ImgUtil.getBitmapByPath(filePath)快速从本地路径获取一个Bitmap对象;通过SDKUtil.Bitmap2Bytes(map)快速将Bitmap对象转化成字节数组,以方便图像展示和上传识别。

2.2.2 识别身份证文字信息

  获取到身份证正反面图像后,可以调用Mini OCR识别接口,识别出身份证证反面信息。具体方法名:

public void recognizeIdCard(byte[] idFrontImage, byte[] idBackImage, IDCardRecognizeCallBack idCardRecognizeCallBack)

  此方法有三个参数:

参数名称 类型 说明
idFrontImage byte[] 身份证正面图像
idBackImage byte[] 身份证反面图像
idCardRecognizeCallBack IDCardRecognizeCallBack 识别回调接口

  调用识别接口个,参考代码如下:

sdk.recognizeIdCard(idCardFrontData, idCardBackData, new IDCardRecognizeCallBack() { @Override public void onIDCardRecognize(IdCardInfo idCardInfo, int status, String message) { if (status == 0) { tv_name.setText(idCardInfo.getName()); tv_cardNo.setText(idCardInfo.getIdCard()); tv_cardDate.setText(idCardInfo.getValidateFrom() + "-" + idCardInfo.getValidateTo()); } else { showToast(message); } } });

  IDCardRecognizeCallBack回调接口封装了识别后的身份证文字信息,识别结束后回调此类void onIDCardRecognize(IdCardInfo idCardInfo,int status,String message)方法,当status==0时,表示识别成功,可从idCardInfo对象中取出相关信息,否则idCardInfo为null。message封装了相关描述信息。IdCardInfo对象封装了身份证文字信息,具体见下表:

名称 类型 描述
name String 姓名
idCard String 身份证号
sex String 性别
folk String 民族
birthday String 出生
address String 地址
authority String 发证机关
validateFrom String 有效期开始时间
validateTo String 有效期结束时间

2.3 银行卡识别

  Mini OCR 中细化封装了银行卡识别接口,用以获取银行卡正面图,并调用相关接口识别银行卡信息。

2.3.1 银行卡正面图像获取

1.实例化PayegisAuthOCRSDK类。

sdk = new PayegisAuthOCRSDK (this, Const.AppId, Const.AppKey);

2.调用银行卡OCR扫描页,获取银行卡正面图像,获取图像以startActivityForResult()方式获取,具体分为三步:

step1 获取相应Intent,并调用扫描页。具体方法名:

public Intent createBankCardOCRIntent(Context context)

调用方法createBankCardOCRIntent (),获取相应Intent。参考代码:

//获取银行卡OCR Intent Intent it = sdk.createBankCardOCRIntent(this); //调用扫描页,获取银行卡正面图 if (it != null) { startActivityForResult(it, PayegisAuthOCRSDK.LF_SCAN_BANK_CARD_REQUEST); }

  startActivityForResult ()方法第二个参数指定了获取银行卡正面图像,其具体定义在PayegisAuthOCRSDK常量中,对于银行卡OCR主要有1个常量定义:

常量名称 定义
PayegisAuthOCRSDK.LF_SCAN_BANK_CARD_REQUEST 获取银行卡正面

step2 调用扫描页,并处理结果

  获取图像,以startActivityForResult()方式获取,在activity回调中获取相应图片,参考代码:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (PayegisAuthOCRSDK.LF_SCAN_BANK_CARD_REQUEST == requestCode && resultCode == RESULT_OK) { final String filePath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); new Thread(new Runnable() { @Override public void run() { final Bitmap map = ImgUtil.getBitmapByPath(filePath); bankCardData = SDKUtil.Bitmap2Bytes(map); runOnUiThread(new Runnable() { @Override public void run() { bankcardImg.setImageBitmap(map); } }); } }).start(); } }

step3 从本地获取相应图片

  在对应的requestCode下获取图像,在onActivityResult()回调中取出Intent,并从Intent PayegisAuthOCRSDK.KEY_IMAGE_PATH KEY中获取图像本地路径,获取到真实图像文件。以上代码中ImgUtil和SDKUtil为SDK-Pro 中提供的工具类,您可以通过ImgUtil.getBitmapByPath(filePath)快速从本地路径获取一个Bitmap对象,通过SDKUtil.Bitmap2Bytes(map)快速将Bitmap对象转化成字节数组,以方便图像展示和上传识别。

2.3.2 识别银行卡

  获取到银行卡正面图像后,可以调用Mini OCR识别接口,识别出银行卡信息。具体方法名:

public void recognizeBankCard(byte[] bankCardImage, BankCardRecognizeCallBack bankCardRecognizeCallBack)

  此方法有两个个参数:

参数名称 类型 说明
bankCardImage byte[] 银行卡正面图像
bankCardRecognizeCallBack BankCardRecognizeCallBack 识别回调接口

  调用识别接口个,参考代码如下:

sdk.recognizeBankCard(bankCardData, new BankCardRecognizeCallBack() { @Override public void onBankCardRecognize(BankCardOCRInfo bankCardOCRInfo, int status, String message) { if (status == 0) { bankcardBank.setText(bankCardOCRInfo.getBankName()); bankcardNo.setText(bankCardOCRInfo.getCardNo()); bankcardType.setText(bankCardOCRInfo.getCardType()); } else { showToast(message); } }};

  IDCardRecognizeCallBack回调接口封装了识别后的银行卡信息,识别结束后回调此类

void onBankCardRecognize(BankCardOCRInfo bankCardOCRInfo, int status, String message)

方法,当status==0时,表示识别成功,可从bankCardOCRInfo对象中取出相关信息,否则bankCardOCRInfo为null。message封装了相关描述信息。BankCardOCRInfo对象封装了银行卡信息,具体见下表:

名称 类型 描述
bankName String 发卡行
cardNo String 银行卡号
cardType String 卡类型

2.4 驾驶证识别

  Mini OCR中细化封装了驾驶证识别接口,用以获取驾驶证图片,并调用相关接口识别银行卡信息。

2.4.1 驾驶证图像获取

1.实例化PayegisAuthOCRSDK类。

sdk = new PayegisAuthOCRSDK (this, Const.AppId, Const.AppKey);

2.调用驾驶证OCR扫描页,获取驾驶证图像,获取图像以startActivityForResult()方式获取,具体分为三步:

step1 获取相应Intent,并调用扫描页。具体方法名:

public Intent createCommonOCRIntent(Context context)

  调用方法createCommonOCRIntent (),获取相应Intent。参考代码:

//获取通用OCR Intent Intent it = sdk.createCommonOCRIntent(this); //调用扫描页,获取图片 if (it != null) { startActivityForResult(it, PayegisAuthOCRSDK.LF_SCAN_COMMON_REQUEST); }

  startActivityForResult ()方法第二个参数指定了获取通用图像,其具体定义在PayegisAuthOCRSDK常量中,对于通用OCR主要有1个常量定义:

常量名称 定义
PayegisAuthOCRSDK.LF_SCAN_COMMON_REQUEST 获取通用图片

step2 调用扫描页,并处理结果

  获取图像,以startActivityForResult()方式获取,在activity回调中获取相应图片,参考代码:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (PayegisAuthOCRSDK.LF_SCAN_COMMON_REQUEST == requestCode && resultCode == RESULT_OK) { filePath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); new Thread(new Runnable() { @Override public void run() { final Bitmap map = ImgUtil.getBitmapByPath(filePath); bitmapData = SDKUtil.Bitmap2Bytes(map); runOnUiThread(new Runnable() { @Override public void run() { mDemo_img_drive_ocr.setImageBitmap(map); } }); } }).start(); } }

step3 从本地获取相应图片

  在对应的requestCode下获取图像,在onActivityResult()回调中取出Intent,并从Intent PayegisAuthOCRSDK.KEY_IMAGE_PATH KEY中获取图像本地路径,获取到真实图像文件。以上代码中ImgUtil和SDKUtil为Mini OCR 中提供的工具类,您可以通过ImgUtil.getBitmapByPath(filePath)快速从本地路径获取一个Bitmap对象,通过SDKUtil.Bitmap2Bytes(map)快速将Bitmap对象转化成字节数组,以方便图像展示和上传识别。

2.4.2 识别驾驶证

  获取到驾驶证图像后,可以调用Mini OCR驾驶证识别接口,识别出驾驶证信息。具体方法名:

public void recognizeDriveLicense(byte[] driveImage, DriveLicenseRecognizeCallBack driveLicenseRecognizeCallBack)

此方法有两个个参数:

参数名称 类型 说明
driveImage byte[] 驾驶证图像
driveLicenseRecognizeCallBack DriveLicenseRecognizeCallBack 识别回调接口

  调用识别接口,参考代码如下:

sdk.recognizeDriveLicense(bitmapData, new DriveLicenseRecognizeCallBack() { @Override public void onDriveLicenseRecognize(DriveLicenseOCRInfo driveLicenseOCRInfo, int status, String message) { if (status == 0) { mDemo_drive_name.setText(driveLicenseOCRInfo.getName()); mDemo_drive_no.setText(driveLicenseOCRInfo.getCertNo()); mDemo_drive_sex.setText(driveLicenseOCRInfo.getSex()); mDemo_drive_nation.setText(driveLicenseOCRInfo.getNationality()); mDemo_drive_address.setText(driveLicenseOCRInfo.getAddress()); mDemo_drive_birthday.setText(driveLicenseOCRInfo.getBirthday()); mDemo_drive_get_day.setText(driveLicenseOCRInfo.getGetCertTime()); mDemo_drive_type.setText(driveLicenseOCRInfo.getType()); mDemo_drive_effect_day.setText(driveLicenseOCRInfo.getValidateFrom() + "-" + driveLicenseOCRInfo.getValidateTo()); mDemo_drive_effect_year.setText(driveLicenseOCRInfo.getValidateTime()); } else { showToast(message); } } });

DriveLicenseRecognizeCallBack回调接口封装了识别后的驾驶证信息,识别结束后回调此类

public void onDriveLicenseRecognize(DriveLicenseOCRInfo driveLicenseOCRInfo, int status, String message)

方法,当status==0时,表示识别成功,可从driveLicenseOCRInfo对象中取出相关信息,否则driveLicenseOCRInfo为null。message封装了相关描述信息。DriveLicenseOCRInfo对象封装了驾驶证信息,具体见下表:

名称 类型 描述
name String 姓名
certNo String 证号
sex String 性别
nationality String 国籍
address String 住址
birthday String 出生日期
getCertTime String 初次领证日期
type String 准驾车型
validateFrom String 有效开始日期
validateTo String 有效结束日期
validateTime String 有效年限

2.5 行驶证识别

  SDK Pro中细化封装了行驶证识别接口,用以获取行驶证图片,并调用相关接口识别行驶证信息。

2.5.1 行驶证图像获取

1.实例化PayegisAuthOCRSDK类。

sdk = new PayegisAuthOCRSDK (this, Const.AppId, Const.AppKey);

2.调用行驶证OCR扫描页,获取行驶证图像,获取图像以startActivityForResult()方式获取,具体分为三步:

step1 获取相应Intent,并调用扫描页。具体方法名:

public Intent createCommonOCRIntent(Context context)

  调用方法createCommonOCRIntent (),获取相应Intent。参考代码:

//获取通用OCR Intent Intent it = sdk.createCommonOCRIntent(this); //调用扫描页,获取图片 if (it != null) { startActivityForResult(it, PayegisAuthOCRSDK.LF_SCAN_COMMON_REQUEST); }

  startActivityForResult ()方法第二个参数指定了获取通用图像,其具体定义在PayegisAuthOCRSDK常量中,对于通用OCR主要有1个常量定义:

常量名称 定义
PayegisAuthOCRSDK.LF_SCAN_COMMON_REQUEST 获取通用图片

step2 调用扫描页,并处理结果

  获取图像,以startActivityForResult()方式获取,在activity回调中获取相应图片,参考代码:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (PayegisAuthOCRSDK.LF_SCAN_COMMON_REQUEST == requestCode && resultCode == RESULT_OK) { filePath = data.getStringExtra(PayegisAuthOCRSDK.KEY_IMAGE_PATH); new Thread(new Runnable() { @Override public void run() { final Bitmap map = ImgUtil.getBitmapByPath(filePath); bitmapData = SDKUtil.Bitmap2Bytes(map); runOnUiThread(new Runnable() { @Override public void run() { mDemo_img_drive_ocr.setImageBitmap(map); } }); } }).start(); } }

step3 从本地获取相应图片

  在对应的requestCode下获取图像,在onActivityResult()回调中取出Intent,并从Intent PayegisAuthOCRSDK.KEY_IMAGE_PATH KEY中获取图像本地路径,获取到真实图像文件。以上代码中ImgUtil和SDKUtil为Mini OCR 中提供的工具类,您可以通过ImgUtil.getBitmapByPath(filePath)快速从本地路径获取一个Bitmap对象,通过SDKUtil.Bitmap2Bytes(map)快速将Bitmap对象转化成字节数组,以方便图像展示和上传识别。

2.5.2 识别行驶证

  获取到行驶证图像后,可以调用Mini OCR行驶证识别接口,识别出行驶证信息。具体方法名:

public void recognizeVehicleLicense(byte[] vehicleImage, VehicleLicenseRecognizeCallBack vehicleLicenseRecognizeCallBack)

此方法有两个个参数:

参数名称 类型 说明
vehicleImage byte[] 行驶证图像
vehicleLicenseRecognizeCallBack VehicleLicenseRecognizeCallBack 识别回调接口

  调用识别接口,参考代码如下:

sdk.recognizeDriveLicense(bitmapData, new DriveLicenseRecognizeCallBack() { @Override public void onDriveLicenseRecognize(DriveLicenseOCRInfo driveLicenseOCRInfo, int status, String message) { if (status == 0) { mDemo_drive_name.setText(driveLicenseOCRInfo.getName()); mDemo_drive_no.setText(driveLicenseOCRInfo.getCertNo()); mDemo_drive_sex.setText(driveLicenseOCRInfo.getSex()); mDemo_drive_nation.setText(driveLicenseOCRInfo.getNationality()); mDemo_drive_address.setText(driveLicenseOCRInfo.getAddress()); mDemo_drive_birthday.setText(driveLicenseOCRInfo.getBirthday()); mDemo_drive_get_day.setText(driveLicenseOCRInfo.getGetCertTime()); mDemo_drive_type.setText(driveLicenseOCRInfo.getType()); mDemo_drive_effect_day.setText(driveLicenseOCRInfo.getValidateFrom() + "-" + driveLicenseOCRInfo.getValidateTo()); mDemo_drive_effect_year.setText(driveLicenseOCRInfo.getValidateTime()); } else { showToast(message); } if (!DriveLicenseActivity.this.isFinishing() && processDialog != null && processDialog.isShowing()) { processDialog.dismiss(); } } });

VehicleLicenseRecognizeCallBack回调接口封装了识别后的行驶证信息,识别结束后回调此类

public void onVehicleLicenseRecognize(VehicleLicenseOCRInfo vehicleLicenseOCRInfo, int status, String message)

方法,当status==0时,表示识别成功,可从vehicleLicenseOCRInfo对象中取出相关信息,否则vehicleLicenseOCRInfo为null。message封装了相关描述信息。VehicleLicenseOCRInfo对象封装了行驶证信息,具体见下表:

名称 类型 描述
plate String 号牌号码
carType String 车辆类型
name String 所有人
address String 住址
useType String 使用性质
brand String 品牌型号
nickNo String 车辆识别代码
engine String 发动机号码
registerDate String 注册日期
certDate String 发证日期

2.6 权限说明

  远程实名认证Mini OCR需要获取系统相关权限,在使用SDK时,需要动态获取以下3个权限,否则SDK将无法正常使用。

名称 描述
READ_PHONE_STATE 读取手机状态
WRITE_EXTERNAL_STORAGE 读写磁盘
CAMERA 使用相机

授权参考代码如下:

/** * 申请权限 */ private void initPermission() { ArrayList<String> perList = new ArrayList<>(); if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { perList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { perList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { perList.add(Manifest.permission.CAMERA); } if (perList.size() > 0) { String[] perArr = new String[perList.size()]; perList.toArray(perArr); ActivityCompat.requestPermissions(this, perArr, 100); } }

2.7 混淆说明

  远程实名认证SDK已经经过混淆,所以在打包时添加以下忽略:

-dontwarn com.** -dontwarn cn.** -dontwarn org.** -dontwarn android.** -dontwarn android.support.** -dontwarn org.apache.** #ocr -keep public class com.payegis.authsdk.** { *;} -keep public class com.payegis.pgsocr.** { *;} -keep public class com.baidu.**{ *;}

results matching ""

    No results matching ""

    results matching ""

      No results matching ""