我在应用程序中使用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位,我应该如何处理这个问题?
答案 0 :(得分:1)
您不能使用64位JVM中的32位本机库(反之亦然)。有两种可能的解决方案:
注意:您无需重新编译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);