DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Officeを利用したOCR読み

環境/言語:[Windows 7/Vista MS2010 C# Winアプリ]
分類:[.NET]

お世話になります。


http://tmp.junkbox.info/e48.htmlを参考にして「Microsoft Office Document Imaging 12.0 Type Library」を利用した文字認識を試しています。
(このページの説明では、Ver.11でしたが、手持ちのものはVer.12しかありません)

ところが、
doc.OCR(MODI.MiLANGUAGES.miLANG_JAPANESE, false, false);で下記のようなエラーが出てこれ以上進みません。

エラーは、「Object hasn't been initialized and can't be used yet」


その前のdoc.Create(txt + "\\00021023.TIF");では、イメージカウントは、1になっています。
doc.Images.count = 1
画像は、tiffに変換したものを読ませています。

その関数部分
public void OcrAnalyze(string filename)
//static void Main(string[] args)
{
//if (args.Length != 1)
//{
// Console.WriteLine("OfficeOCRTest [画像ファイル名]");
// return;
//}

//string filename = args[0];

try
{
// Bitmap bmp = new Bitmap(filename);
// Bitmap bm = new Bitmap(bmp, bmp.Width, bmp.Height);
// string[] mei = filename.Split('.');
// string file = mei[0] + '.' + "tif";
// bm.Save(file, ImageFormat.Tiff);


MODI.Document doc = new MODI.Document();
//doc.Create(file/*filename*/);
int pos = mei[0].LastIndexOf('\\');
string txt = mei[0].Substring(0, pos); // <-この数行は、サンプルの
doc.Create(txt + "\\00021023.TIF"); // tiff画像を無理やりあてているだけ


// 読み取り言語を指定してOCR処理。
// 英数字のみとわかっている場合には、
// miLANG_ENGLISH を指定したほうが精度が高い
doc.OCR(MODI.MiLANGUAGES.miLANG_JAPANESE, false, false); // ここでエラー

// 複数ページを持つ画像フォーマットに対応
for (int i = 0; i < doc.Images.Count; i++)
{
MODI.Image img = (MODI.Image)doc.Images[i];
MODI.Layout layout = img.Layout;

Console.WriteLine("* 1ページ分のデータ *");
Console.WriteLine(layout.Text);
Console.WriteLine();

// 同じデータを単語ごとに分割して出力
StringBuilder str = new StringBuilder();
for (int j = 0; j < layout.Words.Count; j++)
{
MODI.Word word = (MODI.Word)layout.Words[j];
str.Append("[" + word.Text + "]");
}
Console.WriteLine("* 単語に分割して出力 *");
Console.WriteLine(str.ToString());
Console.WriteLine();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}

画像サイズは、数メガ程度でも動作に問題ないでしょうか?
■No32037に返信(hiroさんの記事)
> (このページの説明では、Ver.11でしたが、手持ちのものはVer.12しかありません)
ver12 は Office 2007 に相当します。
なお、MODI は ver14 (Office 2010) 以降には付属していません。


> エラーは、「Object hasn't been initialized and can't be used yet」

No31783 にも同様の話がありましたね。

海外サイト等でも、明確な答えは見つかっていないようで、
Professional Support のお世話になるべきという意見さえありました。
https://go4answers.webhost4life.com/Example/modi-not-working-windows-2003-server-176440.aspx
http://bbs.csdn.net/topics/350258003

中には、MODI の再インストールで直ったという報告もあるようですが、
原因等についてはわかりません。
http://social.msdn.microsoft.com/Forums/vstudio/en-US/820c28c2-354e-43f7-af7e-b36092599ff1/
お世話になります。

そうなんですね。これに関しては、これ以上の回答が望めなさそうですね。

時折調べてみることにします。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板