视觉扫描无法识别 iOS16 上的 GS1 条形码特殊字符

Are*_*ons 9 barcode ios swift ios16 gs1-qr-code

我们正在使用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)
    }
}
Run Code Online (Sandbox Code Playgroud)

先感谢您。

GS1 条形码示例

Rob*_*bin 3

我们遇到了同样的问题,将测试设备更新到iOS 16.0.2后,我们的应用程序停止正确读取 2D 条形码(QR 码和数据矩阵)。在 iOS 15 上,检测编码数据中的 FNC1 字符没有问题,该字符用于读取不同的 GS1 元素。更新后,应用程序无法正确检测FNC1字符等问题,导致工作流程中断。

今天,我们安装了iOS 16.1 beta 3,我确认该应用程序按预期正常工作,并且扫描仪能够成功检测到 FNC1 字符。一切都恢复正常了。

您可以在 Apple Beta 软件计划中注册您的设备以获得最新的公开测试版,例如我们测试过的 iOS 16.1 beta 3。

报名链接:

https://beta.apple.com/sp/betaprogram/enroll#ios

  • 是的,看起来像是苹果的问题。看来他们已经解决了,感谢报告!:)) (2认同)