"OCR running error" when using MODI 2003 with C#

Whit Waldo picture Whit Waldo · Jul 14, 2011 · Viewed 8.2k times · Source

I've been struggling to get MODI to work properly at all today. Here's the code I'm attempting to use (adapted from the VB given at the Wikipedia entry for 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;
}

When I execute this, I get an error on the OCR() line saying the following:

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

Now, I looked up that error code and found another stackoverflow question in which they found that they couldn't run the OCR on small images, but the one in question is 1700x2338, which should be plenty large enough for the cause.

Does anyone have any advice on where to go next with this?

Answer

Aaron McIver picture Aaron McIver · Dec 19, 2011

It appears that the MODI failures may be cumulative; however through varying investigation it looks as though it may be tied to the DPI. Modifying the PixelFormat, clearing the background, adjusting the raw image size, and adjusting the OCROrientImage and OCRStraightenImage flags had no effect.

What worked for me was modifying the DPI of the written Bitmap for both horizontal and vertical to 300. The default for a Bitmap is 96 and in working with a specific image that did work I noted the DPI was set at 300.