Грешка при изпълнение на OCR при използване на MODI 2003 с C#

Днес се борих изобщо да накарам MODI да работи правилно. Ето кода, който се опитвам да използвам (адаптиран от VB, даден в статията в Уикипедия за 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 на малки изображения, но въпросното е 1700x2338, което трябва да е достатъчно голямо за каузата.

Някой има ли съвет къде да продължа с това?


person Whit Waldo    schedule 14.07.2011    source източник


Отговори (4)


Изглежда, че отказите на MODI може да са кумулативни; въпреки това чрез различно разследване изглежда, че може да е свързано с DPI. Модифицирането на PixelFormat, изчистването на фона, коригирането на размера на необработеното изображение и коригирането на флаговете OCROrientImage и OCRStraightenImage нямаше ефект.

Това, което проработи за мен, беше промяната на DPI на написаното Bitmap както за хоризонтално, така и за вертикално до 300. Стойността по подразбиране за Bitmap е 96 и при работа с конкретно изображение, което свърши работа, отбелязах, че DPI е зададено на 300.

person Aaron McIver    schedule 19.12.2011

Имах подобни проблеми и ужасно безполезното съобщение за грешка изглежда се генерира, когато MODI не може да разпознае растерното изображение. Решението, което измислих е:

1 - Създайте своето растерно изображение в някой от тези два формата System.Drawing.Imaging.PixelFormat.Format24bppRgb или System.Drawing.Imaging.PixelFormat.Format16bppRgb555

2 - Изчистете фона на растерното изображение до бяло и след това копирайте вашата текстова "картина" в средата му и след това направете MODI.Document.Create (......

person RichardB    schedule 20.07.2011

Не е проблем с кода. Просто актуализирайте Office 2003 Service Pack 3. Ето връзката https://www.microsoft.com/en-us/download/details.aspx?id=8

Ще работи добре....

person Aakarshan Maharjan    schedule 14.02.2017
comment
Вместо да публикувате връзки като отговор, добавете текст към обяснение как този отговор помага на OP при коригирането на текущия проблем. Благодаря - person ρяσѕρєя K; 14.02.2017

Променете кода си на този:

doc1.OCR;

И нека двигателят сам да реши своя език.

person Cylian    schedule 03.06.2012
comment
това причинява лоша езикова грешка, когато имате знаци с по-малък шрифт от 10.. - person Berker Yüceer; 11.06.2012