具有64位jvm的Tesseract

时间:2013-09-11 08:45:53

标签: java tesseract

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

并切换到32位JVM,

您使用的是Tess4J API ???或者使用“tesseract”命令执行它?

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

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