Неподдерживаемый формат изображения. Может потребоваться установка пакета JAI Image I/O.

Я пытаюсь преобразовать файл изображения в текст, используя зависимость tess4j maven.
Зависимость в pom.xml: -

<!-- OCR dependency -->
    <dependency>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>3.4.0</version>
        <exclusions>
            <exclusion>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
            </exclusion>
            <exclusion>
                <groupId>net.sourceforge.lept4j</groupId>
                <artifactId>lept4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>4.4.0</version>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.lept4j</groupId>
        <artifactId>lept4j</artifactId>
        <version>1.5.0</version>
    </dependency>  

Мой код: -

public String convertImageToText(String imageFilePath) throws TesseractException {

    File imageFile = new File("imageFilePath");
    ITesseract iTesseract = new Tesseract();
    ImageIO.scanForPlugins();
    String result = iTesseract.doOCR(imageFile);
    System.out.println("Converted text is: "+result);
    return result;
}

Однако, когда я пытаюсь выполнить свою программу, я всегда сталкиваюсь с исключением ниже:

Exception in thread "main" net.sourceforge.tess4j.TesseractException: java.lang.RuntimeException: Unsupported image format. May need to install JAI Image I/O package.
https://java.net/projects/jai-imageio/
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:215)
at utilities.HelperMethods.convertImageToText(HelperMethods.java:218)
at net.sourceforge.tess4j.util.ImageIOHelper.getIIOImageList(ImageIOHelper.java:408)
at utilities.HelperMethods.main(HelperMethods.java:250)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:212)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:196)
Caused by: java.lang.RuntimeException: Unsupported image format. May need to install JAI Image I/O package.
https://java.net/projects/jai-imageio/
at utilities.HelperMethods.convertImageToText(HelperMethods.java:218)
at net.sourceforge.tess4j.util.ImageIOHelper.getIIOImageList(ImageIOHelper.java:408)
at utilities.HelperMethods.main(HelperMethods.java:250)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:212)  

Все необходимые зависимости, такие как jai, lept4j и т. д., присутствуют в моем репозитории. Также я перепробовал все решения, предложенные на этом форуме, но не могу устранить эту ошибку.
Буду признателен за любую помощь.

Спасибо
Обновление: файл прикреплен здесь - файл Jpg


person Anuja    schedule 16.06.2017    source источник
comment
И какой тип файла изображения вы пытаетесь прочитать?   -  person VGR    schedule 16.06.2017
comment
Я пробовал с файлами jpg и png. получение той же ошибки с обоими форматами.   -  person Anuja    schedule 16.06.2017
comment
Можете ли вы опубликовать один из проблемных файлов изображений в imgur, чтобы мы могли попробовать загрузить его с помощью ImageIO?   -  person VGR    schedule 16.06.2017
comment
Прикрепил файл jpg к вопросу выше.   -  person Anuja    schedule 16.06.2017
comment
Я могу загрузить это изображение как с помощью ImageIO.read, так и путем явного создания ImageReader и получения Iterator‹IIOImage›. Проблема не в файле изображения. Попробуйте распечатать imageFile.canRead() перед загрузкой файла.   -  person VGR    schedule 16.06.2017
comment
Я такой глупый! Я передавал неправильное имя файла... Я случайно жестко запрограммировал имя файла с именем переменной. Но теперь я столкнулся с java.lang.UnsatisfiedLinkError... Пытаюсь решить эту проблему. Однако спасибо за быстрый ответ!   -  person Anuja    schedule 16.06.2017


Ответы (1)


Он не может определить подходящий ImageReader для данного формата файла. Так что, вероятно, 1) формат файла не может быть правильно определен (странное расширение файла?) или 2) для формата, который вы пытаетесь использовать, не зарегистрирована программа чтения изображений.

См. ImageIO.getImageReaderByFormatName.

person Fabian    schedule 16.06.2017