所以我试图弄清楚如何使用 TessBase,但我在 baseApi.init(dataPath, "eng")
处收到错误。我得到的错误是:目录必须包含 tessdata
。我不知道如何获取包含 tessdata 的目录。这是image包含 eng.traineddata 的目录。这是我的代码:
Bundle extras = data.getExtras();
Bitmap photoBitmap = (Bitmap) extras.get("data");
TessBaseAPI baseApi = new TessBaseAPI();
//textcaptured.setText(DATA_PATH.toString());/*
String dataPath = Environment.getExternalStorageDirectory().toString() + "/Android/data/" + getApplicationContext().getPackageName() + "/";
textcaptured.setText(dataPath);
File tessdata = new File(dataPath);
if (!tessdata.exists() || !tessdata.isDirectory()) {
throw new IllegalArgumentException("Data path must contain subfolder tessdata!");
}
baseApi.init(dataPath, "eng");
baseApi.setImage(photoBitmap);
String recognizedText = baseApi.getUTF8Text(); // Log or otherwise display this string...
baseApi.end();
textcaptured.setText(recognizedText);
最佳答案
我推荐的最简单方法是 自己在SD卡中创建一个文件夹,并放置一个目录,子目录为tessdata,其中包含eng.tessdata,结构如下所示:
+SdCardOfPhone
--+YourAppName
----+tessdata
------eng.tessdata
现在您可以通过以下方式指向该目录
String datapath = Environment.getExternalStorageDirectory() + "/YourAppName/";
TessBaseAPI tessBaseAPI = new TessBaseAPI();
tessBaseAPI.init(datapath, "eng");
您的 AndroidManifest.xml 文件中还必须包含以下内容
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
出于测试目的,我不建议将 eng.tessdata bundle 在项目中,这会增加构建时间和 .apk 文件的大小(>17mb)。
在项目中 bundle eng.tessdata 的过程非常复杂,需要自己创建一个新目录,并在运行时将 bundle 的数据复制到该目录。
关于java - 如何获取 tessbase.init 中需要使用的目录 ("directory", "eng")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927400/