【问题标题】:Unable to load DLL 'tesseract.dll' in C#无法在 C# 中加载 DLL 'tesseract.dll'
【发布时间】:2016-01-25 11:32:32
【问题描述】:

我正在尝试按照这些步骤使用此 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();
}

有没有其他方法可以做到这一点?

【问题讨论】:

  • 能否请您发布 exact 错误消息。
  • Patagames.Ocr.dll 中发生“System.Exception”类型的未处理异常附加信息:无法加载 DLL“tesseract.dll”:找不到指定的模块。请确保将其复制到应用程序文件夹。或者,您可以使用 TessBaseAPICreate 方法中的 specificPath 参数指定 tesseract.dll 文件的完整路径
  • 您的应用程序是 32 位、64 位还是 AnyCPU?你确定你匹配了正确的 DLL 吗?
  • 很明显 - 路径 d:\MyApp\tesseract.dll 无效。将 tesseract.dll 复制到 bin 文件夹并将 OcrApi.PathToEngine 更改为 = @"tesseract.dll";
  • 是的,我的电脑是 64 位的,我确定我使用的是 64 位 DLL

标签: c# dll ocr tesseract


【解决方案1】:

来自文档:

在某些情况下,库初始化程序找不到要加载的 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

【讨论】:

    【解决方案2】:

    通过使用这种方法,它对我有用:

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

    但主要问题是在构建 copy 这个文件夹 (tessdata, x64, x86 files) 到您的项目根目录之前(右键单击根项目> 使用窗口资源管理器打开文件夹)并确保您在项目中添加了 Patagames.Ocr 引用然后转到这里的\bin\Debug\paste,你就完成了。

    运行项目,看看魔法:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多