百度识别的调用
发布日期:2021-06-28 19:37:31 浏览次数:2 分类:技术文章

本文共 11635 字,大约阅读时间需要 38 分钟。

一.AKSK初始化

二.代码的调用

public class MainActivity extends BaseActivity {    @BindView(R.id.tv)    TextView textView;    private static final int REQUEST_CODE_CAMERA = 102;//    private static final int REQUEST_CODE_DRIVING_LICENSE = 103;//驾驶证    private static final int REQUEST_CODE_VEHICLE_LICENSE = 104;//行驶证    @Override    public int getLayoutId() {        return R.layout.activity_main;    }    @Override    public void doBusiness() {        initPermission();    }    private void initPermission() {        AndPermission.with(this).runtime().permission(Manifest.permission.WRITE_EXTERNAL_STORAGE,                Manifest.permission.CAMERA).onDenied(data -> {            /*禁止权限集合*/            LogUtils.file("\n禁止权限集合:" + Arrays.toString(data.toArray()));        }).start();    }    @OnClick({R.id.drivinglicense, R.id.driverlicense, R.id.bankcard, R.id.auto_idcard, R.id.auto_idcard_back, R.id.idcard_back, R.id.idcard})    public void onClick(View v) {        switch (v.getId()) {            //行驶证            case R.id.drivinglicense:                Intent intent = new Intent(MainActivity.this, CameraActivity.class);                intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_GENERAL);                startActivityForResult(intent, REQUEST_CODE_VEHICLE_LICENSE);                break;            //驾驶证            case R.id.driverlicense:                Intent intent1 = new Intent(MainActivity.this, CameraActivity.class);                intent1.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent1.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_GENERAL);                startActivityForResult(intent1, REQUEST_CODE_DRIVING_LICENSE);                break;            //银行卡            case R.id.bankcard:                Intent intent2 = new Intent(MainActivity.this, CameraActivity.class);                intent2.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent2.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_BANK_CARD);                startActivityForResult(intent2, REQUEST_CODE_CAMERA);                break;            //身份证正面(自动识别)            case R.id.auto_idcard:                Intent intent3 = new Intent(MainActivity.this, CameraActivity.class);                intent3.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent3.putExtra(CameraActivity.KEY_NATIVE_ENABLE, true);                //KEY_NATIVE_MANUAL设置了之后CameraActivity中不再自动初始化和释放模型                //请手动使用CameraNativeHelper初始化和释放模型,推荐这样做,可以避免一些activity切换导致的不必要的异常                intent3.putExtra(CameraActivity.KEY_NATIVE_MANUAL, true);                intent3.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);                startActivityForResult(intent3, REQUEST_CODE_CAMERA);                break;            //身份证反面(自动识别)            case R.id.auto_idcard_back:                Intent intent4 = new Intent(MainActivity.this, CameraActivity.class);                intent4.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent4.putExtra(CameraActivity.KEY_NATIVE_ENABLE, true);                intent4.putExtra(CameraActivity.KEY_NATIVE_MANUAL, true);                intent4.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_BACK);                startActivityForResult(intent4, REQUEST_CODE_CAMERA);                break;            //身份证反面            case R.id.idcard_back:                Intent intent5 = new Intent(MainActivity.this, CameraActivity.class);                intent5.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent5.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_BACK);                startActivityForResult(intent5, REQUEST_CODE_CAMERA);                break;            //身份证正面            case R.id.idcard:                Intent intent6 = new Intent(MainActivity.this, CameraActivity.class);                intent6.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH, FileUtil.getSaveFile());                intent6.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);                startActivityForResult(intent6, REQUEST_CODE_CAMERA);                break;            default:                break;        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {        super.onActivityResult(requestCode, resultCode, data);        String filePath = (String) SPUtils.get("temp", "");        if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {            if (data != null) {                String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);                if (!TextUtils.isEmpty(contentType)) {                    switch (contentType) {                        case CameraActivity.CONTENT_TYPE_ID_CARD_FRONT://身份证正面                            recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);                            break;                        case CameraActivity.CONTENT_TYPE_ID_CARD_BACK://身份证背面                            recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);                            break;                        case CameraActivity.CONTENT_TYPE_BANK_CARD://银行卡                            recCreditCard(filePath);                            break;                    }                }            }        }        if (requestCode == REQUEST_CODE_VEHICLE_LICENSE && resultCode == Activity.RESULT_OK) {//行驶证            recVehicleCard(filePath);        }        if (requestCode == REQUEST_CODE_DRIVING_LICENSE && resultCode == Activity.RESULT_OK) {//驾驶证            recDrivingCard(filePath);        }    }    /**     * @author Longchengbin     * @description 银行卡解析     * @since 2020-12-1 09:17     * @param filePath 需要识别图片的路径     **/    private void recCreditCard(String filePath) {        BankCardParams param = new BankCardParams();// 银行卡识别参数设置        param.setImageFile(new File(filePath));        BaseDialog dialog = new WaitDialog.Builder(this).setMessage("正在识别银行卡").show();        // 调用银行卡识别服务        OCR.getInstance(this).recognizeBankCard(param, new OnResultListener
() { @Override public void onResult(BankCardResult result) { dialog.dismiss(); if (result != null) { String type; if (result.getBankCardType() == BankCardResult.BankCardType.Credit) { type = "信用卡"; } else if (result.getBankCardType() == BankCardResult.BankCardType.Debit) { type = "借记卡"; } else { type = "不能识别"; } textView.setText(getString(R.string.bankcardresult, (!TextUtils.isEmpty(result.getBankCardNumber()) ? result.getBankCardNumber() : ""), (!TextUtils.isEmpty(result.getBankName()) ? result.getBankName() : ""), type)); } } @Override public void onError(OCRError error) { dialog.dismiss(); LogUtils.e("银行卡失败原因:" + error.getMessage()); } }); } /** * @author Longchengbin * @description 身份证解析 * @since 2020-12-1 09:19 * @param idCardSide 身份证的正/反面 * @param filePath 需要识别图片的路径 **/ private void recIDCard(String idCardSide, String filePath) { BaseDialog dialog = new WaitDialog.Builder(this).setMessage("正在解析身份证").show(); IDCardParams param = new IDCardParams(); param.setImageFile(new File(filePath)); param.setIdCardSide(idCardSide);// 设置身份证正反面 param.setDetectDirection(true);// 设置方向检测 // 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20 param.setImageQuality(22); OCR.getInstance(this).recognizeIDCard(param, new OnResultListener
() { @Override public void onResult(IDCardResult result) { dialog.dismiss(); LogUtils.i("身份扫描结果:" + result.toString()); if (idCardSide.equals(IDCardParams.ID_CARD_SIDE_FRONT)) { String name = ""; String sex = ""; String nation = ""; String num = ""; String address = ""; if (result.getName() != null) { name = result.getName().toString(); } if (result.getGender() != null) { sex = result.getGender().toString(); } if (result.getEthnic() != null) { nation = result.getEthnic().toString(); } if (result.getIdNumber() != null) { num = result.getIdNumber().toString(); } if (result.getAddress() != null) { address = result.getAddress().toString(); } textView.setText(getString(R.string.idcardresult, name, sex, nation, num, address)); } else { textView.setText(getString(R.string.idcardbackresult, result.getSignDate(), result.getExpiryDate(), result.getIssueAuthority())); } } @Override public void onError(OCRError error) { dialog.dismiss(); LogUtils.e("身份证识别出错:" + error.getMessage()); textView.setText(getString(R.string.idcarderror, error.getMessage())); } }); } //驾驶证解析 private void recDrivingCard(String filePath) { OcrRequestParams param = new OcrRequestParams();// 识别参数设置 param.setImageFile(new File(filePath));// 设置image参数 param.putParam("detect_direction", true);// 设置其他参数 BaseDialog dialog = new WaitDialog.Builder(this).setMessage("正在解析驾驶证").show(); // 调用驾驶证识别服务 OCR.getInstance(this).recognizeDrivingLicense(param, new OnResultListener
() { @Override public void onResult(OcrResponseResult result) { // 调用成功,返回OcrResponseResult对象 dialog.dismiss(); LogUtils.w("驾驶证返回的数据:" + result.getJsonRes()); textView.setText(result.getJsonRes()); } @Override public void onError(OCRError error) { dialog.dismiss(); LogUtils.e("驾驶证失败原因:" + error.getMessage()); } }); } //解析行驶证 private void recVehicleCard(String filePath) {// LogUtils.i("路径:" + filePath); OcrRequestParams param = new OcrRequestParams(); param.setImageFile(new File(filePath)); BaseDialog dialog = new WaitDialog.Builder(this).setMessage("正在解析行驶证").show(); OCR.getInstance(this).recognizeVehicleLicense(param, new OnResultListener
() { @Override public void onResult(OcrResponseResult result) { textView.setText(result.getJsonRes()); dialog.dismiss(); LogUtils.w("行驶证返回的数据:" + result.getJsonRes()); } @Override public void onError(OCRError error) { // 调用失败,返回OCRError对象 dialog.dismiss(); LogUtils.e("行驶证失败原因:" + error.getMessage()); } }); }}

 

 

 

转载地址:https://blog.csdn.net/xxdw1992/article/details/110421236 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:URLDecoder和URLEncoder详解
下一篇:百度文字识别申请与下载

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月02日 10时10分03秒