我一直在努力让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}},这应该足够大,可以用于原因。
有没有人对此有何建议?
答案 0 :(得分:4)
似乎MODI失败可能是累积的;然而,通过不同的调查,它看起来好像可能与DPI有关。修改PixelFormat
,清除背景,调整原始图片大小以及调整OCROrientImage
和OCRStraightenImage
标记均无效。
对我来说有用的是将水平和垂直的书面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;
让引擎决定自己的语言。