我想在Java中使用tesseract,因为我需要为我的ImageJ插件执行OCR。因此我使用Java包装器“tesjeract”。但是,当我在没有提供任何信息的情况下实例化new Tesjeract("eng")
ImageJ崩溃时。
加载库似乎有效,因为当我没有实例化new Tesjeract("eng")
并运行相同的插件两次时,第二次收到UnsatisfiedLinkError: Native library C:\Windows\System32\tessdll.dll already loaded in another classloader
。
任何想法,我能做些什么来解决问题?
如果它是相关的,我使用的是Windows 7 64位,但已将ImageJ配置为使用32位JVM,因为tesseract仅作为32位dll提供。我在一个静态块中加载dll,它们都放在C:\ Windows \ System32文件夹中。
static
{
System.loadLibrary("tessdll");
System.loadLibrary("tesjeract");
}
编辑:
如果发现有人在c ++中遇到类似的问题,解决方案是languange文件丢失了。我想这也是我案例中的问题。
这就是目录的样子(找到here):
project.exe
tessdll.dll
tessdata ----- eng.DangAmbigs
|- eng.freq-dawg
|- eng.inttemp
|- eng.normproto
|- eng.pffmtable
|- eng.unicharset
|- eng.user-words
- eng.word-dawg
ImageJ配置为使用C:\Program Files(x86)\Java\jre7\bin\javaw.exe
。所以我将包括tessdata文件夹的dll放在同一目录中,并从System32中删除了dll。仍然,应用程序崩溃。