【问题标题】:BadImageFormatException in c#C# 中的 BadImageFormatException
【发布时间】:2019-08-12 14:03:50
【问题描述】:

我已经从Here 下载了tesseract。当我尝试将 dll 文件添加到 Visual Studio 2012 时,它显示的错误是它不是一个有效的程序集。谁能建议我一些其他的 ocr dll 文件和示例编码。我尝试了很多网站,但我没有找到任何好的网站。然后我找到了这个dll 文件 tessrect 并使用了以下代码

string path = @"C:\pic\mytext.jpg";
Bitmap image = new Bitmap(path);
Tesseract ocr = new Tesseract();
ocr.SetVariable("tessedit_char_whitelist", "0123456789"); // If digit only
ocr.Init(@"C:\tessdata\", "eng", false); // To use correct tessdata
List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty);
foreach (tessnet2.Word word in result)
Console.WriteLine("{0} : {1}", word.Confidence, word.Text);

但 Visual Studio 抛出错误,表明它的程序集无效。任何人都可以在这方面帮助我... 编辑:错误是

Could not load file or assembly 'tessnet2_64, Version=2.0.4.0, Culture=neutral,      PublicKeyToken=1550524b5ba07e29' or one of its dependencies. An attempt was made to load a program with an incorrect format.

提前谢谢

【问题讨论】:

  • 请发布full错误信息 - 并说明错误是在编译时还是在执行时。最好解释一下你从哪里得到文件,因为看起来你要包含链接但没有......
  • @JonSkeet 这不是与 32 位和 64 位 dll 有关吗?
  • @DarthVader:可能是,但可能不是。我们现在真的没有足够的信息来告诉我们。

标签: c# tesseract


【解决方案1】:

我看到此错误的最常见原因是 .NET 应用程序是作为 X86 构建的,而您包含 x64 程序集,反之亦然。

检查 Visual Studio 中的配置管理器(构建菜单)以及程序集的期望。

更新

根据这个论坛帖子,您使用的 DLL 是 x86 程序集:https://code.google.com/p/tesseractdotnet/issues/detail?id=16(除非他们从那时起创建了 x64 版本)

在这种情况下,请将您的应用程序设置为 x86。如果您还没有此功能,请进入配置管理器(构建菜单),并将平台设置为x86。如果它不在菜单中,您可以编辑现有条目或通过在下拉菜单中选择该选项来创建新条目。如果您选择新建:在对话框中,将新平台选择为 x86,然后复制您当前使用的设置。

【讨论】:

  • 您是否也将活动平台更改为“x86”?
  • 是的,我也改了
【解决方案2】:

就我而言,当我在 64 位项目中引用 32 位项目 (DLL) 时发生此错误。 有必要更改目标平台的项目配置,最好使用 32 位:

图片:

当我检查了 32 位首选项时,问题就解决了。

【讨论】:

  • 请把你的答案更多地放在上下文中,更好地解释如何解决它等
猜你喜欢
  • 2013-04-01
  • 2011-09-11
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多