返回顶部
首页 > 资讯 > 精选 >Android如何在安卓上实现通用卡证识别
  • 166
分享到

Android如何在安卓上实现通用卡证识别

2023-06-04 22:06:31 166人浏览 八月长安
摘要

这篇文章主要介绍“Android如何在安卓上实现通用卡证识别”,在日常操作中,相信很多人在Android如何在安卓上实现通用卡证识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何在安卓上实现

这篇文章主要介绍“Android如何在安卓上实现通用卡证识别”,在日常操作中,相信很多人在Android如何在安卓上实现通用卡证识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何在安卓上实现通用卡证识别”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 开发准备

这里列举关键的开发步骤。

1.1 在项目级gradle里添加华为Maven

  打开AndroidStudio项目级build.gradle文件,增量添加如下maven地址:

buildscript {    repositories {                maven {url 'Http://developer.huawei.com/repo/'}    }    }allprojects {    repositories {               maven { url 'http://developer.huawei.com/repo/'}    }}

1.2 在应用级的build.gradle里面加上SDK依赖

dependencies{    // 引入基础SDK   implementation 'com.huawei.hms:ml-computer-vision-ocr:1.0.3.300'   // 引入拉丁语文字识别模型包   implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:1.0.3.300'   // 引入银行卡识别plugin包   implementation 'com.huawei.hms:ml-computer-card-GCr-plugin:1.0.3.300' }

  将以下语句添加到AndroidManifest.xml文件中:

<manifest     ...     <meta-data                      android:name="com.huawei.hms.ml.DEPENDENCY"           android:value= "ocr"/>     ... </manifest>

1.3 配置混淆脚本

按照官网操作指导来就行了:
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-configurinGobfuscation-scripts-4

1.4 在AndroidManifest.xml文件里面申请相机和存储权限

都是些基本操作,废话也不多说,按照官网指导来操作:
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-assigning-permissions-4

2 代码开发

2.1 启动卡证识别

@Override public void onClick(View v) {     switch (v.getId()) {         // 相册图片检测按钮。         case R.id.detect_picture:             this.startLocalImageActivity(cardImage, null, callback);             break;         // 视频流检测按钮。         case R.id.detect_video:             this.startCaptuReactivity(null, callback);             break;         // 拍照检测按钮。         case R.id.detect_take_photo:             this.startTakePhotoActivity(null, callback);             break;         default:             break;         } }

视频流识别

private void startCaptureActivity(Object object, MLGcrCapture.Callback callback) {     // 创建通用卡证识别配置器。     MLGcrCaptureConfig cardConfig = new MLGcrCaptureConfig.Factory().create();     // 创建通用卡证识别界面配置器。     MLGcrCaptureUIConfig uiConfig = new MLGcrCaptureUIConfig.Factory()                // 设置扫描框颜色。         .setScanBoxCornerColor(Color.GREEN)         // 设置扫描框中的提示文字,建议少于30个字符。         .setTipText("Recognizing, align edges")         // 设置识别界面横竖屏,支持三种模式:         // MLGcrCaptureUIConfig.ORIENTATION_AUTO:自动模式,由物理感应器决定显示方向。         // MLGcrCaptureUIConfig.ORIENTATION_LANDSCAPE:横屏模式。         // MLGcrCaptureUIConfig.ORIENTATION_PORTRaiT:竖屏模式。         .setOrientation(MLGcrCaptureUIConfig.ORIENTATION_AUTO)         .create();     // 方式一:根据自定义的卡证识别界面配置器,创建通用卡证识别处理器。     MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig, uiConfig);     // 方式二:使用默认界面,创建通用卡证识别处理器。     MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig);     // 绑定通用卡证识别处理器和处理结果回调函数。     ocrManager.capturePreview(this, object, callback); }

拍照识别

private void startTakePhotoActivity(Object object, MLGcrCapture.Callback callback) {     // 创建通用卡证识别配置器。     MLGcrCaptureConfig cardConfig = new MLGcrCaptureConfig.Factory().create();     // 创建通用卡证识别界面配置器。     MLGcrCaptureUIConfig uiConfig = new MLGcrCaptureUIConfig.Factory()         // 设置扫描框颜色。         .setScanBoxCornerColor(Color.BLUE)         // 设置扫描框中的提示文字,建议少于30个字符。         .setTipText("Taking picture, align edges")         // 设置界面横竖屏,支持三种模式:         // MLGcrCaptureUIConfig.ORIENTATION_AUTO:自动模式,由物理感应器决定显示方向。         // MLGcrCaptureUIConfig.ORIENTATION_LANDSCAPE:横屏模式。         // MLGcrCaptureUIConfig.ORIENTATION_PORTRAIT:竖屏模式。         .setOrientation(MLGcrCaptureUIConfig.ORIENTATION_AUTO)         .create();     // 方式一:根据自定义的卡证识别界面配置器,创建通用卡证识别处理器。     MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig, uiConfig);     // 方式二:使用默认界面,创建通用卡证识别处理器。     MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig);     // 绑定通用卡证识别处理器和处理结果回调函数。     ocrManager.capturePhoto(this, object, callback); }

相册图片识别

private void startLocalImageActivity(Bitmap bitmap, Object object, MLGcrCapture.Callback callback) {     // 创建通用卡证识别配置器。     MLGcrCaptureConfig config = new MLGcrCaptureConfig.Factory().create();     MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(config);     // bitmap 为需要识别的Bitmap类型卡证图像,支持的图片格式包括:jpg/jpeg/png/bmp。     ocrManager.captureImage(bitmap, object, callback); }

2.2 对识别后的内容做后处理,进行关键信息提取

  重载onResult, onCanceled, onFailure, onDenied四个方法;onResult表示返回了结果,MLGcrCaptureResult为卡证识别返回的结果,onCanceled 表示用户取消,onFailure 表示识别失败,onDenied 表示相机不可用等场景。

private MLGcrCapture.Callback callback = new MLGcrCapture.Callback() {        @Override        public int onResult(MLGcrCaptureResult result, Object object) {            Log.i(TAG, "callback onRecSuccess");            if (result == null) {                Log.e(TAG, "callback onRecSuccess result is null");                return MLGcrCaptureResult.CAPTURE_CONTINUE;            }            GeneralCardProcessor idCard = null;            GeneralCardResult cardResult = null;                                    if (cardTypeEnum == CardType.PASSCARD) {                idCard = new PassCardProcessor(result.text);                        } else if (cardTypeEnum == CardType.HKIDCARD) {                idCard = new HKIdCardProcessor(result.text);                        } else if (cardTypeEnum == CardType.COMEHOMECARD) {                idCard = new HomeCardProcessor(result.text);            }            if (idCard != null) {                                cardResult = idCard.getResult();            }            showFrontImage(result.cardBitmap);            displayResult(cardResult);            // If the results don't match            if (cardResult == null || cardResult.valid.isEmpty() || cardResult.number.isEmpty()) {                return MLGcrCaptureResult.CAPTURE_CONTINUE;            }            displayResult(cardResult);            return MLGcrCaptureResult.CAPTURE_STOP;        }           };}   };

  具体的卡号提取处理逻辑可以通过重写GeneralCardProcessor 类中的getResult()方法来完成,以港澳台通行证举例,更加详细的处理可以看GitHub上的源码

public class PassCardProcessor implements GeneralCardProcessor {    private static final String TAG = "PassCardProcessor";    private final MLText text;    public PassCardProcessor(MLText text) {        this.text = text;    }    @Override    public GeneralCardResult getResult() {        List<MLText.Block> blocks = text.getBlocks();        if (blocks.isEmpty()) {            Log.i(TAG, "Result blocks is empty");            return null;        }        ArrayList<BlockItem> originItems = getOriginItems(blocks);        String valid = "";        String number = "";        boolean validFlag = false;        boolean numberFlag = false;        for (BlockItem item : originItems) {            String tempStr = item.text;            if (!validFlag) {                String result = tryGetValidDate(tempStr);                if (!result.isEmpty()) {                    valid = result;                    validFlag = true;                }            }            if (!numberFlag) {                String result = tryGetCardNumber(tempStr);                if (!result.isEmpty()) {                    number = result;                    numberFlag = true;                }            }        }                return new GeneralCardResult(valid, number);    } }

到此,关于“Android如何在安卓上实现通用卡证识别”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Android如何在安卓上实现通用卡证识别

本文链接: https://www.lsjlt.com/news/240064.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android如何在安卓上实现通用卡证识别
    这篇文章主要介绍“Android如何在安卓上实现通用卡证识别”,在日常操作中,相信很多人在Android如何在安卓上实现通用卡证识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何在安卓上实现...
    99+
    2023-06-04
  • Android | 教你如何在安卓上实现二代身份证识别,一键实名认证
    目录前言场景开发前准备android studio 安装在项目级gradle里添加华为maven仓在应用级的build.gradle里面加上SD...
    99+
    2022-06-06
    身份证 Android
  • 如何在Win10上安装WSA,用上安卓应用
    缘起:想在PC上使用一个叫做“掌阅”的手机看书软件,但它的web端相比于微信读书而言,真的烂爆了;win11上可以直接在应用商店装WSA,但是不想升级win11。 最终的效果:    步骤: 1.首先我们需要将 Windows 10 更新...
    99+
    2023-10-05
    windows android
  • php如何实现身份证OCR识别
    这篇“php如何实现身份证OCR识别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现身份证OCR识别”文章吧。实...
    99+
    2023-07-04
  • 如何在Linux上使用Java实现实时识别二维码?
    在Linux上使用Java实现实时识别二维码并不是一件困难的事情,本文将介绍如何使用Java和相关的库实现这个功能。 一、安装必要的库 要实现实时识别二维码,我们需要使用Java的图像处理库和二维码识别库。这里我们使用JavaCV和Zxin...
    99+
    2023-07-29
    linux 实时 二维码
  • 如何使用Python实现极验验证码识别验证码
    这篇“如何使用Python实现极验验证码识别验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用Python实现极验...
    99+
    2023-07-05
  • 安卓(Android)中如何实现滑动导航
    为了打造流畅的用户导航体验,我们不得不依赖智能手机最常见的一个功能:触摸。 触摸改变应用程序的视图是现在最流行一种导航设计。在本文中,我们将经过必要的几步来实现应用内的横向滑动...
    99+
    2022-06-06
    Android
  • 如何使用HTML5实现人脸识别活体认证
    这篇文章主要为大家展示了“如何使用HTML5实现人脸识别活体认证”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5实现人脸识别活体认证”这篇文章吧...
    99+
    2024-04-02
  • 如何用三行Python代码实现验证码识别
    这篇文章主要介绍了如何用三行Python代码实现验证码识别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用三行Python代码实现验证码识别文章都会有所收获,下面我们一起来看看吧。源码如下:调试:输出:关于...
    99+
    2023-06-04
  • C++ OpenCV如何实现身份证离线识别
    这篇文章将为大家详细讲解有关C++ OpenCV如何实现身份证离线识别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。OpenCV身份证离线识别技术的主要技术就是通过OpenCV找到身份证号码区域...
    99+
    2023-06-22
  • uniapp 安卓使用live-pusher实现人脸识别(拍照)功能
    1.nvue页面使用 nvue页面可以直接使用live-pusher组件。 由于live-pusher是矩形的,一般人脸识别使用圆形,所以添加cover-image可覆盖在live-pusher上层,...
    99+
    2023-10-04
    uni-app android javascript vue.js
  • C++ OpenCV如何实现银行卡号识别功能
    这篇文章主要介绍了C++ OpenCV如何实现银行卡号识别功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、获取模板图像如图所示,这是我们的模板图像。我们需要将...
    99+
    2023-06-28
  • 如何使用Java在Linux上实时识别二维码?
    二维码已经成为了现代生活中不可或缺的一部分。它们可以用于各种用途,例如在商业上用于商品的销售和促销,以及在社交媒体上用于分享信息和链接。在本文中,我们将学习如何使用Java在Linux上实时识别二维码。 首先,我们需要安装Java和相关的...
    99+
    2023-07-29
    linux 实时 二维码
  • python如何实现腾讯滑块验证码识别
    小编给大家分享一下python如何实现腾讯滑块验证码识别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2...
    99+
    2023-06-14
  • Android基于ArcSoft如何实现人脸识别
    小编给大家分享一下Android基于ArcSoft如何实现人脸识别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在虹软的开发者中心创建一个自己的应用,将APP_I...
    99+
    2023-06-22
  • 如何让PHP在Android上实现应用
    本篇文章为大家展示了如何让PHP在Android上实现应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。对Java心生厌恶的朋友们不妨来看看Android上的新玩意...
    99+
    2024-04-02
  • 如何使用OpenCV-Python实现识别答题卡判卷功能
    这篇文章主要为大家展示了“如何使用OpenCV-Python实现识别答题卡判卷功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用OpenCV-Python实现识别答题卡判卷功能”这篇文章...
    99+
    2023-06-22
  • 如何在Android中实现通知栏
    今天就跟大家聊聊有关如何在Android中实现通知栏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、设置通知内容//CHANNEL_ID,渠道ID,Android 8.0...
    99+
    2023-06-15
  • 如何使用Python在Windows系统上实现二维码生成和识别?
    二维码是一种广泛应用于生活和工作中的矩阵条形码,它能够存储大量信息,并且具有快速读取的优点。Python是一种流行的编程语言,拥有许多优秀的库和框架,可用于生成和识别二维码。本文将介绍如何使用Python在Windows系统上实现二维码的生...
    99+
    2023-10-01
    windows 自然语言处理 二维码
  • Android中如何在安卓上开发一个微笑抓拍神器
    这篇文章主要介绍“Android中如何在安卓上开发一个微笑抓拍神器”,在日常操作中,相信很多人在Android中如何在安卓上开发一个微笑抓拍神器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作