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获取200dpi以上的jpg图片??

任何有任何java代码片段或在这方面有任何建议的机构请帮忙。

4

1 回答 1

1

如果可能,请使用 PNG 图像格式,因为 JPEG 可能会压缩并引入伪影。您可以将 Java 中的图像重新缩放到所需的分辨率(检查Tess4J中的 ImageHelper.getScaledInstance 方法)。您应该得到比原始转换图像更好的结果。在白色背景上获得黑色文本的颜色反转也会有所帮助。

于 2013-02-21T02:30:52.037 回答