如何获取tessbase.init("directory","eng")中需要使用的目录?
How to get the directory that needs to be used in tessbase.init("directory", "eng")?
所以我想弄清楚如何使用 TessBase,但我在 baseApi.init(dataPath, "eng")
处遇到错误。我得到的错误是:directory must contain tessdata
。我不知道如何获取包含 tessdata 的目录。这是包含 eng.traineddata 的目录的 image。这是我的代码:
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);
我推荐的最简单方法是
自己在你的 sdcard 中创建一个文件夹,并在其中放置一个包含子目录 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 捆绑在项目中,因为它会增加构建时间和 .apk 文件的大小(>17mb)。
在项目内部打包eng.tessdata的过程比较复杂,需要自己新建一个目录,然后在运行时将打包后的数据拷贝到那个目录下。
所以我想弄清楚如何使用 TessBase,但我在 baseApi.init(dataPath, "eng")
处遇到错误。我得到的错误是:directory must contain tessdata
。我不知道如何获取包含 tessdata 的目录。这是包含 eng.traineddata 的目录的 image。这是我的代码:
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);
我推荐的最简单方法是 自己在你的 sdcard 中创建一个文件夹,并在其中放置一个包含子目录 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 捆绑在项目中,因为它会增加构建时间和 .apk 文件的大小(>17mb)。
在项目内部打包eng.tessdata的过程比较复杂,需要自己新建一个目录,然后在运行时将打包后的数据拷贝到那个目录下。