1

.flv ビデオ ファイルを高解像度の .jpg/png フレームに分割し、Tess4J ツール (Tesseract の JNA ラッパー) を使用してその中の文字シーケンスを認識したいと考えています。

現在、ffmpeg コマンド ライン ツールを使用して、.flv ビデオ ファイルを jpg 画像に分割しようとしました。使用した ffmpeg コマンドは次のとおりです。

ffmpeg -i myinput.flv myoutput%d.jpg

それは私に詳細を持つ出力画像を与えています:

画像サイズ : 1280 * 696

水平解像度: 96 dpi

垂直解像度: 96 dpi

ビット深度: 24

私の問題は次のとおりです。Tess4Jを使用して次のコードスニペットを使用してビデオフレーム(分割したjpg画像ファイル)の文字を認識しようとしましたが、文字を認識していますが、100%の精度で識別していません。画像にはないジャンク文字も追加されています。

私が使用しているJavaコードスニペット:

import java.io.BufferedWriter

import java.io.File;

import java.io.FileWriter;

import java.io.IOException; 

import net.sourceforge.tess4j.Tesseract;

import net.sourceforge.tess4j.TesseractException;

public class TesseractDemo {

public static void main(String[] args) {

    File imageFile = new File("D:\\myinput1.jpg");

    Tesseract instance = Tesseract.getInstance();

    // Tesseract1 instance = new Tesseract1();

    try {

        String result = instance.doOCR(imageFile);

        System.out.println(result);

        // write in a file
        try {
            File file = new File("D:\\myoutput1.txt");
            BufferedWriter out = new BufferedWriter(new FileWriter(file));
            out.write(result);
            out.close();
        } catch (IOException ex) {
        }

    } catch (TesseractException ep) {
        System.err.println(ep.getMessage());
    }

}

}

注: Tess4J サイトでは、OCR を実行するために使用する画像は 200 dpi (ドット/インチ) を超える必要があると述べています。ffmpeg を使用して 200 dpi を超える jpg 画像を取得するには??

この点に関して、Javaコードスニペットまたは提案を持っている団体は助けてください。

4

1 に答える 1

1

可能であれば、PNG 画像形式を使用してください。Java で画像を望ましい解像度に再スケーリングできます ( Tess4J のImageHelper.getScaledInstanceメソッドを確認してください)。元の変換された画像よりも良い結果が得られるはずです。白い背景に黒いテキストを取得するための色反転も役立ちます。

于 2013-02-21T02:30:52.037 に答える