1

我要求 Microblink 护理阅读器查看卡片的照片,而不是使用相机:

lazy var blinkCardRecognizer: MBCBlinkCardRecognizer = {
    return MBCBlinkCardRecognizer()
}()
lazy var recognizerCollection: MBCRecognizerCollection = {
    blinkCardRecognizer.extractCvv = false
    blinkCardRecognizer.extractIban = false
    blinkCardRecognizer.extractExpiryDate = false
    
    let recognizerList = [blinkCardRecognizer]
    return MBCRecognizerCollection(recognizers: recognizerList)
}()

我的班级已经宣布了这两个代表:

MBCBlinkCardOverlayViewControllerDelegate, MBCScanningRecognizerRunnerDelegate

我确定我正在向这个函数传递一个正确的 UIImage,并且我确实得到了processImage调用:

func prepareToReadImage(_ theImage: UIImage?) {
    let recognizerRunner: MBCRecognizerRunner = MBCRecognizerRunner(recognizerCollection: recognizerCollection)
    recognizerRunner.scanningRecognizerRunnerDelegate = self
    
    var image: MBCImage? = nil
    if let anImage = theImage {
        image = MBCImage(uiImage: anImage)
    }
    image?.cameraFrame = true
    image?.orientation = MBCProcessingOrientation.left
    let _serialQueue = DispatchQueue(label: "com.microblink.DirectAPI-sample-swift")
    _serialQueue.async(execute: {() -> Void in
        recognizerRunner.processImage(image!)
    })
}

但是这个回调没有被击中:

func recognizerRunner(_ recognizerRunner: MBCRecognizerRunner, didFinishScanningWith state: MBCRecognizerResultState) {
    if state == .valid {
        print (state)
    }
}

你能看出为什么不是吗?我看到日志警告有关系You are using time-limited license key!吗?

4

1 回答 1

1

从提供的代码中,我可以看到recognizerRunnerprepareToReadImage方法已正确输入。recognizerCollection但是,在第一个代码块MBCRecognizerCollectionrecognizers,您定义识别器[MBCRecognizer][MBCBlinkCardRecognizer]我可以建议这个解决方案,看看它是否有效:

    blinkCardRecognizer = MBCBlinkCardRecognizer()
    var recognizerList = [MBCRecognizer]()
    
    let recognizerCollection: MBCRecognizerCollection = {
        blinkCardRecognizer.extractCvv = false
        blinkCardRecognizer.extractIban = false
        blinkCardRecognizer.extractExpiryDate = false
        
        recognizerList.append(blinkCardRecognizer!)
        return MBCRecognizerCollection(recognizers: recognizerList)
    }()

    recognizerRunner = MBCRecognizerRunner(recognizerCollection: recognizerCollection)

唯一的区别是我之前定义了 BlinkCardRecognizer 和 RecognizerRunner,所以应该没有任何区别:

private var recognizerRunner: MBCRecognizerRunner?
private var blinkCardRecognizer: MBCBlinkCardRecognizer?

只是在这里补充一下,如果您看到 没有关系You are using time-limited license key!,它只是表明您使用了限时键,它不应该影响扫描过程。

于 2021-03-13T11:34:27.220 回答