Подтвердить что ты не робот

Не удалось загрузить lept из загрузчика findLibrary возвращается null?

Я работаю над OCR (оптическое распознавание символов). Я получил образец проекта из github. Для этого проекта я использую проект библиотеки tess-test, а проект строится и выполняется успешно, но всякий раз, когда TessBaseAPI вызванное app остановило к сожалению... и оно показывает следующую ошибку журнала

12-20 18:27:18.791: E/AndroidRuntime(24466): java.lang.ExceptionInInitializerError
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.datumdroid.android.ocr.simple.SimpleAndroidOCRActivity.onPhotoTaken(SimpleAndroidOCRActivity.java:211)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.datumdroid.android.ocr.simple.SimpleAndroidOCRActivity.onActivityResult(SimpleAndroidOCRActivity.java:135)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.Activity.dispatchActivityResult(Activity.java:5293)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.access$1100(ActivityThread.java:141)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.os.Looper.loop(Looper.java:137)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at android.app.ActivityThread.main(ActivityThread.java:5039)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.reflect.Method.invokeNative(Native Method)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.reflect.Method.invoke(Method.java:511)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at dalvik.system.NativeStart.main(Native Method)
12-20 18:27:18.791: E/AndroidRuntime(24466): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load lept from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.datumdroid.android.ocr.simple-1.apk,libraryPath=/data/app-lib/com.datumdroid.android.ocr.simple-1]: findLibrary returned null
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.Runtime.loadLibrary(Runtime.java:365)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at java.lang.System.loadLibrary(System.java:535)
12-20 18:27:18.791: E/AndroidRuntime(24466):    at com.googlecode.tesseract.android.TessBaseAPI.<clinit>(TessBaseAPI.java:47)

пожалуйста, дайте решение моей проблемы, застрявшей от 5 дней в моей заявке.

i googled много не нашел никакого решения.. Благодарю вас.

4b9b3361

Ответ 1

Убедитесь, что файл библиотеки "liblept.so" существует либо в libs/armeabi, либо в libs/armeabi-v7a, если они существуют, используйте 7Zip/WinRAR, чтобы открыть сгенерированный файл APK и убедиться, что он существует в APK также.

Ответ 2

дубликат Lib не найдена ошибка в tesseract

Проблема заключается в том, что файл liblept.so(shared library) не найден на определенном пути к библиотеке. Без просмотра вашего кода только предположение - это ваш код, пытающийся загрузить общую библиотеку liblept.so, и библиотека недоступна на этом пути.

Кроме того, код, который вы используете, либо имеет этот файл liblept.so в любом каталоге lib или внутреннего пакета, либо вам нужно сгенерировать (сгенерировать) эту общую библиотеку с помощью Android-NDK.

Ответ 3

Я не уверен, что вы нашли ответ на свою проблему, но мой был из папки libs в моем проекте, который был неправильно назван (был lib вместо libs). Моя проблема была связана с случайным удалением моего проекта и его восстановлением, извлекая APK с моего телефона. Как только я переименовал папку, моя проблема была решена. Надеюсь, это поможет.

Ответ 4

Ppl, После битвы в день.. наконец-то получил решение

В build.gradle модуля tess-two добавьте следующий код:

  sourceSets.main {
    manifest.srcFile 'src/main/AndroidManifest.xml'
    java.srcDirs = ['src/main/java']
    resources.srcDirs = ['src/main/java']
    res.srcDirs = ['src/main/res']
    jni.srcDirs = []
    jniLibs.srcDirs = ['src/main/jniLibs']
}

Главное, пожалуйста, проверьте вручную всю информацию об этих путях, указанных в вышеуказанном коде.

Приступая к этой проблеме, проверьте, где " liblept.so" существует в библиотеке tess-two. Для меня это было внутри /tesstwo/src/main/jniLibs/armeabi -v7a. Следовательно, я сделал jniLibs.srcDirs = ['src/main/jniLibs'] в приведенном выше коде. Надеюсь, это поможет!