6

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

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问题,他们发现他们无法在小图像上运行 OCR,但有问题的是1700x 2338,它应该足够大。

有人对下一步该去哪里有任何建议吗?

4

4 回答 4

4

看来 MODI 失败可能是累积的;然而,通过不同的调查,它似乎与 DPI 相关。修改PixelFormat,清除背景,调整原始图像大小,调整OCROrientImageOCRStraightenImage标志没有效果。

对我有用的是将Bitmap水平和垂直写入的 DPI 修改为 300。a 的默认Bitmap值为 96,在使用有效的特定图像时,我注意到 DPI 设置为 300。

于 2011-12-19T22:20:12.057 回答
0

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

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

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

于 2011-07-20T15:36:34.210 回答
0

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

它会正常工作的......

于 2017-02-14T05:52:06.330 回答
-2

将您的代码更改为:

doc1.OCR;

并让引擎决定自己的语言。

于 2012-06-03T04:07:17.660 回答