Tesseract-OCR: использование Tess4j в весеннем веб-приложении mvc в среде Linux

Я пытаюсь использовать tesseract-ocr в своем весеннем веб-приложении в среде Linux (linux mint — Ubuntu 14.04), используя сервер tomcat 7. Но я получаю сообщение об ошибке:

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': libtesseract.so: cannot open shared object file: No such file or directory
com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:145)
com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:188)
com.sun.jna.Library$Handler.<init>(Library.java:123)
com.sun.jna.Native.loadLibrary(Native.java:255)
com.sun.jna.Native.loadLibrary(Native.java:241)
net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:45)
net.sourceforge.tess4j.Tesseract.init(Tesseract.java:283)
net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:219)
net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:168)
net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:152)

Я использую следующий код:

Tesseract instance = Tesseract.getInstance();
String result = instance.doOCR(file);

Я использую maven для предоставления зависимостей для tess4j как:

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>1.3.0</version>
</dependency>

Кроме того, ранее я успешно установил tesseract на свой компьютер с Linux, используя команду:

sudo apt-get install tesseract-ocr.

Важно отметить, что я могу запускать tesseract из аргументов командной строки, а также из автономного java-проекта с использованием Tess4j. Это дает мне правильный результат в обоих случаях.

Но при работе с сервером tomcat я получаю указанную выше ошибку. У меня есть файл libtesseract.so.3, расположенный по адресу /usr/lib. Но почему-то tomcat не может найти путь установки tesseract.

Чего я не могу понять, так это того, что при запуске его как отдельного приложения оно работает нормально и может находить файлы tesseract, но при работе с веб-сервера оно не может найти файлы tesseract.


person Ted Mosby    schedule 28.11.2014    source источник


Ответы (1)


Вы пытались создать ссылку с именем libtesseract.so; что-то вроде следующего?

$ cd /usr/lib
$ ln -sf libtesseract.so.3 libtesseract.so

Похоже, веб-приложение ищет что-то под названием libtesseract.so, но не может найти.

Также проверьте и убедитесь, что /usr/lib включено в переменную среды PATH ($ echo $PATH).

person manish    schedule 28.11.2014
comment
Спасибо, Маниш, это решение было идеальным и работало как шарм. Но мне было интересно, почему эта проблема не возникла, когда я использовал tesseract как отдельное приложение Java? - person Ted Mosby; 29.11.2014
comment
Я могу только догадываться, что автономное приложение и Tomcat используют разные пути и что libtesseract.so доступен для автономного приложения. Сценарий запуска Tomcat работает с путем, поэтому это могло произойти. Посмотрите, сможете ли вы найти несколько копий, запустив find /usr -name libtesseract.so. - person manish; 30.11.2014