2

私はアンドロイドアプリに取り組んでいます。私が必要とするのは、訓練されたデータファイルへの直接パスです(初期テッセラクトへ)。最適なオプションのように見えますが、リソースを raw に設定することです。

この方法でリソース ID を取得しています (ファイル名は deu.traineddata です):

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

OK、'rID' > 0、現在 Stream を取得中:

InputStream is = resources.openRawResource(rID);

わかりました、「です」!= null。しかし、「is」を読み取ることで問題が発生し、スタックトレースなしで IOException がスローされました。

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

asset からファイルを読み込もうとしましたが、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 に答える