我目前正在开发基于OCR(光学字符识别)的Android应用程序。我已经下载了“tesseract-android”项目,其中包含用于编译Tesseract,Leptonica和JPEG库的工具,以便在Android上使用。我正在通过Windows Vista OS上的Eclipse进行开发。
我还下载了必要的工具(android-ndk; apache ant ..),我已经仔细完成了构建这个项目的所有步骤,并将其作为库添加到我的基本应用程序中。
我的应用包括打开相机拍照,然后通过tesseract API处理此图片,以便将其转换为文本。
我的问题是: 1.这个程序在Windows操作系统下无效吗? 2.编译时,我遇到以下错误: “java.lang.IllegalArgumentException:数据路径必须包含子文件夹tessdata!”
可能是什么潜在错误? java代码的相关部分是:
File myDir = getExternalFilesDir(Environment.MEDIA_MOUNTED);
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(myDir, "eng");
我也尝试使用“/tess-two/external/tesseract-3.01/tessdata/tessconfigs”而不是“myDir”,但错误仍然相同。
我非常感谢任何帮助。
提前致谢。
答案 0 :(得分:1)
Q1。它应该适用于任何操作系统,我已经能够在Win7,Mac OS Lion和Ubuntu上ndk-build
没有任何问题。
Q2。确保您有权写入外部存储,并且有足够的空间来执行此操作。
如果仍然失败,请查看DDMS并查看文件资源管理器并仔细检查您的应用程序是否正在设置目录结构并复制已训练的数据。
我有一个奇怪的问题,它创建了eng.traineddata文件,但它是0字节,这导致了各种奇怪的问题。
您也可以手动创建目录结构以促进进度,并在以后修复此初始化问题(但不要忘记它!)
答案 1 :(得分:1)
我遇到了同样的问题。当我删除" tessdata"从路径。
Before (fail): path = "/mnt/sdcard/tesseract/tessdata";
After (success): path = "/mnt/sdcard/tesseract/";
然后,baseApi.init(path," eng")没有例外。
当然,tessdata文件夹应该位于带有desired.traineddata文件的路径中。
答案 2 :(得分:0)
编译本机内容时的路径错误通常与您的java代码无关。您的Java代码将负责运行时问题。检查构建脚本并发布更多日志消息。