Tess4J - Собственная библиотека (linux-x86-64/libtesseract.so) не найдена в пути к ресурсам

Я использую Tess4J (оболочка JNA вокруг tesseract) и пытаюсь вызвать tess.doOCR(myFile) для текста OCR из одностраничного PDF.

У меня установлен GhostScript (используя yum install ghostscript), gs -h работает корректно.

Мой сервер приложений использует 64-bit JVM, у меня есть gsdll64.dll, а 64-разрядная библиотека tesseract liblept168.dll и libtesseract302.dll в пути к классам.

Когда вызывается tess.doOCR(myFile), это регистрируется:

GPL Ghostscript 8.70 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1

Но тогда это просто останавливается там. Дальше программа не идет.

ОБНОВЛЕНИЕ --

Похоже, настоящая проблема связана с этой ошибкой:

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract.so) not found in resource path

После долгих поисков я не вижу удобного места, чтобы найти этот файл libtesseract.so, и я не уверен, что нужно, чтобы загрузить его на мой сервер приложений Linux. Я читал, что, возможно, мне нужно загрузить какую-то среду выполнения C++, но я не вижу для этого загрузки Linux. Любые советы будут высоко ценится.

Или это как-то связано с символической ссылкой?


person Don Cheadle    schedule 26.10.2014    source источник


Ответы (4)


Исправление было для меня простым, просто выполните sudo apt-get install tesseract-ocr из командной строки. Для Linux вам не нужно беспокоиться о библиотеках DDL или версии jvm. Установка tessearct из apt-get поможет.

person Jimmy    schedule 14.05.2015
comment
Да, оглядываясь назад, проблема (я думаю) заключалась в том, что я использовал менеджер пакетов yum (на каком-то RedHat или что-то в этом роде), и tesseract-ocr не было удобной загрузкой. Напомним, что заставить его работать, не имея его в системе управления пакетами, было кошмаром. Я определенно думаю, что переход на Ubuntu или что-то вроде Debian (с apt-get) значительно упрощает жизнь, чтобы заставить работать tesseract... - person Don Cheadle; 14.05.2015

Эти библиотеки DLL предназначены для Windows. Для Linux вам необходимо установить или собрать из Исходный код Tesseract.

Эта версия GS, 8.70, довольно старая. Последняя библиотека Ghost4J, которую использует Tess4J, несовместима с этим.

person nguyenq    schedule 26.10.2014
comment
можно ли указать другую версию при выполнении yum install ghostscript? в противном случае, как проще всего установить GhostScript в Linux без yum install? p.s. спасибо за столь активную помощь тем, кто пытается работать с Tess4J здесь, на SO и в других местах - person Don Cheadle; 27.10.2014
comment
Похоже, вам нужно собрать его из источник, если последняя версия недоступна в репозитории. - person nguyenq; 28.10.2014
comment
Я перешел с дистрибутива Red Hat на Ubuntu, и теперь процесс установки tesseract и ghostscript значительно стал намного проще. apt-get install tesseract настроил и заработал tesseract 3.03, а apt-get install ghostscript получил ghostscript 9.10, работающий нормально. Глупый вопрос: если tesseract установлен и работает сам по себе, и ghostscript, мне нужны только JAR-файлы от Tess4J? (а не обученные данные, папка tessdata, DLL и другие вещи) - person Don Cheadle; 28.10.2014
comment
Да, вы делаете. Обязательно используйте версию, совместимую с вашей версией Tesseract. - person nguyenq; 29.10.2014
comment
по моему опыту работы с Ubuntu 14.04 LTS, все, что мне нужно было сделать, это apt-get install tesseract-ocr и ghostscript. Затем я указал переменную env TESSDATA_PREFIX на правильный каталог, в который apt-get установил tesseract (но мне все равно нужно было установить DataPath на моем экземпляре Tess4J, хотя переменная env существовала...). Затем я включил файлы JAR, поставляемые вместе с загрузкой Tess4J (tess4j, ghostscript, log4j, imageio), в путь к классам... и это все, что потребовалось для работы. Итак, кажется, apt-get install tesseract-ocr дал мне нужные библиотеки DLL и eng.traineddata... - person Don Cheadle; 29.10.2014
comment
Правильно .so, а не .dll. - person nguyenq; 30.10.2014

sudo apt-get update
sudo apt-get install tesseract-ocr 

загрузить тестовые данные с помощью git

https://github.com/tesseract-ocr/tessdata
person benderalex5    schedule 12.04.2020
comment
Непонятно, как ваш ответ отвечает на вопрос. Почему при загрузке тестовых данных правильный ресурс не будет найден в пути? - person Simon.S.A.; 13.04.2020
comment
Он устанавливает tesseract, который содержит рассматриваемую библиотеку, и добавляет ее в путь к библиотеке. - person keiki; 02.03.2021

Tess4J должен включать необходимые библиотеки. Тем не менее, вам нужно сначала извлечь их.

Это должно помочь:

File tmpFolder = LoadLibs.extractTessResources("win32-x86-64"); // replace platform
System.setProperty("java.library.path", tmpFolder.getPath());

Вы должны заменить аргумент extractTessResources(..) своей платформой. Вы можете найти возможные варианты, заглянув в jar-файл Tess4J.

Таким образом, вам не нужно устанавливать Tesseract в вашей системе.

Недавно я написал сообщение в блоге о Tess4J, в котором использовал эту технику. Возможно, это может помочь, если вам нужна дополнительная информация или работающий пример проекта.

person micha    schedule 26.08.2020