java Mac OS X上的Tess4j未满足链接错误

goqiplq2  于 2023-02-21  发布在  Java
关注(0)|答案(7)|浏览(257)

嘿,我正在尝试使用tess4j的tesseract和有这个问题的eclipse的mac osx。
我的tesseract在终端上工作正常,但是试图通过tesseract运行tess4j时出错。
java.lang.UnsatisfiedLinkError:无法加载库'tesseract':本地库(darwin/libtesseract.dylib)
我确实在我的opt/local/lib中有tessetact dylib和它的名称libtesseract. dylib,我是使用macport安装的。
谢谢你的帮忙

sigwle7e

sigwle7e1#

我知道这是一篇老文章。我最近在尝试使用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(验证是否包含该文件)
    然后,在修改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
oewdyzsn

oewdyzsn2#

我有一个非常类似的问题与Ghost 4j,即。

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

不要修改jar文件,而是通过设置jna.library.path将jna指向适当的lib路径。在Eclipse中,您需要在运行配置中设置system属性--因此,这里的答案是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"

显然,将路径设置为安装库的位置,在我的例子中,我运行$ locate libgs.dylib并找到了上面的路径。

参考文件:https://jna.java.net/javadoc/com/sun/jna/NativeLibrary.html

xvw2m8pv

xvw2m8pv3#

您需要在Mac上安装tesseract库。
brew install tesseract --with-all-languages

lkaoscv7

lkaoscv74#

@maresa几年后你的评论帮助了我,非常感谢:)有点不同的路径,也许它会帮助一些人:

  1. cd /用户/用户名/.m2/存储库/net/源伪造/tess 4j/tess 4j/4.5.4/
    1.姆克迪尔达尔文
    1.贾尔超滤试验4j-4.5.4.贾尔达尔文/
  2. brew info tesseract(在这里你可以找到libtesseract.4.dylib的路径)
  3. cp /usr/本地/细胞库/立方体结构/4.1.1/库/libtesseract.4.dylib达尔文/libtesseract.dylib
  4. jar超文本文件tess 4j-4.5.4. jar达尔文/libtesseract.dylib
    1.震击器测试4j-4.5.4.jar
    MacOS Catalina - 10.15.3
xbp102n0

xbp102n05#

请确保您使用的是3.02版本的魔方libtesseract.dylib。查看魔方论坛上的这篇文章。

mec1mxoz

mec1mxoz6#

这正是我今天所要做的,所以谢谢上面的问答。作为超越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中),但我希望这对其他正在查看此帖子的人有所帮助。

gojuced7

gojuced77#

基于maresa上面的答案(非常有效),我编写了一个库,它可以使使用tesseract.You can get it here中的适当C库修补tess4j.jar文件变得容易。

相关问题