Officeを利用したOCR読み
- 題名: Officeを利用したOCR読み
- 著者: hiro
- 日時: 2014/01/07 16:16:38
- ID: 32037
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Officeを利用したOCR読み
- 著者: 魔界の仮面弁士
- 日時: 2014/01/07 17:33:01
- ID: 32038
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Officeを利用したOCR読み
- 著者: hiro
- 日時: 2014/01/08 9:56:14
- ID: 32042
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.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);
}
}
}
画像サイズは、数メガ程度でも動作に問題ないでしょうか?