5

Android tess-two https://github.com/rmtheis/tess-twoに人気の OCR tessercat フォークを使用しています。私はすべてのスタッフを統合し、それは動作します...

しかし、数字だけを検出する必要があります。今のところ私のコードは次のとおりです。

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(pathToLngFile, langName);
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
baseApi.end();
doSomething(recognizedText); 

ここからhttps://code.google.com/p/tesseract-ocr/wiki/FAQ#How_do_I_recognize_only_digits ?

私はバージョン V3 を使用していますが、コマンド ライン ソリューションの代わりにコード ソリューションはありません - Android プロジェクトには関係ありません (私は思う...)。そこで、バージョン < V3 のソリューションを実装して、次の行を追加しようとしました。

baseApi.SetVariable("tessedit_char_whitelist", "0123456789");

私の質問は、init() をどうするか? 言語は必要ありませんが、init() メソッドを init する必要があります...

編集:より具体的には

私の最終的な目標は、添付の写真 (ヘッダーと空白で区切られた 3 つの列) のように見える単純なドキュメント (純粋な Excel シートではない) です。

私の要件は、数字で意味をなすことです。どの数字がどの行と列に属しているかを分離して判断できるようにすることです。 ここに画像の説明を入力

ありがとう、

4

2 に答える 2

6

ちょっと違うものにしました。多分それは誰かのために役立つでしょう。

したがって、最初に API を初期化する必要があります。

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(datapath, language, ocrEngineMode);

次に、次の変数を設定します

baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE);
baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!?@#$%&*()<>_-+=/:;'\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, ".,0123456789");
baseApi.setVariable("classify_bln_numeric_mode", "1");

このようにして、エンジンは数字のみをチェックします。

于 2016-12-09T11:39:35.720 に答える
3

私は同じことをしたかったので、少し調査した後、テキストと数字のすべてをキャプチャし、数字だけを保持することにしました。これは私にとってはうまくいきます:

//This Replaces all except numbers from 0 to 9    
recognizedText = recognizedText.replaceAll("[^0-9]+", " "); 

そして今、あなたは数字でやりたいことを何でもすることができます。

たとえば、このコードを使用してすべての数値を文字列配列に分割し、TextView に表示します。

String[] justnumbers = recognizedText.trim().split(" "); //Deletes blank spaces and splits the numbers
YourTextView.setText(Arrays.toString(justnumbers).replaceAll("\\[|\\]", "")) //sets the numbers into the TextView and deletes the "[]" from the String Array

ここで動作することがわかります。

お役に立てれば。

于 2015-08-08T21:27:02.133 に答える