2013-09-11 2 views
0

Я использую Tesseract с моим приложением, поэтому я могу извлечь текст из изображений. Это мой код, все нормальноTesseract с 64-битным jvm

public class TestDriver { 
    public static void main(String []args){ 
     String imagePath = "apps/Tess4J/eurotext.bmp"; 
     File imageFile = new File(imagePath); 
     Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping 
     // Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping 

     try { 
      String result = instance.doOCR(imageFile); 
      System.out.println(result); 
     } catch (TesseractException e) { 
      System.err.println(e.getMessage()); 
     } 
    } 
} 

Но я понял, что мой .dll предназначен для 32-разрядной JVM, и мы используем 64 вместо этого. это моя ошибка: «Исключение в потоке» main «java.lang.UnsatisfiedLinkError: Не удается загрузить библиотеку« libtesseract302 »: указанный модуль не найден».

Как я должен работать с этой проблемой, если я должен оставаться с 64 бит?

ответ

1

Вы не можете использовать 32-разрядные собственные библиотеки из 64-разрядной JVM (или наоборот). Есть два возможных решения:

  • Используйте 32-разрядную JVM (это будет работать, даже если у вас есть операционная система 64-разрядная версия)
  • Используйте 64-разрядные версии собственных библиотек, которые необходимо использовать

Примечание: Вам не нужно перекомпилировать код Java. Байт-код Java не зависит от «битности» JVM и операционной системы.

0

Из-за вашей ошибки идея, что я получаю, не существует логической связи для libtesseract302. Ниже приводится ссылка на эту ошибку:

http://sourceforge.net/p/tess4j/discussion/1202294/thread/a3e57163 

и перейти на 32-битную JVM,

Вы используете Tess4J API ??? Или выполнить его с помощью команды «tesseract»?

У меня была такая же проблема, чтобы преодолеть его. Я выполнил tesseract из командной строки, как показано ниже.

Runtime.getRuntime().exec("tesseract " + fileName + " " + textFileName); 
+0

Я использую Tess4J API под веб-приложением. Плюс libtesseract302 находится под моим корнем Project. Должен ли я разместить его в другом месте? – user2725251

+0

Есть методы в Tess4j для вызова, создаете ли вы экземпляр класса Tesseract и затем вызываете метод doOCR (изображение изображения) ??? Я попробовал, чтобы у меня была такая же ошибка на 64 бит, чтобы справиться с этим, я сделал Tesseract из командной строки с использованием Runtime, см. Мой ответ, я его обновил. –

+0

Да, я использую этот метод: Строковый результат = экземпляр.doOCR (imageFile); Я собираюсь попробовать ваше решение с помощью командной строки! – user2725251

Смежные вопросы