Kushalミシュラ:
私はそれが文書をスキャンし、その中のすべてのテキストを検索しますJavaでOCRプログラムを書かれています。私の主な仕事は、6以上の整数であることができる請求書番号を見つけることです。
私は、サブストリング機能を使用しますが、その番号の位置はすべてのドキュメントに変化しているとして、それはとても効率的ではないが、それは常にOCRテキストの最初の3行に存在しています。
私は最初の3行を反復処理し、この6つの連続番号を取得することができ、そこからのJava 8のコードを書きたいです。
私が使用していたTesseractを OCRため。
例:
,——— ————i_
g DAILYW RK SHE 278464
E C 0 mp] on THE POUJER Hello, Mumbai, Co. Maha
このことから、私は数を抽出する必要が278464を。
助けてください!!
シャオゆう:
正規表現を使用して、次のコードを試してみてください。
import java.lang.Math; // headers MUST be above the first class
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test
{
// arguments are passed using the text field below this editor
public static void main(String[] args)
{
Pattern pattern = Pattern.compile("(?<=\\D)\\d{6}(?!\\d)");
String str = "g DAILYW RK SHE 278464";
Matcher matcher = pattern.matcher(str);
if(matcher.find()){
String s = matcher.group();
//278464
System.out.println(s);
}
}
}
- (?<= \\ D)試合ではなく、キャッチテキスト電流を、現在の前の数字ではありません
- \\ D {6}正確6番号と一致
- (?!\\ d)の試合が、テキスト電流をキャッチしないと、現在の後の数字ではありません