Я использую API Tess4j для выполнения OCR и создал динамический веб-проект в eclipse. Если я создам новый класс 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());
}
}
Я включил все необходимые банки в папку lib WEB-INF. Также добавили банки в путь сборки проектов. Может ли кто-нибудь сообщить мне, что я делаю неправильно.
Исключение:
java.lang.IllegalStateException: Input not set
23:33:45.002 [http-bio-8080-exec-5 ] ОШИБКА net.sourceforge.tess4j.Tesseract — ввод не задан
java.lang.IllegalStateException: ввод не задан
File image = ...
, чтобы убедиться, что файл существует и доступен для чтения. - person KevinO   schedule 22.04.2016new File(some_file)
не создает исключение, если файл находится не в ожидаемом месте. Просто распечатать что-то не помогает. Вы должны явно проверитьif (! image.exists()) { display error }
. - person KevinO   schedule 22.04.2016