2015-12-18 4 views
1

им пытаются сделать простое приложение OCR, но я получаю ошибки как это:Java Тессеракт dyld: Символ не найден:

Код:

import org.bytedeco.javacpp.*; 

import static org.bytedeco.javacpp.lept.*; 
import static org.bytedeco.javacpp.tesseract.*; 
import static org.junit.Assert.assertTrue; 
import java.io.File; 
import java.io.UnsupportedEncodingException; 

    public class Main { 
     public void tesseract(String filename){ 
      BytePointer outText; 

      tesseract.TessBaseAPI api = new tesseract.TessBaseAPI(); 
      // Initialize tesseract-ocr with English, without specifying tessdata path 
      if (api.Init("/Users/Marcel/tesseract-ocr", "ENG") != 0) { 
       System.err.println("Could not initialize tesseract."); 
       System.exit(1); 
      } 

      // Open input image with leptonica library 
      PIX image = pixRead(filename); 
      api.SetImage(image); 
      // Get OCR result 
      outText = api.GetUTF8Text(); 
      String string = outText.getString(); 
      assertTrue(!string.isEmpty()); 
      System.out.println("OCR output:\n" + string); 

      // Destroy used object and release memory 
      api.End(); 
      outText.deallocate(); 
      pixDestroy(image); 
     } 

     public static void main(String[] args) { 

      Main main = new Main(); 
      String fileName = "src/main/resources/test.png"; 

      main.tesseract(fileName); 
     } 
    } 

Я пробовал некоторые решения от Google, но оно не решить это. Я использую Inteliji (с maven) на Mac OSX. Перед тем как я имел проблемы с TESTDATA_PREFIX, но я изменил api.init первый параметр, и теперь я получаю это:

dyld: lazy symbol binding failed: Symbol not found: __ZN9tesseract11TessBaseAPI8SetImageEPK3Pix 
    Referenced from: /private/var/folders/lq/3mb8s_jj1ql0klqzznm1j1tm0000gn/T/javacpp33697284992581/libjnitesseract.dylib 
    Expected in: /usr/local/lib/libtesseract.3.dylib 

dyld: Symbol not found: __ZN9tesseract11TessBaseAPI8SetImageEPK3Pix 
    Referenced from: /private/var/folders/lq/3mb8s_jj1ql0klqzznm1j1tm0000gn/T/javacpp33697284992581/libjnitesseract.dylib 
    Expected in: /usr/local/lib/libtesseract.3.dylib 
+0

вы нашли решение? –

ответ

0

Это из-за 2 конфликтующих libtesseract.3.dylib. Если вы установили tesseract на макинтош, используя отвар, то он ссылается на libtesseract.3.dylib внутри tesseract папки /usr/local/Cellar/tesseract/3.04.01_1/lib/ вместо /usr/local/lib/libtesseract.3.dylib

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