无法使用Tess4J在jpg文件中以100%的准确度识别文本

时间:2013-02-19 11:28:44

标签: ffmpeg tesseract

我想将.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代码段的机构或这方面的任何建议都可以提供帮助。

1 个答案:

答案 0 :(得分:1)

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