Java tesseract/tesjeract在实例化时使应用程序崩溃
我想在Java中使用tesseract,因为我需要为我的ImageJ插件执行OCR。因此,我使用Java包装器“tesjeract”。然而,当我实例化Java tesseract/tesjeract在实例化时使应用程序崩溃,java,dll,crash,ocr,tesseract,Java,Dll,Crash,Ocr,Tesseract,我想在Java中使用tesseract,因为我需要为我的ImageJ插件执行OCR。因此,我使用Java包装器“tesjeract”。然而,当我实例化new Tesjeract(“eng”)ImageJ时,没有给出任何信息 加载库似乎是可行的,因为当我没有实例化new Tesjeract(“eng”)并运行同一个插件两次时,第二次收到未满足的链接错误:本机库C:\Windows\System32\tessdll.dll已加载到另一个类加载器中 有什么想法吗?我能做些什么来解决这个问题 如果相关的
new Tesjeract(“eng”)
ImageJ时,没有给出任何信息
加载库似乎是可行的,因为当我没有实例化new Tesjeract(“eng”)
并运行同一个插件两次时,第二次收到未满足的链接错误:本机库C:\Windows\System32\tessdll.dll已加载到另一个类加载器中
有什么想法吗?我能做些什么来解决这个问题
如果相关的话,我使用的是64位Windows 7,但已将ImageJ配置为使用32位JVM,因为tesseract仅作为32位dll可用。我正在静态块中加载DLL,它们都放在C:\Windows\System32文件夹中
static
{
System.loadLibrary("tessdll");
System.loadLibrary("tesjeract");
}
编辑:
如果发现有人在C++中遇到类似的问题,解决方法是语言文件丢失。我想这也是我的问题所在
这是目录的外观(已找到):
ImageJ配置为使用C:\ProgramFiles(x86)\Java\jre7\bin\javaw.exe
。因此,我将包含tessdata文件夹的DLL放在同一目录中,并从System32中删除了这些DLL。不过,应用程序还是崩溃了 *.traineddata是tess 3.x的语言数据。对于2.x,您将需要一个,例如。现在我的tessdata文件夹看起来与上面描述的完全一样,但仍然会崩溃。如果仍然不满意LinkError,请确保.dll文件位于程序正在查找的路径中。如果您仍然有问题,您可能想看看Tess4J,它是另一个Java包装器,可能更易于使用。dll位置很好。当我执行插件并且只加载库而不执行任何代码时,我没有收到任何错误<代码>新Tesjeract(“eng”)
导致问题。但是现在有了正确的语言文件,我看不出还有什么问题。
project.exe
tessdll.dll
tessdata ----- eng.DangAmbigs
|- eng.freq-dawg
|- eng.inttemp
|- eng.normproto
|- eng.pffmtable
|- eng.unicharset
|- eng.user-words
- eng.word-dawg