12

嗨,我正在研究OCR(光学字符识别),我从 github 获得了一个示例项目。对于这个项目,我正在使用 tess-test 库项目,项目构建并成功执行,但是每当调用 TessBaseAPI 时,应用程序就会不幸停止......它显示以下日志错误

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 天。

我google了很多没有找到任何解决方案..谢谢

4

4 回答 4

11

确保库文件“liblept.so”存在于libs/armeabilibs/armeabi-v7a中,如果存在,请使用 7Zip/WinRAR 打开生成的 APK 文件并确保它也存在于 APK 中。

于 2012-12-20T14:10:08.107 回答
0

在 tesseract 中找不到 Lib的副本错误

问题是在特定库路径上找不到 liblept.so(共享库)文件。在没有看到您的代码的情况下,仅假设您的代码尝试加载共享库 liblept.so 并且该库在该路径上不可用。

此外,您使用的代码要么在任何 lib 或内部包目录中包含该 liblept.so 文件,要么您必须使用 Android-NDK 生成(构建)该共享库。

于 2012-12-20T14:13:50.440 回答
0

我不确定您是否找到了问题的答案,但我的答案来自我项目中的 libs 文件夹,但名称不正确(是 lib 而不是 libs)。我的问题是意外删除我的项目并不得不通过从手机中提取 APK 来恢复它的结果。重命名文件夹后,我的问题就解决了。希望有帮助。

于 2014-10-14T00:39:49.330 回答
0

Ppl,经过一天的努力..终于找到了解决方案

在 tess-two 模块的 build.gradle 中添加以下代码:

  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'] 。希望能帮助到你 !!

于 2015-10-16T06:47:50.317 回答