在基于Web的应用程序中使用Tesseract,其中JDK为64位

时间:2016-02-23 20:26:06

标签: java tomcat tesseract

我正在使用Tesseract开发基于Web的OCR系统。我的JDK是64位。但是当我运行我的项目时它会出现以下错误

java.lang.UnsatisfiedLinkError:找不到指定的模块。

at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.<init>(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(Unknown Source)
at net.sourceforge.tess4j.TessAPI.<clinit>(Unknown Source)
at net.sourceforge.tess4j.Tesseract.init(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.Tesseract.doOCR(Unknown Source)
at net.sourceforge.tess4j.ocr.TesseractOcr.performOcr(TesseractOcr.java:22).

但是当我在独立应用程序中使用Tesseract时,它会从图像中提取文本。我使用Tomcat作为服务器。并且tess4j-3.0.jar缺少liblept172.dll

  1. 我不能在64位JDK中使用Tesseract吗?
  2. 如何在Tomcat服务器中使用Tesseract
  3. 如何将liblept172.dll添加到tess4j-3.0.jar文件?
  4. 对于不使用dll文件的tesseract有没有其他选择?
  5. 我几乎完成了与此问题相关的所有教程。但不幸的是,没有为我工作。有人有想法吗?提前谢谢

1 个答案:

答案 0 :(得分:0)

使用32位dll与64位java是不可能的。 您必须使用与本机dll的jvm相同的体系结构。

如果是这种情况,一个常见的jni问题是,如果你设置一个专用的&#34;本机库路径&#34;并且缺少像libc或vcrt这样的依赖dll。

同样常见的是,将lib放在未检查的路径中。如果您认为自己做得很好,我们在Windows上使用ProccessMonitor在init期间找到丢失的dll文件。您可以按照jvm查看的不同位置,包括文件名。

更新:根据文档tess4j在Windows上加载libtesseract304.dll

文档还声明,libs包含在jar中并在运行时提取。这可能需要作为命令行工具运行。它还使用jna https://jna.java.net/javadoc这是一个jni包装器来帮助加载DLL。它遵循jna.library.path。

我建议尝试一下ProcessMonitor。实时太短,无法尝试和错误调试DLL加载: - )

https://technet.microsoft.com/de-de/sysinternals/processmonitor.aspx