无法将 eng.traineddata 添加到我的 Tesseract 项目 Android 5.0
Cannot add a eng.traineddata to my Tesseract project Android 5.0
我目前正在尝试将 Tesseract OCR 实施到我的项目中,但遇到了十字路口。我遵循了 https://github.com/rmtheis/tess-two 的所有指示,并卡在了该项目的实际实施部分。我的当前代码 运行ning 是:
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
文件添加到我的项目中,但我根本不知道在哪里或如何做。
我尝试过的事情:
- 我在资产文件夹中添加了文件
eng.traineddata
,但它是只读的,我无法在 运行 时更改它。所以这行不通
- 我尝试以其他方式添加 运行ning 项目,运行ning adb push 命令以将其直接添加到设备,但这行不通,因为我将推送此应用面向大众。
所以我正在寻找的是如何将 eng.traineddata
添加到我的项目中的答案。我在 init 调用的 TESS_DATA_FILE_PATH
部分放置了什么。
旁注:
在上面提供的 link 的所有步骤结束时,我确实收到了 BUILD SUCCESSFUL
电话。
我已成功将语言包添加到我的项目中,并且 运行 在我的 android 项目中测试了两个。
这里是我如何做的代码:
这就是设置文件路径,并添加 traineddata 文件夹
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();
}
}
保存方法收集自:
我目前正在尝试将 Tesseract OCR 实施到我的项目中,但遇到了十字路口。我遵循了 https://github.com/rmtheis/tess-two 的所有指示,并卡在了该项目的实际实施部分。我的当前代码 运行ning 是:
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
文件添加到我的项目中,但我根本不知道在哪里或如何做。
我尝试过的事情:
- 我在资产文件夹中添加了文件
eng.traineddata
,但它是只读的,我无法在 运行 时更改它。所以这行不通 - 我尝试以其他方式添加 运行ning 项目,运行ning adb push 命令以将其直接添加到设备,但这行不通,因为我将推送此应用面向大众。
所以我正在寻找的是如何将 eng.traineddata
添加到我的项目中的答案。我在 init 调用的 TESS_DATA_FILE_PATH
部分放置了什么。
旁注:
在上面提供的 link 的所有步骤结束时,我确实收到了 BUILD SUCCESSFUL
电话。
我已成功将语言包添加到我的项目中,并且 运行 在我的 android 项目中测试了两个。
这里是我如何做的代码:
这就是设置文件路径,并添加 traineddata 文件夹
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();
}
}
保存方法收集自: