繁体   English   中英

Tesseract与64位jvm

[英]Tesseract with 64-bit jvm

我在应用程序中使用了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位,应该如何处理此问题?

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

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

注意:您不需要重新编译Java代码。 Java字节码与JVM和操作系统的“位”无关。

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

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

并切换到32位JVM,

您是否在使用Tess4J API? 还是使用“ tesseract”命令执行它?

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

Runtime.getRuntime().exec("tesseract " + fileName + " " + textFileName);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM