2D-коды Aztec не распознаются Google Vision - PullRequest
0 голосов
/ 24 сентября 2019

Я использую Google Mobile Vision для обнаружения 2D (QR / Aztec) / 1D кода.Приложение сталкивается с некоторыми не полностью корректными 2D-кодами, такими как example image

. Оно либо вообще не обнаруживается, либо не распознается как штрих-код UPC-A / EAN13 (каждый раз с разными значениями).Насколько я понял, это Aztec 2D-код.

версия приложения для iOS (от другого разработчика) правильно обрабатывает их, используя https://github.com/hyperoslo/BarcodeScanner (в коде версии iOS нет ничего сложного, только обычная обработка)другие приложения того же типа, что и я исправляю, как-то правильно читают эти коды (включая одно прикрепленное), все «обычные» приложения для сканирования 1D / 2D-кодов из PlayStore не работают так же, как мои (нет сканирования / EAN13 получаетотсканировано).

val barcodeDetector = BarcodeDetector.Builder(context)
        .build()

var barcodeFactory: MultiProcessor.Factory<Barcode>


Observable
.create<Barcode> { emitter->
    barcodeFactory = BarcodeTrackerFactory(
            mGraphicOverlay,
            BarcodeGraphicTracker.BarcodeUpdateListener {
                PaymentQRFragment.logger.d { "barcode update:${it.toShortString()}" }
                emitter.onNext(it)
            }
    )

    barcodeDetector.setProcessor(
            MultiProcessor.Builder(barcodeFactory).build()
    ) }
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
    PaymentQRFragment.logger.d { "will process ${it.toShortString()}" }
    //presenter.processBarcode(it)
}
.disposeOnDestroyView()


if (!barcodeDetector.isOperational) {

    val lowstorageFilter = IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW)
    val hasLowStorage = activity!!.registerReceiver(null, lowstorageFilter) != null

    if (hasLowStorage) {
        Toast.makeText(this, R.string.low_storage_error, Toast.LENGTH_LONG).show()
    }
}


..


var builder = CameraSource.Builder(context, barcodeDetector)
        .setFacing(CameraSource.CAMERA_FACING_BACK)
        .setRequestedFps(5.0f)
        .setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
        .setFlashMode(Camera.Parameters.FLASH_MODE_OFF)



mCameraSource = builder.build()

Версия Android Mobile Vision - 15.0.1 (Это старое приложение)

Некоторые кодированные данные представляют собой символы кириллицы (в одном из 8-битных кодировок кириллицы обнаружение кодированияобрабатывается в других частях кода).

Как заставить его обрабатывать эти коды?

...