目前我正在尝试使用tesseract安卓工具
http://code.google.com/p/tesseract-android-tools/
在Android上为我工作。我已经在这一段时间内待了一个星期但无济于事。
我使用cygwin运行Win 7 64位。
我按照自述文件中的说明操作,对Android.mk文件进行了很多更改。基本上它是在路径上附加一个斜杠,所以我不得不手动硬编码单个文件的路径,或者移动到3个包中的文件位置以使其构建。但是在构建结束时,我没有收到“Build Sucessful”通知,但生成了.so文件。
我将其移植到eclipse,并使用以下代码获取提取的文本。
private static final String TESSBASE_PATH = "/mnt/sdcard/";
Bitmap imageFile = BitmapFactory.decodeFile(image.getAbsolutePath());
TessBaseAPI baseApi = new TessBaseAPI();
if(baseApi.init(TESSBASE_PATH, "eng")){
System.out.println("Tessbase initialized");
baseApi.setDebug(true);
baseApi.setImage(bmp);
String recognizedText = baseApi.getUTF8Text();
System.out.println("---------------------output-------------------");
System.out.println("recognizedText<"+recognizedText+">");
}
else{
System.out.println("Tessbase initialization failure.");
}
起初我收到错误说
“位图函数不可用;库必须在android-8 NDK下编译”
在看了tessbaseapi.cpp文件后,我意识到它需要一个特定的编译器标志来编译正确的函数。这个标志是-DHAS_JNIGRAPHICS。我认为这意味着必须存在JNI图形库。
然而程序仍然无法编译,因为无法找到新编译的方法中的memcpy()函数。我通过更改实际的C ++代码来修复此问题
最后程序完全编译(虽然仍未获得BUILD SUCCESSFUL通知),当我运行它时,我根本没有得到任何输出。这可能是eng.traineddata文件的问题,或者可能是实际代码中的问题。
我做错了什么吗?有人可以链接我和他们知道的工作和图像的eng.traineddata文件吗?
提前致谢!
答案 0 :(得分:2)
自您发布此问题以来已经过了几个月,但如果您仍在寻找答案,我会认真地建议您查看github上的tess-two项目。< / p>
虽然这不会解决您发布的错误,但它是一种战术性的解决方案/替代解决方案。
它是tesseract-android-tools的一个分支,非常易于使用,您可以在一小时内完成并运行。
如果您的结果不佳,请确保有训练的数据文件,请使用DDMS文件资源管理器检查其中,而不是0字节(发生在我身上几次)。
另外,请确保设置白名单和黑名单字符,这样可以很好地改善效果。
祝你好运