TessBaseAPI无法解析符号tess-two OCR Android

时间:2015-05-26 23:49:09

标签: java android android-ndk ocr tess-two

我正在尝试使用tess-two为OCR运行Demo App,但我遇到了代码问题:

我已按照以下步骤操作:

首先,我从这里下载并安装了ndk https://developer.android.com/tools/sdk/ndk/index.html。 我成功配置了它 然后我从这里https://github.com/rmtheis/tess-two下载它“tess-two-master”并且我提取它,在那个位置我运行ndk-build命令并且它也成功编译。 然后我打开一个全新的Android Studio项目,并按照“使用gradle配置tess-two”部分中的https://coderwall.com/p/eurvaq/tesseract-with-andoird-and-gradle说明进行操作 在最后一步中,我进入“文件 - >项目结构 - >从左侧子窗口中选择一个模块 - >依赖关系(最后一个标签) - >按右侧的绿色”+“ - >模块依赖关系 - >好的“

之后我下载了这个项目https://github.com/GautamGupta/Simple-Android-OCR,并在我的新项目中复制并粘贴这些文件中的代码:“SimpleAndroidOCRActivity.java”,“main.xml”,“strings.xml”。当然我的文件有不同的名称(在我的例子中是“MainActivity.java”,“activity_main.xml”,“strings.xml”),因此在代码中进行一些重命名是必要的。 我还打开了我的“AndroidManifest.xml”,我在刚刚下载的“AndroidManifest.xml”中的“/ application”和“/ manifest”之间添加了(但在“/ manifest”之前)(这意味着我已经添加了它) “uses-permissions”和“uses-feature”标签)。

最后一步我从这里下载https://code.google.com/p/tesseract-ocr/downloads/list英文文件。并在我的项目的文件夹中激动地在“app - > src - > main”中。我在这里创建了一个新文件夹,并将其命名为“assets”。在该文件夹中,我创建了另一个名为“tessdata”的文件夹。我把它放在那里.traineddata文件。

然后当我尝试同步时,我遇到以下错误: 警告:依赖OCR3:app:未指定项目tess-two解析为APK归档,不支持作为编译依赖项。文件:C:\ Users \ jana-PC \ AndroidStudioProjects \ OCR3 \ app \ build \ outputs \ apk \ app-release-unsigned.apk

当我尝试编译它时,它不会编译,因为它显示我TessBaseAPI无法解析符号的错误:

我在这部分的代码是:

import com.googlecode.tesseract.android.TessBaseAPI;



        TessBaseAPI baseApi = new TessBaseAPI();
        baseApi.setDebug(true);
        baseApi.init(DATA_PATH, lang);
        baseApi.setImage(bitmap);

        String recognizedText = baseApi.getUTF8Text();

        baseApi.end(); 

任何有帮助的人,我都会非常感激!!

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

要使用tess-two api,您必须先将此行添加到您的app:android项目中的gradle文件

编译'com.rmtheis:tess-two:7.0.0'

添加此行并再次同步项目,我确信您的问题将得到解决。

答案 2 :(得分:0)

Gradle dependency management is what helped me out;

我在尝试导入 tess-two 时得到未解析的符号;

在将 tess-two 导入到 android 的过程中,我也遇到了未解析的符号。 发现我必须将 tess-two 作为“Gradle Project”导入,而不是作为 “Android .aar”或“Android 库”;这意味着我必须选择 tess-two 项目的顶级项目级目录作为导入目录,而不是 tess-two 项目中的单个子项目“tess-two”;

最终确定gradle在tess-two的项目级别通过使用gradle build文件同步了tess-two的项目;但是如果你导入 tess-two 子项目,tess-two 的项目级 gradle.build 从未完全 解决 tess-two 项目下的依赖关系;希望这会有所帮助;