我们正在使用Vision库来扫描GS1条形码。
该库无法识别iOS 16版本中的特殊字符“GS”。
"GS" --> 组分隔符字符(ASCII 29)
在旧版本中,例如iOS 15.6或更低版本,我们没有遇到这样的问题。我在下面上传了一个GS1条形码示例图像。
扫描后,我们应该得到:{GS}10BF50001A{GS}21003032{GS}1122012722VD020
而在iOS 16上,我们得到的是:10BF50001A210030321122012722VD020
我还发布了一个示例代码,展示我们如何使用该库。我们没有更改我们的代码,这个错误只出现在iOS 16版本上。我们想知道是否引入了错误。
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
return
}
let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation: .right)
do {
try imageRequestHandler.perform([detectBarcodeRequest])
} catch {
logger.error(tag: TAG, "barcode error: \(error)")
}
}
private lazy var detectBarcodeRequest = VNDetectBarcodesRequest { [weak self] request, error in
guard error == nil else {
self?.logger.error(tag: self?.TAG, "barcode error: \(error)")
return
}
self?.processVNRequest(request)
}
private func processVNRequest(_ request: VNRequest) {
guard let barcodes = request.results else {
return
}
for barcode in barcodes {
guard let potentialBarcode = barcode as? VNBarcodeObservation else {
return
}
guard let payload = potentialBarcode.payloadStringValue else {
return
}
prepareToNotifyDetectionEvent(payload)
}
}
提前感谢您。