【问题标题】:Tesseract-OCR : Using Tess4j in spring mvc web application on linux environmentTesseract-OCR:在 linux 环境下的 spring mvc web 应用程序中使用 Tess4j
【发布时间】:2014-11-28 06:28:24
【问题描述】:

我正在尝试在我的 spring web 应用程序中使用 tesseract-ocr 在 linux 环境(linux mint - ubuntu 14.04)上使用 tomcat 7 服务器。但我收到一个错误:

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': libtesseract.so: cannot open shared object file: No such file or directory
com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:145)
com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:188)
com.sun.jna.Library$Handler.<init>(Library.java:123)
com.sun.jna.Native.loadLibrary(Native.java:255)
com.sun.jna.Native.loadLibrary(Native.java:241)
net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:45)
net.sourceforge.tess4j.Tesseract.init(Tesseract.java:283)
net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:219)
net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:168)
net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:152)

我正在使用以下代码:

Tesseract instance = Tesseract.getInstance();
String result = instance.doOCR(file);

我正在使用 maven 为 tess4j 提供依赖项:

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>1.3.0</version>
</dependency>

另外,之前我已经使用命令在我的 linux 机器上成功安装了 tesseract:

sudo apt-get install tesseract-ocr.

需要注意的重要一点是,我能够从命令行参数以及使用 Tess4j 的独立 Java 项目运行 tesseract。它在这两种情况下都给了我正确的输出。

但是在使用 tomcat 服务器运行时,出现上述错误。 我有位于/usr/liblibtesseract.so.3 文件。但是不知何故,tomcat 找不到 tesseract 的安装路径。

我无法理解的是,在将其作为独立应用程序运行时,它运行良好并且能够找到 tesseract 文件,但在从 Web 服务器运行时,却无法找到 tesseract 文件。

【问题讨论】:

    标签: linux spring maven tomcat tesseract


    【解决方案1】:

    您是否尝试过创建一个名为libtesseract.so 的链接;类似于以下内容?

    $ cd /usr/lib
    $ ln -sf libtesseract.so.3 libtesseract.so
    

    网络应用似乎正在寻找一个名为 libtesseract.so 的东西,但它找不到。

    还要检查并确保 /usr/lib 包含在 PATH 环境变量 ($ echo $PATH) 中。

    【讨论】:

    • 感谢 Manish,这个解决方案非常完美,而且效果很好。但是我想知道为什么当我使用tesseract作为独立的java应用程序时没有出现这个问题?
    • 我只能猜测独立应用程序和 Tomcat 使用不同的路径,而独立应用程序可以使用 libtesseract.so。 Tomcat 启动脚本确实修改了路径,这就是可能发生这种情况的原因。运行find /usr -name libtesseract.so 看看是否可以找到多个副本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多