[英]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.