简体   繁体   English

查找函数'TessBaseAPICreate'出错:libtesseract.so:未定义符号:TessBaseAPICreate

[英]Error looking up function 'TessBaseAPICreate': libtesseract.so: undefined symbol: TessBaseAPICreate

I have created a simple swing application which does the ocr of certain form. 我创建了一个简单的swing应用程序,它可以处理某种形式的ocr。 The problem is I have a utility class which has a static method 问题是我有一个具有静态方法的实用程序类

public static String readImage(BufferedImage image){
    String str = null;

    //Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
     Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping

     try {
        System.out.println("Starting OCR process at " + new Date() + "... ");
        str = instance.doOCR(image);            
     } catch (TesseractException e) {
        System.err.println(e.getMessage());
     }        
     return str;
}

Now when I use this method following error occurs 现在,当我使用此方法发生以下错误

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Error looking up function 'TessBaseAPICreate': libtesseract.so: undefined symbol: TessBaseAPICreate
at com.sun.jna.Function.<init>(Function.java:179)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:391)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:371)
    at com.sun.jna.Native.register(Native.java:1401)
    at com.sun.jna.Native.register(Native.java:1065)
    at net.sourceforge.tess4j.TessAPI1.<clinit>(TessAPI1.java:37)
    at com.discusit.ocr.ocrutil.OCRUtil.readImage(OCRUtil.java:22)
    at com.discusit.form.OCRForm.browseButtonActionPerformed(OCRForm.java:350)
    at com.discusit.form.OCRForm.access$000(OCRForm.java:26)
    at com.discusit.form.OCRForm$1.actionPerformed(OCRForm.java:103)
t javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

I have already placed liblept168.dll, libtesseract.so and libtesseract302.dll in my project root folder. 我已经在我的项目根文件夹中放置了liblept168.dll,libtesseract.so和libtesseract302.dll。

I am unable to figure out what to do. 我无法弄清楚该怎么做。 Thanks in advance. 提前致谢。

You'll need to make and install Tesseract first to have the .so files in the appropriate locations. 您需要先制作并安装Tesseract才能将.so文件放在适当的位置。 If you have problem with the soft link, take a look at this post at Tesseract Forum. 如果您对软链接有疑问,请查看Tesseract论坛上的这篇文章

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Tesseract:UnsatisfiedLinkError-未定义的符号:TessBaseAPICreate - Tesseract: UnsatisfiedLinkError - undefined symbol: TessBaseAPICreate linux中的java tesseract错误“无法加载库&#39;tesseract&#39;:libtesseract.so” - java tesseract error in linux “Unable to load library 'tesseract': libtesseract.so” 无法加载库“tesseract”:libtesseract.so:无法打开共享对象文件:没有这样的文件或目录 - Unable to load library 'tesseract': libtesseract.so: cannot open shared object file: No such file or directory 在资源路径中找不到本机库(linux-x86-64 / libtesseract.so) - Native library (linux-x86-64/libtesseract.so) not found in resource path libfreenect错误:“查找函数&#39;freenect_set_depth_format&#39;时出错:libfreenect.so” - libfreenect error: “Error looking up function 'freenect_set_depth_format': libfreenect.so” 通过JNA查找Borland DLL中的函数时出错 - Error looking up function in a Borland DLL through JNA java.lang.UnsatisfiedLinkError:查找函数时出错 - java.lang.UnsatisfiedLinkError: Error looking up function 查找函数“ HelloWorld”时出错:找不到指定的过程 - Error looking up function 'HelloWorld': The specified procedure could not be found 未定义符号错误 - Undefined Symbol Error jni未定义符号错误 - jni undefined symbol error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM