一文搞懂文本识别、银行卡识别、通用卡证识别、身份证识别 (3)

重写callback回调函数,实现对识别结果的处理
private MLCnIcrCapture.Callback idCallback = new MLCnIcrCapture.Callback() { @Override public void onSuccess(MLCnIcrCaptureResult idCardResult){ // 识别成功处理。 } };

银行卡识别

启动界面进行银行卡识别 private void startCaptureActivity(MLBcrCapture.Callback callback) {

重写回调函数,实现对识别结果处理
private MLBcrCapture.Callback callback = new MLBcrCapture.Callback() { @Override public void onSuccess(MLBcrCaptureResult bankCardResult){ // 识别成功处理。 } };

通用卡证识别

启动界面进行通用卡证识别 private void startCaptureActivity(Object object, MLGcrCapture.Callback callback)

重写回调函数,实现对识别结果处理
private MLGcrCapture.Callback callback = new MLGcrCapture.Callback() { @Override public int onResult(MLGcrCaptureResult cardResult){
//识别成功处理 return MLGcrCaptureResult.CAPTURE_STOP;// 处理结束,退出识别。 }
};

开发总结

  通过以上对比可以发现,除了文本识别不提供界面外,其处理逻辑大同小异,基本都是传要识别的图像给SDK,然后通过回调函数获得识别的结果,这里最核心的差异在于返回内容的结构化数据不同,为了便于理解,小编整理了表格出来:
返回内容总结:

服务 返回内容 返回内容说明
文本识别   MLText text   表示图像检测出的文本信息。包含两个属性:1、getStringValue():图像中检测到的所有文本内容;2、getBlocks():图像中检测到的所有文本区块,包含文本内容、文本区块边界和语种等信息。 每个文本块又包含了很多行getContents(),以及行的文本内容getStringValue()、边界getBorder()和语种getLanguageList()等信息,行内又包含了很多个字word,以及字的内容、边界和语种信息  
身份证识别   MLCnIcrCaptureResult idCardResult   public Bitmap cardBitmap 身份证图片public String idNum 身份证号码public String name 姓名public String sex 性别public String validDate 有效期限  
银行卡识别   MLBcrCaptureResult bankCardResult   public String getNumber() 获取银行卡号。public android.graphics.Bitmap getNumberBitmap() 获取校正后的银行卡号图片。public android.graphics.Bitmap getOriginalBitmap() 获取原始送检的未经校正的银行卡图片。  
通用卡证识别   MLGcrCaptureResult cardResult   public static final intCAPTURE_CONTINUE 对识别结果不满意,要求继续检测。public static final int CAPTURE_STOP 退出检测并销毁插件页面。public Bitmap cardBitmap 送检的通用卡证图片。public MLText text 通用卡证识别结果。和上面的文本识别并无区别  

  通过以上对比可以发现,身份证和银行卡返回的是直接处理好的识别内容,直接通过接口即可获取身份证号码、银行卡号这些信息,而不需要关心这些内容是如何提取出来的,而文本识别和通用卡证识别则是返回了识别到的全量信息,里面包含了块、行、字等一级级的文本内容,此时如果开发者想获取自己想要的信息,需要针对识别到的全量信息做提取,比如通过正则表达式匹配连续的x位数字识别为卡号,或者匹配识别到的某一关键字后面的内容。

通过以上分析我们可以得出开发难度对比:

开发难度对比总结

服务 开发难度 开发说明
文本识别   简单   需要开发者获取图片传给SDK,需要对识别后的结果进行信息提取,提取出自己想要的内容  
通用卡证识别   很简单   直接通过接口即可启动图像获取界面,需要对识别后的结果进行信息提取,提取出自己想要的内容  
身份证识别   极简单   直接通过接口即可启动图像获取界面,直接通过接口获取已经提取好的文字内容,无需后处理  
银行卡识别   极简单   直接通过接口即可启动图像获取界面,直接通过接口获取已经提取好的文字内容,无需后处理  
4 技术差异分析

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjwyg.html