Tôi đang cố gắng sử dụng MODI để OCR một chương trình của cửa sổ. Nó hoạt động tốt cho ảnh chụp màn hình tôi lấy lập trình sử dụng win32 interop như thế này:.NET OCRing một Hình ảnh
Hình ảnh này sau đó được lưu vào một tập tin và chạy qua MODI như thế này:
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();
}
phần này hoạt động tốt, tuy nhiên, Tôi không muốn OCR toàn bộ ảnh chụp màn hình, chỉ là một phần của nó. Tôi thử cắt xén hình ảnh theo chương trình như sau:
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;
}
và sau đó OCRing hình ảnh nhỏ hơn này, tuy nhiên MODI ném ngoại lệ; 'Lỗi chạy OCR', mã lỗi là -959967087.
Tại sao MODI có thể xử lý bitmap gốc chứ không phải phiên bản nhỏ hơn được lấy từ nó?
mọi mã nguồn đầy đủ? – Kiquenet