我目前正在尝试将 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
文件添加到我的项目中,但我根本不知道在哪里或如何做。
我尝试过的事情:
- 在 Assets 文件夹中,我添加了文件
eng.traineddata
但它是只读的,我无法在运行时更改它。所以这行不通 - 我尝试添加其他方式来运行该项目,并运行 adb push 命令以将其直接添加到设备,但这行不通,因为我会将此应用程序推向大众。
所以我正在寻找的是如何将 eng.traineddata
添加到我的项目中的答案。我应该在初始化调用的 TESS_DATA_FILE_PATH
部分放置什么。
旁注:
在上面提供的链接中的所有步骤结束时,我确实收到了 BUILD SUCCESSFUL
调用。
最佳答案
我已经成功将语言包添加到我的项目中,并在我的android项目上运行了tess 2。
这是我如何做到的代码:
这是设置文件路径,并添加 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();
}
}
关于android - 无法将 eng.traineddata 添加到我的 Tesseract 项目 Android 5.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160176/