加载educdata for tesseract-android-tools(android)

时间:2011-09-23 07:52:10

标签: java android tesseract

我正在开发Android应用程序。 我需要的是直接路径到训练的数据文件(到init tesseract)。 看起来最好的选择是将资源设置为raw。

我以这种方式获取资源ID(文件名为:deu.traineddata):

int rID = resources.getIdentifier("deu", "raw", "my.code.package");

好的,'rID'> 0,现在得到Stream:

InputStream is = resources.openRawResource(rID);

好的,'是'!= null。 但是现在遇到问题,通过读取“is”IOException已经抛出,没有堆栈跟踪:

byte[] bytes = new byte[is.available()];
is.read(bytes);

我也尝试从资产中读取文件,但从InputStream读取也是同样的问题。 我做错了什么,有没有其他方法来获得资源路径? 感谢名单 安德烈

1 个答案:

答案 0 :(得分:2)

如果你看一下tesseract-android-tools(在jni下)的本机代码,你会看到该库将访问一个文件。我现在在同一条船上。经过一番挖掘,我的计划是将训练有素的数据文件与项目一起存储为资源,并在加载时写入私有文件。

伪代码是这样的:

加载时,检查私有文件, 如果它不存在,从raw dir加载训练的数据并写入私有文件。 使用私人文件初始化tesseract。

REF: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal http://developer.android.com/guide/topics/resources/providing-resources.html

干杯