我想用MODI来OCR一个窗口的程序。它工作正常的我抢编程方式使用截图win32的互操作是这样的:.NET OCRing图像
该图像,然后保存到一个文件并运行通过MODI像这样:
private string GetTextFromImage(string fileName)
{
MODI.Document doc = new MODI.DocumentClass();
doc.Create(fileName);
doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
MODI.Image img = (MODI.Image)doc.Images[0];
MODI.Layout layout = img.Layout;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < layout.Words.Count; i++)
{
MODI.Word word = (MODI.Word)layout.Words[i];
sb.Append(word.Text);
sb.Append(" ");
}
if (sb.Length > 1)
sb.Length--;
return sb.ToString();
}
这部分工作正常,但是,我不想OCR整个屏幕截图,只是它的一部分。我尝试像这样以编程方式裁剪图像:
private string SaveToCroppedImage(Bitmap original)
{
Bitmap result = original.Clone(new Rectangle(0, 0, 250, 250), original.PixelFormat);
var fileName = "c:\\" + Guid.NewGuid().ToString() + ".bmp";
result.Save(fileName, original.RawFormat);
return fileName;
}
然后OCRing这个较小的图像,但是MODI会引发异常; 'OCR运行错误',错误代码是-959967087。
为什么MODI可以处理原始位图,而不是从它取得的较小版本?
任意完整的源代码? – Kiquenet 2012-10-04 14:11:45