使用Tesseract 5.2.0时找不到leptonica-1.80.0.dll的解决方案咨询
我正在使用Tesseract 5.2.0开发C#控制台应用,代码如下:
System.Drawing.Bitmap img = new System.Drawing.Bitmap(convertedFile); //TesseractEngine engine = new TesseractEngine(convertedFile, "eng", EngineMode.Default); var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); path = Path.Combine(path, "tessdata"); path = path.Replace("file:\\", ""); using (var engine = new TesseractEngine(path, "eng", EngineMode.Default)) { engine.SetVariable("tessedit_char_whitelist", "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"); engine.SetVariable("tessedit_unrej_any_wd", true); using (var page = engine.Process(img, PageSegMode.Auto)) strTextData = page.GetText(); }
执行var engine = new TesseractEngine(path, "eng", EngineMode.Default)时抛出“Exception has been thrown by the target of an invocation.”异常,内部异常显示“Failed to find library "leptonica-1.80.0.dll" for platform x64”。我已安装VC_redist.x64,但下载的Tesseract 5.2.0附带的是leptonica-1.82.0.dll,与预期版本不符,请问该如何解决?
对齐绑定库与原生DLL版本
当前你用的Tesseract .NET绑定(如NuGet包)依赖Leptonica 1.80.0,但手里的是1.82.0,版本不匹配导致加载失败。二选一解决:- 下载对应Leptonica 1.80.0的x64版本DLL替换现有文件;
- 升级Tesseract .NET绑定到适配Leptonica 1.82.0的版本,保证绑定库和原生DLL版本完全一致。
确保DLL放置路径正确
将匹配版本的Leptonica DLL放到程序输出目录(比如bin/Debug/x64或bin/Release/x64),或者把DLL所在目录添加到系统环境变量PATH中,让程序运行时能找到该文件。注意必须用x64版本DLL,不能混用x86版本。设置项目目标平台为x64
在Visual Studio里右键项目→属性→生成,把目标平台设为x64,取消Any CPU选项,避免平台不兼容导致的DLL加载失败。手动指定DLL搜索路径(可选)
如果DLL不在默认搜索路径,可在初始化Tesseract引擎前设置环境变量添加DLL所在目录:// 替换为你的Leptonica DLL实际所在目录 string leptonicaPath = @"C:\path\to\leptonica-dll-folder"; Environment.SetEnvironmentVariable("PATH", $"{Environment.GetEnvironmentVariable("PATH")};{leptonicaPath}");
内容的提问来源于stack exchange,提问作者Ibrahim shaikh

