2

私は Android OCR プロジェクトを開発しています。私のプロジェクトでは、tess-two を使用しています。しかし、tess-two の tessdata フォルダーからトレーニング済みデータを初期化する際に問題が発生しています。

こんな感じでgrandleにtess-twoをインストールしました

dependencies {
    compile 'com.rmtheis:tess-two:6.0.2'
}

次に、このようにビットマップからテキストを検出しようとしました

public String detectText(Bitmap bitmap) {

        TessBaseAPI tessBaseAPI = new TessBaseAPI();
        tessBaseAPI.setDebug(true);
        tessBaseAPI.init(DATA_PATH, "eng"); //Init the Tess with the trained data file, with english language

        //For example if we want to only detect numbers
        tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "1234567890");
        tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!@#$%^&*()_+=-qwertyuiop[]}{POIU" +
                "YTREWQasdASDfghFGHjklJKLl;L:'\"\\|~`xcvXCVbnmBNM,./<>?");


        tessBaseAPI.setImage(bitmap);

        String text = tessBaseAPI.getUTF8Text();

        tessBaseAPI.end();

        return text;
    }

ボタンがクリックされたときに発生します。私のアクティビティにはその機能のみが含まれます。問題はデータ パス変数にあります。

これは私のプロジェクト構造です

ここに画像の説明を入力

はい、2 つのシナリオを示すために、2 つの tessdata フォルダーを追加しました。

初挑戦。このようにDATA_PATHを設定します

DATA_PATH = Environment.getRootDirectory().getPath()+"/data/";

それは私に「データパスが存在しません!」エラー。だから私はこれらのソリューションTesseract OCR Android tessdata directory not foundGet path of data directory(android) を見つけました。

だから私はこのようにDATA_PATHを設定しようとしました

DATA_PATH = Environment.getRootDirectory().getPath();

「データパスにはサブフォルダー tessdata が含まれている必要があります!」というメッセージが表示されます。エラー。

それから私はこれを試しました

DATA_PATH = Environment.getRootDirectory().getPath()+"/data/tessdata/";

その後、「データパスが存在しません!」というエラーが再び表示されます。

それから私はこの方法を試しました

DATA_PATH = Environment.getRootDirectory().getPath()+"/tessdata/";

「データパスが存在しません!」というエラーが表示されます。

だから私が試したすべての方法はうまくいきません。tessdata フォルダーを正しく初期化するにはどうすればよいですか? パスを設定する考えがありません。

4

2 に答える 2