我想将.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代码段的机构或这方面的任何建议都可以提供帮助。
答案 0 :(得分:1)
如果可能,请使用PNG图像格式,因为JPEG可能会有压缩并引入工件。您可以使用Java将图像重新缩放到所需的分辨率(在Tess4J中检查ImageHelper.getScaledInstance方法)。您应该获得比原始转换图像更好的结果。在白色背景上获得黑色文字的颜色反转也会有所帮助。