在真实设备Android 2.1上加载.so文件(Tesseract)时出错

时间:2011-10-13 11:22:43

标签: android android-ndk ocr tesseract

我正在使用 Tesseract 工具为读卡(OCR)开发样本扫描活动。

它在模拟器上运行正常(使用android 2.2)并且可以快速轻松地从SD卡中扫描出卡片。 但是当我在真实设备或模拟器上尝试它时(使用android 2.1),它会出现以下错误:

10-13 16:48:59.206: DEBUG/dalvikvm(3086): Trying to load lib /data/data/com.scan/lib/liblept.so 0x2fc14960
10-13 16:48:59.196: DEBUG/SntpClient(1814): request time failed: java.net.UnknownHostException: xtra1.gpsonextra.net
10-13 16:48:59.206: DEBUG/dalvikvm(3086): Trying to load lib /data/data/com.scan/lib/liblept.so 0x2fc14960
10-13 16:48:59.236: INFO/dalvikvm(3086): Unable to dlopen(/data/data/com.scan/lib/liblept.so): Cannot load library: link_image[1829]:  1137 could not load needed library 'libjpeg.so' for 'liblept.so' (load_library[1137]: Library 'libjpeg.so' not found)
10-13 16:48:59.236: WARN/dalvikvm(3086): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lcom/googlecode/tesseract/android/TessBaseAPI;.<clinit>
10-13 16:48:59.236: DEBUG/AndroidRuntime(3086): Shutting down VM
10-13 16:48:59.236: WARN/dalvikvm(3086): threadid=3: thread exiting with uncaught exception (group=0x2aaca450)
10-13 16:48:59.236: INFO/dalvikvm(3086): Unable to dlopen(/data/data/com.scan/lib/liblept.so): Cannot load library: link_image[1829]:  1137 could not load needed library 'libjpeg.so' for 'liblept.so' (load_library[1137]: Library 'libjpeg.so' not found)
10-13 16:48:59.236: WARN/dalvikvm(3086): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lcom/googlecode/tesseract/android/TessBaseAPI;.<clinit>
10-13 16:48:59.236: DEBUG/AndroidRuntime(3086): Shutting down VM
10-13 16:48:59.236: WARN/dalvikvm(3086): threadid=3: thread exiting with uncaught exception (group=0x2aaca450)
10-13 16:48:59.246: ERROR/AndroidRuntime(3086): Uncaught handler: thread main exiting due to uncaught exception
10-13 16:48:59.246: ERROR/AndroidRuntime(3086): Uncaught handler: thread main exiting due to uncaught exception
10-13 16:48:59.256: ERROR/AndroidRuntime(3086): java.lang.ExceptionInInitializerError
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.scan.SAMPLE_SCANActivity.onCreate(SAMPLE_SCANActivity.java:37)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.os.Looper.loop(Looper.java:123)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.reflect.Method.invokeNative(Native Method)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.reflect.Method.invoke(Method.java:521)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at dalvik.system.NativeStart.main(Native Method)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086): Caused by: java.lang.UnsatisfiedLinkError: Library lept not found
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.Runtime.loadLibrary(Runtime.java:489)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.System.loadLibrary(System.java:557)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.googlecode.tesseract.android.TessBaseAPI.<clinit>(TessBaseAPI.java:42)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     ... 14 more
10-13 16:48:59.256: ERROR/AndroidRuntime(3086): java.lang.ExceptionInInitializerError
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.scan.SAMPLE_SCANActivity.onCreate(SAMPLE_SCANActivity.java:37)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.os.Looper.loop(Looper.java:123)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.reflect.Method.invokeNative(Native Method)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.reflect.Method.invoke(Method.java:521)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at dalvik.system.NativeStart.main(Native Method)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086): Caused by: java.lang.UnsatisfiedLinkError: Library lept not found
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.Runtime.loadLibrary(Runtime.java:489)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at java.lang.System.loadLibrary(System.java:557)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     at com.googlecode.tesseract.android.TessBaseAPI.<clinit>(TessBaseAPI.java:42)
10-13 16:48:59.256: ERROR/AndroidRuntime(3086):     ... 14 more

此库是否适用于Android 2.1或任何其他问题???

3 个答案:

答案 0 :(得分:2)

首先,您阅读了所有步骤: -

对于Windows或Ubuntu以及构建Android 2.2应用程序:

  1. 下载了ndk&amp;使用自述文件

  2. 的tesseract工具(svn)项目
  3. 使用ndk

  4. 在debian(vmware)上构建它
  5. tesseract工具实际上是一个库,并且有一个eclipse .project,所以只需在用ndk构建之后导入该项目并构建它。

  6. 将其设置为lib:http://developer.android.com/guide/developing/projects/projects-eclipse.html#SettingUpLibraryProject

  7. 现在在同一个工作区中创建一个新的android项目,即你的应用程序。转到属性并引用步骤3中的库(http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject)

  8. <强> 6。根据Android 2.2(分钟)构建您的应用:http://code.google.com/p/tesseract-android-tools/issues/detail?id=5#c16

    所以这个库在android 2.1上不起作用

    <强> Does this library works on android 2.1 ???

答案 1 :(得分:1)

我正在为OCR开发纯Java替代方案:

http://sourceforge.net/projects/javaocr/?_test=beta

也许这可能是你的另类选择。

答案 2 :(得分:0)

不,这个原生图书馆在Android 2.2版下面不支持,因为谷歌也在线提供这个服务来过来