He3x weekend ini karena gak ada kerjaan maka buka2x blog dan tertarik ngoprek ketika membaca posting dari bapak calon orang kaya di sini. Maka saya langsung tertarik untuk ngoprek2x Office OCR dan memadukannya dengan Touchless SDK yang baru tadi malem diunduh. Jadi intinya saya ingin memadukan kedua buah SDK tersebut untuk membuat sebuah pemindai tulisan yang memanfaatkan webcam. Jadi kalo di contoh bapak Fuady input dari OCR adalah sebuah gambar maka sekarang input dari OCR tersebut adalah gambar yang ditanggap dari webcam. Jadi dalam posting ini saya hanya akan menambahkan bagaimana cara menggunakan .NEt untuk mengambil gambar dari WebCam.
Baiklah caranya cukup mudah, pertama-tama pastikan 2 buah SDK ini adalah di komputer anda :
1. Office OCR (ikuti langkah bapak fuady disini).
2. Touchless SDK (silahkan download disini)
Setelah 2 buah SDK tersebut terinstall di dalam komputer anda maka silahkan ikuti langkah-langkah berikut :
1. Buka Visual Studio 2008 dan buat sebuah aplikasi WPF.
2. Tambahkan 2 buah reference. Pertama adalah reference ke OCR di Microsoft Office Document Imaging 12.0 Type Library

3. Tambahkan ke dll kedua yang berfungsi untuk membaca gambar dari WebCam yaitu Touchless.dll yang dapat anda peroleh ketika telah mengekstrack Touchless SDK.
4. Buka berkas Windows.xaml anda dan tambahkan 2 buah kontrol image, 1 textbox dan 1 button atau silahkan ketikkan kode berikut pada windows.xaml anda :
<Window x:Class="CobainOCR.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="421" Width="624">
<Grid>
<Image Margin="30,53,0,119" Name="imageHolder" Stretch="Fill"
HorizontalAlignment="Left" Width="260" />
<Image HorizontalAlignment="Right" Margin="0,52,29,116"
Name="photoHolder" Stretch="Fill" Width="261" />
<Button Height="48" HorizontalAlignment="Left"
Margin="84,0,0,36" Name="button1"
VerticalAlignment="Bottom" Width="165"
Click="button1_Click">Button
</Button>
<TextBox Height="90" Margin="0,0,22,8"
Name="textBox1" VerticalAlignment="Bottom"
HorizontalAlignment="Right" Width="286" />
</Grid>
</Window>
5. Buka windows.xaml.cs dan tambahkan kode berikut :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using TouchlessLib;
using System.Windows.Threading;
using System.Drawing;
using MODI;
using System.IO;
namespace CobainOCR
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
TouchlessMgr TM;
public Window1()
{
InitializeComponent();
TM = new TouchlessMgr();
TM.CurrentCamera = TM.Cameras[0];
var cm = TM.CurrentCamera.GetCurrentImage();
TM.CurrentCamera.OnImageCaptured += new EventHandler<CameraEventArgs>(CurrentCamera_OnImageCaptured);
}
void CurrentCamera_OnImageCaptured(object sender, CameraEventArgs e)
{
Dispatcher.Invoke(DispatcherPriority.Normal, new Action<Bitmap>(setImage), e.Image);
}
void setImage(Bitmap b)
{
imageHolder.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
b.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Bitmap capturedBitmap = TM.CurrentCamera.GetCurrentImage();
photoHolder.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
capturedBitmap.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
);
string fileLoc = Directory.GetCurrentDirectory() + "\\temp.bmp";
capturedBitmap.Save(fileLoc);
textBox1.Text = "";
Document md = new Document();
try
{
md.Create(fileLoc);
md.OCR(MiLANGUAGES.miLANG_ENGLISH, false, false);
MODI.Image image = (MODI.Image)md.Images[0];
MODI.Layout layout = image.Layout;
for (int i = 0; i < layout.Words.Count; i++)
{
MODI.Word word = (MODI.Word)layout.Words
;
textBox1.Text += (" " + word.Text);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
md.Close(false);
}
}
}
}
6. sebelum menjalankan aplikasi ini pastikan bahwa anda telah mengkopi file WebCamLib.dll (file ini didapat dari touchless SDK) ke directory tempat file exe ini akan berada, trik saya adalah dengan mengkopinya ke directory bin\debug dalam proyek anda
7. Tekan F5 dan silahkan coba-coba aplikasi ini
CATATAN : OCR dari office berdasarkan percobaan kurang baik dalam mencari tulisan, sebagai contoh gambar diatas pun OCR gagal menerjemahkannya. Mungkin OCR ini lebih diarahkan untuk tulisan yang lebih teratur seperti berkas fax, atau berkas gambar seperti yang dicontohkan oleh saudara Fuady.
PS : donlot projectnya disini
cheers.