[C#]使用 Microsoft Office Document Imaging(MODI) 做光學字元辨識(OCR)
1. 簡介
Microsoft Office Document Imaging (MODI) 可以讓我們將影像文件,進行光學字元辨識 Optical Character Recognition(OCR),取得影像字元。
本文介紹如何撰寫程式使用 Microsoft Office Document Imaging(MODI) 做光學字元辨識(OCR)。
2. 方法
首先,我們要有 Office 2003 會更高的版本才有 Microsoft Office Document Imaging
確認版本後,再來就要安裝 Microsoft Office Document Imaging 元件,假如沒有安裝的話,可以放入 Office 安裝光碟,並且選擇安裝到電腦中。
接著,開啟 Visual Studio 2008,建立新的專案,新增專案後,將 Microsoft Office Document Imaging 11.0 Type Library 加入參考
在表單中加入 PictureBox 控制項
程式碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace OCR
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// PictureBox Click 事件
private void pictureBox1_Click(object sender, EventArgs e)
{
// 宣告 OpenFileDialog 控制項,並且實例化
OpenFileDialog OFD = new OpenFileDialog();
// 加入檔案過濾條件
OFD.Filter = "*.jpg;*.png;*.bmp|*.jpg;*.png;*.bmp";
if (OFD.ShowDialog() == DialogResult.OK)
{
// 讓 pictureBox1.Image 為選擇的圖檔
this.pictureBox1.Image = Image.FromFile(OFD.FileName);
// 顯示辨識結果
MessageBox.Show(this, Recognition(OFD.FileName), "OCR Result");
}
}
private string Recognition(string strFileName)
{
string strResult = string.Empty;
// 宣告 MODI.Document 物件 modiDocument,並且實例化
MODI.Document modiDocument = new MODI.Document();
// MODI.Document 創建
modiDocument.Create(strFileName);
// 宣告 MODI.Image 物件 modiImage,其內容值來自 MODI.Document 物件 modiDocument
MODI.Image modiImage = (MODI.Image)modiDocument.Images[0];
// OCR Method(Language, WithAutoRotation, WithStraightenImage)
modiImage.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);
// 組合 OCR 辨識後的 Word
foreach (MODI.Word WordItem in modiImage.Layout.Words)
{
strResult += WordItem.Text + " ";
}
modiDocument.Close(false);
// 回傳辨識結果
return strResult;
}
}
}
3. 結果
首先,準備要做辨識的圖檔,以下為測試圖檔
使用滑鼠點選 PictureBox
出現 OpenFileDialog 控制項,選擇要辨識的圖檔
顯示辨識結果,而在辨識上,發現他把 Dotblogs 的 l 辨識成 i