Tesseract-Android-Tools更改和修改编译成功(我认为)但没有输出

时间:2012-02-26 19:01:39

标签: android tesseract

目前我正在尝试使用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文件吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

自您发布此问题以来已经过了几个月,但如果您仍在寻找答案,我会认真地建议您查看github上的tess-two项目。< / p>

虽然这不会解决您发布的错误,但它是一种战术性的解决方案/替代解决方案。

它是tesseract-android-tools的一个分支,非常易于使用,您可以在一小时内完成并运行。

如果您的结果不佳,请确保有训练的数据文件,请使用DDMS文件资源管理器检查其中,而不是0字节(发生在我身上几次)。

另外,请确保设置白名单和黑名单字符,这样可以很好地改善效果。

祝你好运