我要求 Microblink 读卡器查看卡片的照片,而不是使用相机。我已经尝试过万事达卡的纵向和横向版本。这就是我声明主要变量的方式:
let blinkCardRecognizer = MBCBlinkCardRecognizer()
var recognizerList = [MBCRecognizer]()
lazy var recognizerCollection: MBCRecognizerCollection = {
blinkCardRecognizer.extractCvv = false
blinkCardRecognizer.extractIban = false
blinkCardRecognizer.extractExpiryDate = false
recognizerList.append(blinkCardRecognizer)
return MBCRecognizerCollection(recognizers: recognizerList)
}()
lazy var recognizerRunner: MBCRecognizerRunner = {
MBCRecognizerRunner(recognizerCollection: recognizerCollection)
}()
我已经宣布了这两个代表:
MBCBlinkCardOverlayViewControllerDelegate, MBCScanningRecognizerRunnerDelegate
获得 UIImage 后,我调用此函数:
func prepareToReadImage(_ theImage: UIImage?) {
recognizerRunner.scanningRecognizerRunnerDelegate = self
var image: MBCImage? = nil
if let anImage = theImage {
image = MBCImage(uiImage: anImage)
}
image?.cameraFrame = true
image?.orientation = MBCProcessingOrientation.down
let _serialQueue = DispatchQueue(label: "com.microblink.DirectAPI-sample-swift")
_serialQueue.async(execute: {() -> Void in
self.recognizerRunner.processImage(image!)
})
}
这是我的委托回调。每次,我都会获得以下状态.empty
:
func recognizerRunner(_ recognizerRunner: MBCRecognizerRunner, didFinishScanningWith state: MBCRecognizerResultState) {
if state == .valid { // values: .empty, .uncertain, .valid, .stageValid
let result = blinkCardRecognizer.result
DispatchQueue.main.async(execute: {() -> Void in
print (result.owner)
print (result.cardNumber)
print (result.cardNumberPrefix)
})
}
}
为什么我没有得到.valid
回复?此外,这看起来像是提取卡详细信息的正确方法吗,一次(如果以及何时)我这样做?谢谢!