【问题标题】:Cannot add a eng.traineddata to my Tesseract project Android 5.0无法将 eng.traineddata 添加到我的 Tesseract 项目 Android 5.0
【发布时间】:2015-10-15 23:27:32
【问题描述】:

我目前正在尝试将 Tesseract OCR 实施到我的项目中,但遇到了一个十字路口。我遵循了https://github.com/rmtheis/tess-two 的所有指示,并陷入了该项目的实际实施部分。我正在运行的当前代码是:

 TessBaseAPI baseApi = new TessBaseAPI();
        baseApi.init(TESS_DATA_FILE_PATH, "eng");
        baseApi.setImage(icon);
        String recognizedText = baseApi.getUTF8Text();
        baseApi.end();

现在TESS_DATA_FILE_PATH 是当前问题。我一直在尝试将eng.traineddata 文件添加到我的项目中,但我根本不知道在哪里或如何做。

我尝试过的事情:

  1. 在资产文件夹中,我添加了文件eng.traineddata,但它是只读的,我无法在运行时更改它。所以这行不通
  2. 我尝试通过其他运行项目的方式添加,并运行 adb push 命令将其直接添加到设备中,但这不会奏效,因为我会将这个应用程序推送给大众。

所以我正在寻找的答案是,如何将eng.traineddata 添加到我的项目中。我应该在 init 调用的 TESS_DATA_FILE_PATH 部分放置什么。

旁注: 在上面提供的链接的所有步骤结束时,我确实收到了BUILD SUCCESSFUL 电话。

【问题讨论】:

    标签: android mobile android-ndk ocr tesseract


    【解决方案1】:

    我已成功将语言包添加到我的项目中,并在我的 android 项目上运行了 tess 2。

    这是我如何做到的代码:

    这是设置文件路径,并添加训练数据文件夹

    public void setupOCR(){
    
        File folder = new File(Environment.getExternalStorageDirectory() + "/classlinkp/tessdata");
        if (!folder.exists()) {
            folder.mkdirs();
        }
    
        File saving = new File(folder, "eng.traineddata");
        try {
            saving.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        InputStream stream = null;
        try {
            stream = mContext.getAssets().open("eng.traineddata", AssetManager.ACCESS_STREAMING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    
        if (stream != null){
            copyInputStreamToFile(stream, saving);
        }
    }
    

    这是我保存 eng.traineddata 文件的方法:

      private void copyInputStreamToFile( InputStream in, File file ) {
        try {
            OutputStream out = new FileOutputStream(file);
            byte[] buf = new byte[1024];
            int len;
            while((len=in.read(buf))>0){
                out.write(buf,0,len);
            }
            out.close();
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    保存方法来自:https://stackoverflow.com/a/28131358/3781164

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2020-02-10
      • 2012-11-25
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多