我目前正在尝试将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
文件添加到我的项目中,但我根本不知道在哪里或如何做。
我尝试过的事情:
eng.traineddata
,但这是只读的,我无法在运行时更改它。所以这不会工作所以我要找的是如何将eng.traineddata
添加到我的项目中。我在init调用的TESS_DATA_FILE_PATH
部分放置了什么。
先谢谢。
附注:
我确实在上面提供的链接的所有步骤结束时收到BUILD SUCCESSFUL
电话。
答案 0 :(得分:1)
我已成功将语言包添加到我的项目中,并在我的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();
}
}