将MODI 2003与C#一起使用时出现“OCR运行错误”

时间:2011-07-14 20:49:51

标签: c# bitmap ocr modi

我一直在努力让MODI在今天正常工作。这是我试图使用的代码(改编自维基百科条目MODI中给出的VB。

private void button1_Click( object sender, EventArgs e )
{
    string inputFile = @"C:\testImage.bmp";
    textBox1.Text = GetTextFromImage( inputFile );
}

private string GetTextFromImage( string fileName )
{
    string output = "";
    var doc1 = new MODI.Document();
    doc1.Create( fileName );
    doc1.OCR( MiLANGUAGES.miLANG_ENGLISH, false, false );

    for ( int i = 0; i < doc1.Images.Count; i++ )
    {
        output += doc1.Images[i].Layout.Text;
    }

    doc1.Close();
    return output;
}

当我执行此操作时,我在OCR()行上出现错误,说明如下:

System.Runtime.InteropServices.COMException was unhandledMessage=OCR running error Source="" ErrorCode=-959967087

现在,我查找了该错误代码,发现了另一个stackoverflow question,他们发现他们无法在小图片上运行OCR,但有问题的是1700 x {{ 1}},这应该足够大,可以用于原因。

有没有人对此有何建议?

4 个答案:

答案 0 :(得分:4)

似乎MODI失败可能是累积的;然而,通过不同的调查,它看起来好像可能与DPI有关。修改PixelFormat,清除背景,调整原始图片大小以及调整OCROrientImageOCRStraightenImage标记均无效。

对我来说有用的是将水平和垂直的书面Bitmap的DPI修改为300. Bitmap的默认值为96,并且在使用我注意到的特定图像时DPI设定为300。

答案 1 :(得分:0)

我有类似的问题,当MODI无法对位图进行OCR时,似乎会生成非常无用的错误消息。 我想出的解决方案是:

1 - 以这两种格式之一创建位图 System.Drawing.Imaging.PixelFormat.Format24bppRgb 要么 System.Drawing.Imaging.PixelFormat.Format16bppRgb555

2 - 将位图的背景清除为白色,然后将文本“图片”复制到其中间,然后执行MODI.Document.Create(......

答案 2 :(得分:0)

它不是代码问题。只需更新office 2003 Service Pack 3.这是链接 https://www.microsoft.com/en-us/download/details.aspx?id=8

它会正常工作....

答案 3 :(得分:-2)

将您的代码更改为:

doc1.OCR;

让引擎决定自己的语言。