HarmonyOS CardRecognition的取消和失败如何区分?CardRecognition识别完一面后如果业务处理识别数据失败后想重试,需要怎么处理?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

在返回信息CallbackParam里面code:可判断成功和失败,可以做非成功就统一处理的业务。对于双面卡证,是直接一起获得的信息,包含信息为”front”和”back”通过两个不同的信息去处理正反面的业务信息即可,这边写了个demo。

1.当点右上角取消的时候,code为-1。

2.当正常识别后,如果数据正常,那边可以按照正常业务处理;如果数据不正常,假如拿出了身份证,但是名字被盖住了,那就会返回一个错乱的数据,那边可以通过不正常的数据去判断,然后通过router.back()或者router.replace()重新跳转到识别页面。

当识别异常,比如本来需要识别的是银行卡,但是用户拿出来的是学生卡,那么就不会进行识别操作。

所以可以按照code-1为取消识别判断。只要卡证正确的情况能识别了,code都为200,然后通过实际识别到的数据去判断到底该不该成功。demo如下:

import { CardRecognition, CallbackParam, CardType } from "@kit.VisionKit";
import { hilog } from '@kit.PerformanceAnalysisKit';
import { router } from '@kit.ArkUI';
import promptAction from '@ohos.promptAction';

@Entry
@Component
export struct test {
  @State fresh:boolean=false
  @State para:CallbackParam|null=null
  build() {
    Stack({ alignContent: Alignment.Top }) {
      CardRecognition({
        // 此处选择身份证类型作为示例
        supportType: CardType.CARD_ID,
        callback: ((params: CallbackParam) => {
          this.para=params
          hilog.info(0x0001, TAG, `params code: ${params.code}`)
          hilog.info(0x0001, TAG, `params cardType: ${params.cardType}`)
          hilog.info(0x0001, TAG, `params cardInfo front: ${JSON.stringify(params.cardInfo?.front)}`)
          hilog.info(0x0001, TAG, `params cardInfo back: ${JSON.stringify(params.cardInfo?.back)}`)
          //params.code是-1说明是关闭,识别到后要退出
          if(params.code==-1){
            promptAction.showToast({
              message:"未进行识别,已返回!",
              duration:1000
            })//可以根据需求自行更改promptAction类型
            router.back()
          }
          else{
            //可以使用某些条件,判断信息是否全面,如果不全面就说明识别信息不全,识别失败
            //这里以身份证的sex为例,   tips:这次存在一个小问题,如果觉得严重可以提需求单:盖住身份证人名,识别会成功,name属性为sex的目标值,sex属性为None
            if(!params.cardInfo?.front.sex){
              promptAction.showToast({
                message:"识别失败,请重试!",
                duration:1000
              })//可以根据需求自行更改promptAction类型
              router.back()
            }
            //接下来假设为未发现问题,可以进行后续操作
            else{
              //后续处理,可以设计存储数据,
              //处理完成进行跳转
              promptAction.showToast({
                message:"识别完成!",
                duration:1000
              })//可以根据需求自行更改promptAction类型
              router.back()
            }
          }})
      })
    }
    .width('100%')
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 卡证识别CardRecognition
65浏览 • 1回复 待解决
Jtag不识别/OpenOCD连接失败怎么解决?
11577浏览 • 2回复 待解决
HarmonyOS 识别手机录制语音失败
11浏览 • 1回复 待解决
网络请求数据处理
409浏览 • 1回复 待解决
相册扫码识别多码失败
1814浏览 • 1回复 待解决
HarmonyOS CardRecognition相关问题
193浏览 • 1回复 待解决
如何处理语音识别过程中错误?
225浏览 • 0回复 待解决
HarmonyOS avplayer报错怎么处理
69浏览 • 1回复 待解决
HarmonyOS 引入RN打包失败
750浏览 • 1回复 待解决
分页数据进行业务逻辑过滤
3506浏览 • 1回复 待解决