c#中的BadImageFormatException

时间:2013-08-24 11:38:23

标签: c# tesseract

我已经从Here下载了tesseract。当我试图将dll文件添加到visual studio 2012时,它显示错误,它不是一个有效的程序集。任何人都可以建议我一些其他的ocr文件和样本编码。我尝试了很多网站,但我找到了很好的网站。然后我发现这个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);

但是视觉工作室抛出的错误是它无效的装配。任何人都可以帮助我... 编辑:错误是

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.

先谢谢

2 个答案:

答案 0 :(得分:3)

我见过这个错误的最常见原因是.NET应用程序是构建为X86而你包含的是x64程序集,反之亦然。

检查visual studio中的配置管理器(Build菜单)以及程序集所需的内容。

<强>更新

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

在这种情况下,将您的应用程序设置为x86。如果尚未提供此功能,请进入Configuration Manager(“生成”菜单),并将“平台”设置为x86。如果它不在菜单中,您可以通过在下拉列表中选择该选项来编辑现有条目或创建新条目。如果选择新的:在对话框中,选择新平台为x86并复制当前使用的设置。

答案 1 :(得分:1)

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

图片:

Photo

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