我需要为我的 Android 应用程序使用 Tesseract OCR(光学字符识别)的“.so”文件。谁能解释我如何获取 Tesseract OCR 的“.so”文件?
我试图导入不起作用的完整项目。
我需要为我的 Android 应用程序使用 Tesseract OCR(光学字符识别)的“.so”文件。谁能解释我如何获取 Tesseract OCR 的“.so”文件?
我试图导入不起作用的完整项目。
tesseract-android-tools附带的 README将成为您最好的朋友。我在 VirtualBox 中使用了 Ubuntu 11.04。在 Ubuntu 中(我假设您稍后会希望将这些转移到 Windows):
1) 下载安卓 NDK
2)SVN tesseract-android-tools 项目。我用作tesseract-android-tools-read-only/tesseract-android-tools/
$PROJECT 目录,仅供参考。
3) 使用 ndk-build(在 README 中有详细说明)来构建 tesseract。这样做会在 $PROJECT 中创建一个 libs 文件夹,以及您需要的三个 .so 文件。
我相信有一种方法可以使用 Cygwin,但我不确定如何,因为我已经准备好使用 VM。
从那里(使用http://code.google.com/p/tesseract-android-tools/updates/list上的说明):
4)tesseract工具实际上是一个库,并且有一个eclipse .project,所以只需在使用ndk构建so后导入该项目并构建它。
5)将其设置为库:http: //developer.android.com/guide/developing/projects/projects-eclipse.html#SettingUpLibraryProject
6) 现在在同一个工作区中创建一个新的 android 项目,即您的应用程序。转到属性并从第 3 步引用库(http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferenceLibraryProject)
7) 基于 Android 2.2 (min) 构建您的应用程序:http ://code.google.com/p/tesseract-android-tools/issues/detail?id=5#c16
它应该工作!
请注意,您必须使用 Android 2.2 或更高版本。希望有帮助!!
@raju:我遇到了和你一样的问题。在搜索解决方案后,我发现了这个:http ://gaut.am/making-an-ocr-android-app-using-tesseract/
不知道你的情况是否和我的一样!?!但我在 Windows 操作系统下使用 Eclipse 进行开发。博客(上一个链接)说这不能在 Windows 下完成,因此您必须使用 Linux(例如:虚拟机中的 Ubuntu)。此外,该博客详细解释了应执行的步骤。
@jmiles 我尝试在 Ubuntu 下进行“ndk-build”,然后将结果转移到 Windows 中。我已经构建了 tesseract 并将其设为“库”;但是,我在尝试识别字符时总是出错:这些是一些日志消息:04-04 14:32:28.569: E/2130968577(561): java.lang.IllegalArgumentException: Data path must contain subfolder tessdata !04-04 14:32:28.569: E/2130968577(561): 在 com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:167)
你@jmiles 或@CommonsWare 对这个问题有什么想法吗?
You need to download the language data file for the tesseract and put it into the 'tessdata' folder and then initialize tesseract with it like
TessBaseAPI.init("your language file tessdata folder","language mostly 'eng'");
This will work now.
您需要安装 Android NDK,将 Tesseract 内容转换为 NDK 扩展,然后通过 JNI 将其添加到您的 Java 应用程序中。这不太容易。你不能只拿一个.so
for,比如说,Linux 并将它放在你的项目中。