-2

OCR を実行するために Tess4j API を使用しており、Eclipse で動的 Web プロジェクトを作成しました。Java リソース フォルダーの直下に新しい Java クラスを作成すると、コードは正常に動作します。

    public static void main(String[] args){
        File image = new File("Scan0008.jpg");  
        ITesseract instance = new Tesseract();
        try{
            String result = instance.doOCR(image);
            System.out.println(result);
        }catch(TesseractException e){
            System.err.println(e.getMessage());
        }
    }

ただし、サーブレットの doPost メソッドから同じコードを呼び出すと、例外が発生します。

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            Validate valObj = new Validate();
            valObj.validate();
    }
    public void validate() {
        File image = new File("Scan0008.jpg");
        ITesseract instance = new Tesseract();
        try {
            String result = instance.doOCR(image);
            System.out.println(result);
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
        }
    }

必要なすべての jar を WEB-INF の lib フォルダーに含めました。プロジェクトのビルドパスにもjarを追加しました。誰かが私が間違っていることを教えてください。
例外:
java.lang.IllegalStateException: 入力が設定されていません
23:33:45.002 [http-bio-8080-exec-5] エラー net.sourceforge.tess4j.Tesseract - 入力が設定されていません
java.lang.IllegalStateException: 入力が設定されていません

4

1 に答える 1

0

サーブレットから呼び出している場合は、現在のディレクトリが異なると思います。現在のディレクトリは、Tomcat bin フォルダーです。したがって、次のように呼び出す場合:

File image = new File("Scan0008.jpg");

scan0008.jpg を tomcat の bin フォルダーに配置するか、ファイルの絶対パスを使用する必要があります。

于 2016-04-22T18:21:36.940 に答える