2013-02-19 2 views
1

Я хочу разбить видеофайл .flv в .jpg/png кадры хорошего разрешения &, тогда вы хотите распознать последовательность символов в нем с помощью инструмента Tess4J (JNA обертка вокруг Tesseract).Невозможно распознать текст со 100% точностью в файле jpg с использованием Tess4J

В настоящее время я попробовал FFmpeg инструмент командной строки, чтобы разделить .flv видео файл в команду JPG images.The FFmpeg я использовал это:

FFmpeg -i myinput.flv myoutput% d.jpg

It дает мне выходное изображение, имеющее деталь:

изображение Размеры: 1280 * 696

Горизонтальное разрешение: 96 точек на дюйм

Разрешение по вертикали: 96 точек на дюйм

Битовая глубина: 24

Моя проблема: Я пытался распознать символы в видеокадрах (JPG файлы изображений, которые я расщепленные), используя следующий фрагмент кода с помощью Tess4J, его распознает персонажей, но не идентифицирует их со 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 точек на дюйм (точка в дюйм). Как получить изображение jpg более 200 dpi с использованием ffmpeg?

Любое тело, имеющее какой-либо фрагмент кода Java или любое предложение в этом отношении, пожалуйста, помогите.

+0

Если вы должны использовать выход jpg, рассмотрите возможность добавления '-qscale: v 2' в качестве опции вывода для повышения качества выходного файла. Настройки по умолчанию могут быть недостаточными. – LordNeckbeard

+0

Спасибо за ваше предложение. Я обязательно сделаю это. –

+0

Не могли бы вы привести пример точного синтаксиса команды. –

ответ

1

Используйте формат изображения PNG, если это возможно, поскольку JPEG может иметь сжатие и вводить артефакты. Вы можете масштабировать ваши изображения на Java до желаемых разрешений (проверьте метод ImageHelper.getScaledInstance в Tess4J). Вы должны получать лучшие результаты, чем от исходных преобразованных изображений. Также поможет инверсия цвета для получения черного текста на белом фоне.

Смежные вопросы