生态文档
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

安卓ocr接入.md 6.5KB

配置流程

接入配置

注意事项

  • Ocr SDK 最低支持 Android 4.0 以上版本 API LEVEL 16。
  • CPU 架构支持 armeabi,arm64-v8a,armeabi-v7a,x86
  • Ocr SDK 将以 AAR 文件的形式提供, ocrui-release.aar
  • Ocr SDK 同时需要依赖 公共组件(common-release.aar),同样也是以 AAR 文件的形式提供,详情请参见 添加依赖
  • 本 SDK 提供多个入口方法,其中 startTakePhotoActivity 仅返回拍照后的图片路径,其它入口方法则会返回识别后的数据。请根据具体业务选择入口方法。

添加依赖

将提供的 AAR 文件加入到 App 工程的 libs 文件夹内,并且在 build.gradle 中添加下面的配置。

android{
     //...
     repositories {
        flatDir {
            dirs 'libs' //this way we can find the .aar file in libs folder
        }
    }
}

//添加依赖
dependencies {
    // json依赖
    implementation 'com.alibaba:fastjson:1.2.73'
    // okHttp依赖
    implementation 'com.squareup.okhttp3:okhttp:4.0.0'
    // 公共组件
    implementation(name: 'common-release', ext: 'aar')
    // ocr
    implementation(name: 'ocrui-release', ext: 'aar')
}

权限检测

在AndroidManifest.xml中添加

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        
  • Android 6.0 以上系统 SDK 需要用到以上权限,对 Android 6.0 以上的系统 SDK 会做权限的运行时检测。
  • Android 6.0 以下系统 -由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对权限进行检测。-

接入示例

快速调用:

# 在MainActivity中单击某个按钮的代码逻辑

Credential cert=new Credential();
cert.setPassword("xxxx");
cert.setUserCode("xxxx");
cert.setUrl("xxxx");
cert.setSysName("xxxx");

OcrSDK sdk = OcrSDK.getInstance();

sdk.init(OcrDemoActivity.this, credential,new OcrSDK.OcrLoginListener() {
    @Override
    public void onLoginSuccess() { //登录成功,拉起 SDK 页面
        OcrSDK.getInstance().startIdCardFrontActivity( new OcrSDK.IdCardFrontResultListener() {
            @Override
            public void onFailed(String errorCode, String errorMsg) {
                //txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
            }

            @Override
            public void onFinish(OcrSDK.IdCardFrontData result) {
                    int i=1;
                //txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());
            }
        });
    }

    @Override
    public void onLoginFailed(String errorCode, String errorMsg) {
        //txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);

    }
});

完整demo和sdk下载 (跳转后点击查看原始文件)

接口详细说明

SDK 接口调用方法

SDK 代码调用的入口为 OcrSDK 这个类。

public class OcrSDK {
    /**
    * 该类为一个单例,需要先获得单例对象再进行后续操作
    */
    public static OcrSDK getInstance(){
    //    ...
    }
    
    /**
    * 在使用SDK前先初始化,
    * 传入证书key `credential`,
    * 由 OcrLoginListener返回是否初始化SDK成功
    */
    public void init(Context context,Credential credential, final OcrLoginListener loginListerner){
    //    ...
    }


    /**
     * 登录成功后,调用此函数拉起sdk页面
     * 打开拍摄页面,传入证件类型ocrType
     *
     * @param resultListener 返回拍摄图片的路径
     */
    public void startTakePhotoActivity(TakePhotoResultListener resultListener,OcrType ocrType) {
        //    ...
    }

    /**
     * 登录成功后,调用此函数拉起sdk页面
     * 打开身份证正面识别
     * @param resultListener 用于返回识别结果
     */
    public void startIdCardFrontActivity(IdCardFrontResultListener resultListener) {
        //    ...

    }

    /**
     * 登录成功后,调用此函数拉起sdk页面
     * 打开身份证背面识别
     * @param resultListener 用于返回识别结果
     */
    public void startIdCardBackActivity(IdCardBackResultListener resultListener) {
        //    ...

    }
    /**
     * 登录成功后,调用此函数拉起sdk页面
     * 打开银行卡识别
     * @param resultListener 用于返回识别结果
     */
    public void startBankCardActivity(BankCardResultListener resultListener) {
        //    ...

    }

    /**
     * 登录回调接口
     */
    public interface OcrLoginListener {
        void onLoginSuccess();

        void onLoginFailed(String errorCode, String errorMsg);
    }
    
    /**
    * Ocr结果回调接口
    */
    public interface TakePhotoResultListener {
        /**
         * @RARAM exidCardResult SDK返回的识别结果的错误码
         * @RARAM exidCardResult SDK返回的识别结果的错误信息
         */
        void onFailed(String errorCode, String errorMsg);

        void onFinish(String result);
    }
    /**
    * Ocr结果回调接口
    */
    public interface IdCardFrontResultListener {
        /**
         * @RARAM exidCardResult SDK返回的识别结果的错误码
         * @RARAM exidCardResult SDK返回的识别结果的错误信息
         */
        void onFailed(String errorCode, String errorMsg);

        void onFinish(IdCardFrontData result);
    }
    /**
    * Ocr结果回调接口
    */
    public interface IdCardBackResultListener {
        /**
         * @RARAM exidCardResult SDK返回的识别结果的错误码
         * @RARAM exidCardResult SDK返回的识别结果的错误信息
         */
        void onFailed(String errorCode, String errorMsg);

        void onFinish(IdCardBackData result);
    }
    /**
    * Ocr结果回调接口
    */
    public interface BankCardResultListener {
        /**
         * @RARAM exidCardResult SDK返回的识别结果的错误码
         * @RARAM exidCardResult SDK返回的识别结果的错误信息
         */
        void onFailed(String errorCode, String errorMsg);

        void onFinish(BankCardData result);
    }

接入示例

关于接口调用的示例可参考 接入示例