private MLGcrCapture.Callback callback = new MLGcrCapture.Callback() {@Overridepublic 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 matchif (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;}@Overridepublic GeneralCardResult getResult() {List blocks = text.getBlocks();if (blocks.isEmpty()) {Log.i(TAG, "Result blocks is empty");return null;}ArrayList 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);} }Demo 效果 看下Demo效果如何,是不是还不错!
文章插图
github 源码源码已经上传github,大家也可以在github上一起完善该功能 。
github源码地址:https://github.com/HMS-MLKit/HUAWEI-HMS-MLKit-Sample
通用卡证识别demo代码路径:
MLKit-Samplemodule-textsrcmainjavacommlkitsampleactivityGeneralCardRecognitionActivity.java
更详细的开发指南参考华为开发者联盟官网
华为开发者联盟机器学习服务开发指南
内容来源:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201226181206630022&fid=18
原作者:AI_talking
文章插图
安卓手机如何添加门禁卡vivo手机添加NFC门禁卡操作步骤如下:
1、首先进入手机设置—其他网络与连接/更多设置—NFC—开启NFC开关与NFC读卡开关,同时设置付款方式为vivo钱包;
2、然后进入vivo钱包门禁卡页面,选择需要开卡的类型;
3、将非加密实体门禁卡靠近手机NFC天线进行读卡;
4、根据页面提示完成身份验证进行写卡,即可添加门禁卡 。【Android|教你如何在安卓上实现通用卡证识别一键各种卡绑定】
文章插图
android pay怎么绑定银行卡绑定银行卡的方法:
① iPhone 6s、iPhone 6s Plus、iPhone 6和iPhone 6 Plus机型
- 打开Wallet应用;
- 轻点右上角的加号图标;输入卡片的安全码,即可从苹果账户添加信用卡或借记卡;或者选择“添加其他卡片” , 并使用你的摄像头扫描输入卡片信息 。
② Apple Watch
- 在你的iPhone上打开Watch应用;
- 手机如何投屏至笔记本电脑,我的笔记本投屏为啥是灰色
- 华为自拍美颜关不掉,华为手机如何关闭拍照自动美化
- 升级完鸿蒙系统耗电快怎么解决「升级到鸿蒙系统后耗电加速三个方法教你改善手机续航能力」
- 华为手机如何关闭用户,华为下拉搜索关闭
- 正宗鲁菜的代表菜有哪些 鲁菜十大代表菜有哪些
- 三角粽子的包法视频慢动作 如何包粽子三角粽视频教程
- 我学会了炒蛋炒饭 如何蛋炒饭好吃又简单
- 专用清洗洗衣机的清洁剂 如何清洗滚筒洗衣机的橡皮圈霉斑
- 低头颈纹严重 如何拥有天鹅颈直角肩
- 余额宝里提现到银行卡里要手续费吗 余额宝的钱如何提现