2011-09-23 48 views
2

我正在開發android應用程序。 我需要的是直接路徑到訓練數據文件(初始化tesseract)。 看起來最好的選擇是設置原始資源。爲tesseract-android-tools加載traineddata(android)

我得到資源ID這樣(文件名是:deu.traineddata):

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

OK, '擺脫'> 0,現在越來越流:

InputStream is = resources.openRawResource(rID); 

OK「是'!= null。 但現在越來越問題,通過閱讀「是」 IOException異常已經扔了,不帶堆棧跟蹤:

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

我也嘗試讀取從資產文件,但通過從InputStream裏讀入同樣的問題。 什麼我做錯了,是否有任何其他方式來獲取資源路徑? thanx andrej

回答

2

如果您查看tesseract-android-tools(jni下)的本機代碼,您將看到該庫將訪問文件。我現在在同一條船上。在進行一些挖掘之後,我的計劃是將訓練過的數據文件作爲資源與項目一起存儲,並在加載時寫入私有文件。

的僞代碼是這樣的:

上的負載,檢查私人文件, 如果它不存在,加載從原料目錄的traineddata並寫入到私人文件。 用私有文件初始化tesseract。

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

乾杯

+0

經過一些嘗試沒有工作,所以我下載traineddata直接從tesseract server.Thanx任何方式。 – andrej