0

MODIを使用して、すでにメモリにあるビットマップでOCRを実行しようとしています。私が見つけたすべての例では、createメソッドを使用してディスクから画像を取得し、OCR用に準備しているため、これに対する解決策を見つけることができないようです。ただし、すでにメモリに画像があり、書き込みと読み取りを行っています。ディスクとの間でのやり取りに時間がかかりすぎます。

Bitmap bmp = ...
//Instantiate the MODI.Document object
MODI.Document md = new MODI.Document();
//The Create method grabs the picture from disk snd prepares for OCR.          
md.Create("C:\\bmp.gif"); //but I don't want to read from disk :(
//Do the OCR.
md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
//Get the first (and only image)
MODI.Image image = (MODI.Image)md.Images[0];
//Get the layout.
MODI.Layout layout = image.Layout;
4

4 に答える 4

4

できません。Createのバージョンは1つだけで、ファイルを取ります。一時ファイルを作成します。画像を保存します。一時ファイルを削除します。これを行うには、Path.GetTempFileName()を使用します。

string file = Path.GetTempFileName();
try {
    SaveImageToFile(image, file); // you decide how to best do this
    md.Create(file);
    // etc.
}
finally {
    File.Delete(file);
}
于 2010-11-02T19:33:23.900 に答える
0

Microsoft Officeのイメージング機能を使用してイメージをOCRする最も簡単なコード(MS-Office 2007以降が必要です。イメージングコンポーネントをインストールし、MODIを参照に追加する必要があります)。

private string OCR ( string fileToOCR)

{

MODI.Document md = new MODI.Document();

md.Create(fileToOCR);

md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);

MODI.Image img = (MODI.Image) md.Images[0];

MODI.Layout layout = img.Layout;

layout = img.Layout;

string result = layout.Text;

md.Close (false);


return result; 

}

関数の呼び出しは次のようになります。

private void button6_Click(object sender, EventArgs e)

{

MessageBox.Show ( OCR ("C:\\temp\\in.tif")); 

} 
于 2011-08-25T21:28:52.653 に答える
0

このMODI.Documentクラスはストリームから読み取ることができますか?以下のような

Image.FromStream(YourStream);

このようにして、メモリストリームを作成し、そこから読み取ることができます。

于 2010-11-02T19:43:38.453 に答える
0

ウィキペディアでMODI/OCR情報を確認できます

en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging

en.wikipedia.org/wiki/List_of_optic_character_recognition_software

于 2010-11-10T14:17:56.820 に答える