百度文字识别具体处理

本文主要写百度文字识别中的常用的银行卡识别和身份证识别

1.在百度AI官网创建一个应用,记得把包名写对,以获取对应的API Key和Secret Key

2.下载识别sdk,根据开发文档中的要求放入所需内容

3.初始化(Applistion)

public class MyApplition extends Application {

    private Context context;
    @Override
    public void onCreate() {
        super.onCreate();

        this.context=getApplicationContext();

        OCR.getInstance(context).initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {
            @Override
            public void onResult(AccessToken result) {
                // 调用成功,返回AccessToken对象
                String token = result.getAccessToken();
            }
            @Override
            public void onError(OCRError error) {
                // 调用失败,返回OCRError子类SDKError对象
            }
        }, getApplicationContext(), "你的AK", "你的SK");

    }
}

银行卡识别

bankcard.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        intent = new Intent(MainActivity.this, CameraActivity.class);
        intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
                social.milin.tech.photocard.FileUtil.getGivFile(getApplication()).getAbsolutePath());
        intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_BANK_CARD);
        startActivityForResult(intent, REQUEST_CODE_CAMERB);

    }
});

身份证识别(分为正面和反面)  //下面只是识别正面

mancard.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        Intent intent = new Intent(MainActivity.this, CameraActivity.class);
        intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
                social.milin.tech.photocard.FileUtil.getSaveFile(getApplication()).getAbsolutePath());
        intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);
        startActivityForResult(intent, REQUEST_CODE_CAMERA);
    }
});

//获取返回结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {
        if (data != null) {
            String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
            String filePath = FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath();
            if (!TextUtils.isEmpty(contentType)) {
                if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) {
                    recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);
                } else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) {
                    recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);
                }
            }
        }
    }else if(requestCode == REQUEST_CODE_CAMERB && resultCode == Activity.RESULT_OK){
        if (data != null) {
            String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
            String filePath = FileUtil.getGivFile(getApplicationContext()).getAbsolutePath();
            if (!TextUtils.isEmpty(contentType)) {
                if (CameraActivity.CONTENT_TYPE_BANK_CARD.equals(contentType)) {
                    recIDCard2(filePath);
                } else if (CameraActivity.CONTENT_TYPE_BANK_CARD.equals(contentType)) {
                    recIDCard2(filePath);
                }
            }
        }
    }
}

身份证

private void recIDCard(String idCardSide, String filePath) {
    IDCardParams param = new IDCardParams();
    param.setImageFile(new File(filePath));
    // 设置身份证正反面
    param.setIdCardSide(idCardSide);
    // 设置方向检测
    param.setDetectDirection(true);
    // 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20
    param.setImageQuality(20);
    //获取图片的结果
    OCR.getInstance(MainActivity.this).recognizeIDCard(param, new OnResultListener<IDCardResult>() {
        @Override
        public void onResult(IDCardResult result) {
            if (result != null) {
                name.setText("姓名:"+result.getName());
                mycard.setText("身份证号:"+result.getIdNumber());
                
            }
        }

        @Override
        public void onError(OCRError error) {
            
        }
    });
}

//银行卡

private void recIDCard2(String filePath) {
    BankCardParams param = new BankCardParams();
    param.setImageFile(new File(filePath));

    //获取图片的结果
    OCR.getInstance(MainActivity.this).recognizeBankCard(param, new OnResultListener<BankCardResult>() {
        @Override
        public void onResult(BankCardResult bankCardResult) {
            if (bankCardResult != null) {

                System.out.println("银行"+bankCardResult.getBankName());
                System.out.println("卡号"+bankCardResult.getBankCardNumber());

            }
        }

        @Override
        public void onError(OCRError ocrError) {

        }
    });

}

 

//上面所用到的FileUtil

public class FileUtil {
    public static File getSaveFile(Context context) {
        File file = new File(context.getFilesDir(), "pic.jpg");
        return file;
    }
    public static File getGivFile(Context context) {
        File file = new File(context.getFilesDir(), "conf.jpg");
        return file;
    }
}

就可以获取到相应信息了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值