文字列の3行で6つの連続した整数を見つけます

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)の試合が、テキスト電流をキャッチしないと、現在の後の数字ではありません

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=300558&siteId=1