Tess4j在mac OS X上不满意链接错误

时间:2014-01-28 00:20:37

标签: java tesseract

嘿,我正在尝试使用tess4j进行tesseract,并在mac osx上将此问题用于eclipse。

我的tesseract在终端上工作正常但是试图通过tesseract运行tess4j会让我错误。

java.lang.UnsatisfiedLinkError:无法加载库'tesseract':本机库(darwin / libtesseract.dylib)

我在我的opt / local / lib中使用macport安装了tessetact dylib及其命名的libtesseract.dylib。

感谢您的帮助

6 个答案:

答案 0 :(得分:5)

我知道这是一个老帖子。我最近尝试使用Tess4J时遇到了这个问题。但是,我设法找到了解决方法。我写了一篇关于它的帖子http://www.microshell.com/programming/java/performing-optical-character-recognition-in-java/

简而言之,问题是因为tess4j-2.0.0.jar不包含MacOS库。所以我只是通过以下步骤修改了我的maven缓存jar:

  1. cd /Users/user/.m2/repository/net/sourceforge/tess4j/tess4j/2.0.0(调整tess4j JAR文件所在的目录)
  2. mkdir darwin
  3. jar uf tess4j-2.0.0.jar darwin
  4. cp /opt/local/lib/libtesseract.3.dylib darwin/libtesseract.dylib
  5. jar uf tess4j-2.0.0.jar darwin/libtesseract.dylib
  6. jar tf tess4j-2.0.0.jar(以确认该文件已包含在内)
  7. 我在修改tess4j-2.0.0.jar文件后能够运行我的Java程序。以下是我的MacOS版本。

    user@laptop:~$ uname -a
    Darwin Maresas-MacBook-Pro.local 14.3.0 Darwin Kernel Version 14.3.0: Mon Mar 23 11:59:05 PDT 2015; root:xnu-2782.20.48~5/RELEASE_X86_64 x86_64
    

答案 1 :(得分:4)

您需要在Mac上安装tesseract lib。

brew install tesseract --with-all-languages

答案 2 :(得分:2)

@maresa 几年后,您的评论对我有所帮助,非常感谢 :) 有点不同的路径,也许它会帮助某人:

  1. cd /Users/username/.m2/repository/net/sourceforge/tess4j/tess4j/4.5.4/
  2. mkdir 达尔文
  3. jar uf tess4j-4.5.4.jar darwin/
  4. brew info tesseract(在这里你可以找到 libtesseract.4.dylib 的路径)
  5. cp /usr/local/Cellar/tesseract/4.1.1/lib/libtesseract.4.dylib darwin/libtesseract.dylib
  6. jar uf tess4j-4.5.4.jar darwin/libtesseract.dylib
  7. jar tf tess4j-4.5.4.jar

MacOS Catalina - 10.15.3

答案 3 :(得分:1)

我与Ghost4j有一个非常相似的问题,即

InvocationTargetException: Unable to load library 'gs': Native library (darwin/libgs.dylib) not found in resource path

不是修改jar文件,而是通过设置jna.library.path将jna指向适当的lib路径。在Eclipse中,您需要在运行配置中设置系统属性 - 请在此处回答 - https://stackoverflow.com/a/862405/2163229

如果你正在使用Maven exec:

mvn -Djna.library.path=/opt/local/lib/ exec:java -Dexec.mainClass="foo.bar.NativeThingy"

export MAVEN_OPTS="-Djna.library.path=/opt/local/lib/" && mvn exec:java -Dexec.mainClass="foo.bar.NativeThingy"

显然,将路径设置为安装lib的位置。就我而言,我运行$ locate libgs.dylib并找到了上述路径。

<强>参考文献: https://jna.java.net/javadoc/com/sun/jna/NativeLibrary.html

答案 4 :(得分:0)

确保使用Tesseract 3.02版本的libtesseract.dylib。在Tesseract论坛上查看this post

答案 5 :(得分:0)

这正是我今天所追求的,所以感谢上面的Q&amp; A.作为超越maresa提到的一个额外步骤,我在修复了你提出的问题之后遇到了这个错误:

java.lang.UnsatisfiedLinkError: dlopen(/var/folders/sq/rh89_ntd7jqdlv9__25zj9dr0000gp/T/jna--913086793/jna8800789057827590119.tmp, 9): Library not loaded: /usr/local/lib/libjpeg.8.dylib
  Referenced from: /usr/local/lib/liblept.4.dylib
  Reason: image not found

所以为了解决这个问题,我需要为libjpeg.8.dylib设置一个符号链接:

ln -s /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib /usr/local/lib/libjpeg.8.dylib

不确定是否有办法在没有符号链接的情况下执行此操作(即将其打包在jar中),但我希望这可以帮助其他正在查看此帖子的人。