0

我在我的应用程序中使用 Tesseract,所以我可以从图像中提取文本。这是我的代码,一切都很好

public class TestDriver {
    public static void main(String []args){
        String imagePath = "apps/Tess4J/eurotext.bmp";
        File imageFile = new File(imagePath);
        Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
        // Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping

        try {
            String result = instance.doOCR(imageFile);
            System.out.println(result);
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
        }
    }
}

但我意识到我的 .dll 是用于 32 位 jvm 的,而我们使用的是 64。这是我的错误:“线程“主”java.lang.UnsatisfiedLinkError 中的异常:无法加载库“libtesseract302”:找不到指定的模块。”

如果我应该使用 64 位,我应该如何处理这个问题?

4

2 回答 2

1

您不能使用来自 64 位 JVM 的 32 位本机库(反之亦然)。有两种可能的解决方案:

  • 使用 32 位 JVM(即使您有 64 位操作系统也可以使用)
  • 使用您需要使用的 64 位版本的本机库

注意:您不需要重新编译 Java 代码。Java 字节码独立于 JVM 和操作系统的“位数”。

于 2013-09-11T08:49:43.643 回答
0

从您的错误中,我得到的想法是 libtesseract302 没有可用的逻辑链接。以下是此错误的链接:

http://sourceforge.net/p/tess4j/discussion/1202294/thread/a3e57163

并切换到 32 位 JVM,

你在使用 Tess4J API 吗???或者使用“tesseract”命令执行它?

我有同样的问题要克服它,我从命令行执行了 tesseract,如下所示。

Runtime.getRuntime().exec("tesseract " + fileName + " " + textFileName);
于 2013-09-11T09:58:59.097 回答