2012-04-04 21 views
1

現在、OCR(Optical Character Recognition)に基づいてアンドロイドアプリケーションを開発中です。私はTesseract、Leptonica、およびJPEGライブラリをコンパイルするためのツールを含む "tesseract-android"プロジェクトをダウンロードしました。私はWindows Vista OSでEclipse経由で開発中です。Tesseractを使用したAndroid OCRアプリケーション

私はまた、必要なツール(android-ndk; apache ant ..)をダウンロードしました。このプロジェクトをビルドし、基本アプリケーションにライブラリとして追加するための慎重なすべての手順を実行しました。

私のアプリは、写真を撮るためのカメラを開いてから、この写真をテキストに変換するためにtesseract APIで処理します。

私の質問は です。1.この手順はWindows OSでは機能しません。 2.コンパイル時に、次のエラーが発生します。 "java.lang.IllegalArgumentException:データパスにサブフォルダtessdataが含まれている必要があります!"

潜在的なエラーにはどのようなものがありますか? Javaコードの関係部分は次のとおりです。

File myDir = getExternalFilesDir(Environment.MEDIA_MOUNTED); 
TessBaseAPI baseApi = new TessBaseAPI(); 
baseApi.init(myDir, "eng"); 

私はまた、代わりに「myDirに」の「/tess-two/external/tesseract-3.01/tessdata/tessconfigs」を使用しようとしましたが、エラーが残っています同じ。

私は非常に助けていただきありがとうございます。

ありがとうございます。

+0

類似の説明を参照してください。http://stackoverflow.com/questions/19533273/best-ocr-optical-character-recognition-example-in-android – Nepster

答えて

0

通常、ネイティブなものをコンパイルする際のパスエラーは、あなたのJavaコードとは関係ありません。あなたのJavaコードは実行時の問題の原因となります。ビルドスクリプトを確認し、さらにログメッセージを投稿してください。

+0

ログメッセージの一部です。 04-04 14:32:28.569:E/2130968577(561):java.lang。IllegalArgumentException:データパスにサブフォルダtessdataが含まれている必要があります。 04-04 14:32:28.569:E/2130968577(561):\t com.googlecode.tesseract.android.TessBaseAPI.init(TessBaseAPI.java:167) *私はTesseractのどこかを読んだことがあります。 android-ndkとapache-antはウィンドウの下では動作しないと言っています。しかし、私はandroid-ndkとapache-antを通常問題なく使用しました。しかし、私は問題の原因を見つけることに混乱しています!プロジェクトを実行しています。 – user1312014

+0

明らかに、好きなパスがいくつか見つかりません。テセラクトを初期化する前に、最初の起動時にそれらを準備する必要があるかもしれません。また、あなたはこの純粋なJavaソリューションを試すこともできます(実際のリリースはないのでソースは十分です)。http://sourceforge.net/projects/javaocr/ –

+0

Android用にはうまくいかないと思いますJavaアプリケーションではなくAndroidアプリケーションを開発するためにEclipseを使用しているため、アプリケーションです。私が間違っている? – user1312014

1

Q1。それはどんなオペレーティングシステムでも動作するはずですが、私はWin7、Mac OS Lion、Ubuntu上でndk-buildに問題なく対応できました。

Q2。外部ストレージに書き込む権限があり、そのために十分なスペースがあることを確認してください。

これでも失敗した場合は、DDMSを見てファイルエクスプローラを参照して、アプリケーションがディレクトリ構造を設定し、訓練されたデータをコピーしていることを再度確認します。

私はeng.traineddataファイルを作成していた場所で奇妙な問題がありましたが、それは0バイトであり、あらゆる種類の奇妙な問題を引き起こしました。

はまた、あなたが進んで取得するには、手動でディレクトリ構造を作成し、後でこの初期化の問題を修正(が、それを忘れないように!)でした

+0

こんにちは@ジミーDDMSで何を探していますか?私はデバイスを選択することを前提としていますが、パスの例を教えてください。 – greenhouse

1

私は同じ問題に直面していました。パスから "tessdata"を削除したときに私のために働いた。

Before (fail): path = "/mnt/sdcard/tesseract/tessdata"; 
After (success): path = "/mnt/sdcard/tesseract/"; 

次に、baseApi.init(path、 "eng")は例外なく動作しました。

もちろん、tessdataフォルダは、必要な.traineddataファイルのパスにある必要があります。

関連する問題