2

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

我以这种方式获取资源 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 中读取也是同样的问题。我做错了什么,还有其他方法可以获取资源路径吗?谢谢安德烈

4

1 回答 1

2

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

伪代码是这样的:

加载时,检查私有文件,如果它不存在,从原始目录加载训练数据并写入私有文件。用私有文件初始化 tesseract。

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

干杯

于 2011-10-27T21:09:08.837 回答