我正在使用Tess4jAPI执行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());
}
}
但是,当我从Servlet 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:Input not set
23:33:45.002[超文本传输协议-bio-8080-exec-5]ERROR net.source ceforge.tess4j.Tesseract-Input not set
java.lang.IllegalStateException:Input not set
我认为当您从servlet调用时,您的当前目录是不同的。当前目录是您的tomcat bin文件夹。所以当你这样调用时:
File image = new File("Scan0008.jpg");
您的scan0008. jpg必须放在tomcat的bin文件夹中,或者您必须使用文件的绝对路径。