我试图在Linqpad中使用Linqpad OCR软件。我采取了以下步骤:
1)我使用
https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-ocr-setup-3.02.02.exe&
2)我在Linqpad中添加了一个通过nuget对Tesseract的引用,确切地说是以下包:一个用于tesseract-ocr的.Net包装器
3)我在PATH变量中添加了Tesseract二进制文件的路径,其中还包含两个本机dll库。
4)我安装了Visual x86 & x64运行时,如
https://github.com/charlesw/tesseract/wiki/Error-2
但是,当我试图在tesseract中使用Linqpad时,会出现以下错误:
DllNotFoundException:未能为平台x86找到库"liblept168.dll“
我认为这个问题与如何在Linqpad中使用native dll有关。
我怎样才能解决这个问题?
发布于 2020-12-19 23:29:10
LINQpad和Tesseract nuget包之间的不兼容性是由于InteropDotNet库在运行时加载本机程序集的方式造成的。
您可以将以下方法添加到添加了Tesseract nuget包的LINQpad查询中,并且应该允许InteropDotNet库找到它需要的本机程序集。
static void CopyTessLibraries(string tessVersion, string platform)
{
var destFolder = Path.Combine(Environment.CurrentDirectory,platform);
Directory.CreateDirectory(destFolder);
var tessNugetFolder = new LINQPad.ObjectModel.NuGetReference("Tesseract")
.GetPackageFolders()
.First(folderName => folderName.Contains($@"Tesseract\{tessVersion}"));
var platformFiles = Directory.GetFiles(Path.Combine(tessNugetFolder,platform));
foreach (var file in platformFiles)
{
var fileInfo = new FileInfo(file);
var destFile = Path.Combine(destFolder, fileInfo.Name);
if (!File.Exists(destFile))
{
fileInfo.CopyTo(destFile, true);
}
}
}

https://stackoverflow.com/questions/34130764
复制相似问题