0

画像からテキストを抽出しようとしています。問題は、以下のコードを使用して画像を処理し、抽出したテキストを印刷していることです。

    public class Test { 

    public static void extractText(String filename)
    //    public static void main(String[] args)
    {
        System.setProperty("jna.library.path", "32".equals(System.getProperty("sun.arch.data.model")) ? "lib/win32-x86" : "lib/win32-x86-64");

        File imageFile = new File("img_perspective.png");
        Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
    //  Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping

        try {
            String result = instance.doOCR(imageFile);
            System.out.println(result);
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

main メソッドを使用すると、OCR エンジンは非常にうまく機能し、テキストを抽出します。しかし、このメイン メソッドを「extractText()」という名前のメソッドに変換しようとして、別のクラスから呼び出そうとすると、例外がスローされます。

org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [com.patternrecognition.preprocessing.Preprocessing] in context with path  [/ImagePreprocessing] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at com.patternrecognition.preprocessing.test.extractText(test.java:19)

これの何が悪いのかわかりません。ハードコードされたファイル名でまったく同じコードを使用しています。メソッドのみが変更されます。

これはとてもイライラします。誰か助けてください。

4

2 に答える 2

0

Web アプリケーションを使用している場合は、jai-imageio.jar が WEB-INF/lib フォルダーにあることを確認してください。それは私のために働いた。

于 2014-11-27T00:28:12.830 に答える