-2

我正在使用 Tess4j API 执行 OCR,并在 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());
        }
    }

但是,当我从我的 Servlets 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());
        }
    }

我已经在 WEB-INF 的 lib 文件夹下包含了所有需要的 jar。还在项目构建路径中添加了 jar。谁能让我知道我做错了什么。
异常:
java.lang.IllegalStateException:未设置输入
23:33:45.002 [http-bio-8080-exec-5] 错误 net.sourceforge.tess4j.Tesseract - 未设置
输入 java.lang.IllegalStateException:未设置输入

4

1 回答 1

0

我认为当您从 servlet 调用时,您的当前目录会有所不同。当前目录是你的tomcat bin 文件夹。所以当你这样打电话时:

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

您的 scan0008.jpg 必须放在 tomcat 的 bin 文件夹中,或者您必须使用文件的绝对路径。

于 2016-04-22T18:21:36.940 回答