【问题标题】:Tess4J - Native library (linux-x86-64/libtesseract.so) not found in resource pathTess4J - 在资源路径中找不到本机库 (linux-x86-64/libtesseract.so)
【发布时间】:2014-10-26 20:35:35
【问题描述】:

我正在使用 Tess4J(围绕 tesseract 的 JNA 包装器),并尝试从单页 PDF 调用 tess.doOCR(myFile) 到 OCR 文本。

我安装了 GhostScript(通过使用 yum install ghostscript),gs -h 工作正常。

我的应用服务器正在使用64-bit JVM,我在类路径中有gsdll64.dll,以及64 位tesseract dll 的liblept168.dlllibtesseract302.dll

tess.doOCR(myFile) 被调用时,会记录下来:

GPL Ghostscript 8.70 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1

然后它就停在那里了。该程序没有进一步发展。

更新 --

看起来真正的问题来自这个错误:

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract.so) not found in resource path

环顾四周后,我没有找到一个方便的位置来找到这个libtesseract.so 文件,而且我不确定如何将它放到我的 Linux 应用服务器上。我读到也许我需要下载一些 C++ 运行时,但我没有看到 Linux 下载。任何建议将不胜感激。

或者这与符号链接有关?

【问题讨论】:

    标签: pdf tesseract ghostscript tess4j


    【解决方案1】:

    修复对我来说很简单,只需从命令行执行 sudo apt-get install tesseract-ocr 即可。对于 linux,您无需担心 DDL 库或 jvm 版本。从 apt-get 安装 tessearct 就可以了。

    【讨论】:

    • 是的,回想起来,问题(我认为)是我使用 yum 包管理器(在某种 RedHat 或其他东西上),并且 tesseract-ocr 不是一个方便的下载。回想一下,在没有通过包管理提供它的情况下让它工作是一场噩梦。我绝对认为切换到 Ubuntu 或其他 debian(使用 apt-get)可以让 tesseract 工作变得更容易......
    【解决方案2】:

    这些 DLL 用于 Windows。对于 Linux,您需要从 Tesseract source 安装或 build

    那个 GS 版本 8.70 已经很老了。 Tess4J 使用的最新 Ghost4J 库与它不兼容。

    【讨论】:

    • 执行yum install ghostscript时是否可以指定不同的版本?否则,在没有yum install 的情况下在 Linux 上安装 GhostScript 的最简单方法是什么? p.s.感谢您如此积极地帮助那些在 SO 和其他地方尝试与 Tess4J 合作的人
    • 看起来你必须从sourcebuild 它,如果存储库中没有最新的可用。
    • 我从 Red Hat 发行版切换到 Ubuntu,它使安装 tesseract 和 ghostscript 的过程so 变得更加容易。 apt-get install tesseract 得到了 tesseract 3.03 的设置和工作,apt-get install ghostscript 得到了 ghostscript 9.10 工作正常。愚蠢的问题:如果安装了 tesseract 并且可以独立运行和 ghostscript,我只需要 Tess4J 的 JAR 吗? (而不是经过训练的数据、tessdata 文件夹、DLL 和其他东西)
    • 是的,你知道。确保使用与您的 Tesseract 版本兼容的版本。
    • 根据我在 Ubuntu 14.04 LTS 上的经验,我需要做的就是 apt-get install tesseract-ocrghostscript。然后,我将 TESSDATA_PREFIX env 变量指向正确的目录 apt-get 安装 tesseract (但我仍然需要在我的 Tess4J 实例上设置数据路径,即使存在 env var ......)。然后我在类路径中包含了 Tess4J 下载(tess4j、ghostscript、log4j、imageio)附带的 JAR ......这就是开始工作所需的全部内容。所以看来apt-get install tesseract-ocr 让我得到了正确的 DLL 和 eng.traineddata...
    【解决方案3】:
    sudo apt-get update
    sudo apt-get install tesseract-ocr 
    

    通过git下载测试数据

    https://github.com/tesseract-ocr/tessdata
    

    【讨论】:

    • 尚不清楚您的回答如何解决这个问题。为什么下载测试数据会在路径中找不到正确的资源?
    • 它安装包含相关库的 tesseract 并将其添加到库路径 afaik。
    【解决方案4】:

    Tess4J 应该包含所需的库。但是,您需要先提取它们。

    这应该可以解决问题:

    File tmpFolder = LoadLibs.extractTessResources("win32-x86-64"); // replace platform
    System.setProperty("java.library.path", tmpFolder.getPath());
    

    您应该将extractTessResources(..) 的参数替换为您的平台。您可以通过查看 Tess4J jar 文件找到可能的选项。

    这样你就不需要在你的系统上安装 Tesseract。

    最近我写了一个blog post about Tess4J,我在其中使用了这种技术。如果您需要更多信息或正在运行的示例项目,也许它会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 2016-06-15
      • 1970-01-01
      相关资源
      最近更新 更多