Модель распознавания текста на устройстве ML Kit Vision не загружает: Ожидание загрузки модели распознавания текста. пожалуйста, подождите - PullRequest
2 голосов
/ 13 марта 2020

Я знаю, что есть много похожих вопросов ( здесь , здесь или здесь ), но, несмотря на то, что я следовал предложенным инструкциям, я все еще сталкиваюсь та же проблема.

Даже если кажется, что проект настроен правильно, в Firebase ML Kit, похоже, есть проблемы с загрузкой модели распознавания текста на устройстве, что дает мне следующее исключение:

com.google.firebase.ml.common.FirebaseMLException: Waiting for the text recognition model to be downloaded. Please wait.

Похоже, что проект настроен в соответствии с метаданными ЗАВИСИМОСТИ в манифесте для загрузки зависимостей при открытии приложения (или загрузке из Play Store):

<meta-data
   android:name="com.google.firebase.ml.vision.DEPENDENCIES"
   android:value="ocr" />

А также разрешения на доступ к Inte rnet и камерам:

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.INTERNET" />

: Приложение Gradle имеет реализацию ML Kit Vision:

implementation 'com.google.firebase:firebase-ml-vision:24.0.1'

Я также пробовал:

  1. Удаление всех данных Сервисов Google Play: Настройки-> Приложения-> Сервисы Google Play-> Хранилище-> Управление пространством-> Очистить все данные .
  2. Обновите сервисы Google Play, перезагрузите компьютер и откройте Google Play Store примерно на 15 минут. Установленная версия: 20.09.13 (120408-298964066).
  3. Проверка нехватки памяти (13 ГБ бесплатно).
  4. Удаление / разрешение камеры на приложение и сервисы Google Play.

Код, где я пытаюсь использовать библиотеку, находится здесь (реализация интерфейса ImageAnalysis.Analyzer):

@SuppressLint("UnsafeExperimentalUsageError")
    override fun analyze(imageProxy: ImageProxy) {
        Log.d(LOG_TAG, "Trying to detect something")
        val mediaImage = imageProxy.image
        val imageRotation = degreesToFirebaseRotation(imageProxy.imageInfo.rotationDegrees)
        if (mediaImage != null) {
            val firebaseImage = FirebaseVisionImage.fromMediaImage(mediaImage, imageRotation)
            val detector = FirebaseVision.getInstance().onDeviceTextRecognizer
            val result = detector.processImage(firebaseImage)
                .addOnSuccessListener { firebaseVisionText ->
                    // Task completed successfully
                    Log.d(LOG_TAG, "Text detected! ${firebaseVisionText.text}")

                    // Close img for next use
                    imageProxy.close()
                }
                .addOnFailureListener { e ->
                    // Task failed with an exception
                    Log.e(LOG_TAG, e.toString())
                    e.printStackTrace()

                    // Close img for next use
                    imageProxy.close()
                }
        }
    }

Он был написан в соответствии с официальными инструкциями здесь .

Это полный вывод:

W/izadi.explorat: Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/DynamiteModule: Local module descriptor class for com.google.android.gms.vision.dynamite.ocr not found.
I/DynamiteModule: Considering local module com.google.android.gms.vision.dynamite.ocr:0 and remote module com.google.android.gms.vision.dynamite.ocr:0
D/TextNativeHandle: Cannot load feature, fall back to load dynamite module.
W/DynamiteModule: Local module descriptor class for com.google.android.gms.vision.ocr not found.
I/DynamiteModule: Considering local module com.google.android.gms.vision.ocr:0 and remote module com.google.android.gms.vision.ocr:0
E/Vision: Error loading module com.google.android.gms.vision.ocr optional module true: com.google.android.gms.dynamite.DynamiteModule$LoadingException: No acceptable module found. Local version is 0 and remote version is 0.
E/OcrAnalyzer: com.google.firebase.ml.common.FirebaseMLException: Waiting for the text recognition model to be downloaded. Please wait.
W/System.err: com.google.firebase.ml.common.FirebaseMLException: Waiting for the text recognition model to be downloaded. Please wait.
W/System.err:     at com.google.android.gms.internal.firebase_ml.zzsc.zzd(com.google.firebase:firebase-ml-vision@@24.0.1:21)
        at com.google.android.gms.internal.firebase_ml.zzsc.zza(com.google.firebase:firebase-ml-vision@@24.0.1:39)
        at com.google.android.gms.internal.firebase_ml.zzpj.zza(com.google.firebase:firebase-ml-common@@22.0.1:31)
        at com.google.android.gms.internal.firebase_ml.zzpl.call(Unknown Source:8)
        at com.google.android.gms.internal.firebase_ml.zzpf.zza(com.google.firebase:firebase-ml-common@@22.0.1:32)
        at com.google.android.gms.internal.firebase_ml.zzpe.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at com.google.android.gms.internal.firebase_ml.zze.dispatchMessage(com.google.firebase:firebase-ml-common@@22.0.1:6)
        at android.os.Looper.loop(Looper.java:227)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Есть идеи?

У кого-нибудь есть идеи о том, что мне не хватает или как ее решить? Это происходит как на моем устройстве (Xiaomi Mi 8 - Android 10), так и на виртуальном устройстве (Nexus 5X - Android 10 + Play Store).

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Спасибо за ваш отзыв!

Службы Google Play версии 20.09.13, которой у вас нет в списке поддерживаемых в настоящее время для загрузки дополнительного модуля. Теоретически, мы должны поддерживать все версии, которые в настоящее время находятся в prod после 19.8.31 (это изменится, когда выйдет новая версия). Я дважды уточню у моего коллеги, чтобы узнать, почему вы получили 20.08.13, а его нет в списке рассылки.

А пока не могли бы вы попытаться обновить его еще раз, чтобы узнать, сможете ли вы получить новую версию сервиса Google Play?

Спасибо!

0 голосов
/ 07 мая 2020

В конце концов, попробовав его на разных устройствах, я понял, что проблема, похоже, связана с тем, как на устройстве были установлены Сервисы Google Play.

В исходном устройстве тестирования Сервисы Google Play были установлены как пользовательские приложения, и это, очевидно, предотвратило загрузку дополнительного модуля. После установки Сервисов Play на системном уровне проблема была решена.

TLDR: для загрузки дополнительных модулей необходимо установить Сервисы Google Play на уровне system , очевидно.

0 голосов
/ 13 марта 2020

попробуйте добавить эту зависимость:

// ML Kit dependencies
implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
// Barcode detection model.
implementation 'com.google.firebase:firebase-ml-vision-barcode-model:16.0.2'
implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.1'

также проверьте эту ссылку: Android Комплект Studio ML не может загрузить модуль OCR

...