我要求Microblink care阅读器看一张卡片的照片,而不是使用相机:
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!的日志有关系吗?
发布于 2021-03-13 19:34:27
从所提供的代码中,我可以看到已经正确输入了recognizerRunner和prepareToReadImage方法。但是,在定义识别器和recognizerCollection的第一段代码中,我可以看到问题可能出在MBCRecognizerCollection上,因为它的参数recognizers的类型是[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!,这并不重要,它只是一个指示器,表明您正在使用有时间限制的键,它不应该影响扫描过程。
https://stackoverflow.com/questions/66605408
复制相似问题