无法在C#中加载DLL'tesseract.dll'

时间:2016-01-25 11:32:33

标签: c# dll ocr tesseract

我正在尝试按照这些步骤使用此OCR http://tesseract.patagames.com/help/html/baa0aa10-7805-4ae6-b6e9-9df777c4678c.htm

我遇到了一个未处理的异常

  

Patagames.Ocr.dll中发生未处理的“System.Exception”类型异常

     

其他信息:无法加载DLL'tesseract.dll':找不到指定的模块。请确保将其复制到应用程序文件夹。或者,您可以使用TessBaseAPICreate方法中的specificPath参数指定tesseract.dll文件的完整路径

所以我按照一些说明来指定完整路径,但它仍然无效。

OcrApi.PathToEngine = @"d:\MyApp\tesseract.dll";
using (var api = OcrApi.Create())
{
    api.Init();
}

还有其他方法可以使这项工作吗?

2 个答案:

答案 0 :(得分:1)

来自doc:

在某些情况下,库初始化程序无法找到要加载的tesseract.dll库。这种情况的典型示例是Web应用程序。与传统应用程序不同,Web应用程序在IIS工作目录中运行。因此,标准LoadLibrary函数在加载过程中无法找到dll。

在这种情况下,您必须通过此属性显式指定tesseract.dll文件的完整路径。

初始化算法如下:

  • 尝试从通过PathToEngine属性接收的路径加载dll。
  • 尝试从x64或x86文件夹加载dll。基于进程编译模式和操作系统自动检测所需文件夹。
  • 尝试从调用初始化的进程的工作目录中加载dll。
  • 尝试从放置了调用初始化的程序集的同一目录中加载dll。 否则,初始化错误。

http://tesseract.patagames.com/help/html/P_Patagames_Ocr_OcrApi_PathToEngine.htm

答案 1 :(得分:0)

使用这种方法对我有用:

OcrApi.PathToEngine = @"d:\MyApp\tesseract.dll"; 

但主要问题是在构建copy之前,将此文件夹(tessdata, x64, x86 files)放入您的项目根目录(右键单击根项目>使用窗口浏览器打开文件夹),并确保已添加{{1在您的项目中引用,然后转到此处Patagames.Ocr\bin\Debug\,您就完成了。

运行项目并查看Magic:)