OCR con C#
Hace pocos días tuve que implementar una solución OCR para uno de mis clientes, al principio pensé en sugerir alguna solución de terceros, pero recordé que Office 2007 trae una herramienta de Imaging (OCR) de andar por casa
.
La verdad es que es muy sencillito, lo primero que hay que hacer es instalar el complemente de Office 2007, no es necesario ni siquiera instalar Office 2007 al completo, con sólo el complemento ya vale tal y como se ve en la siguiente figura:
Una vez instalado el complemento de Office 2007, sólo hay que referenciarlo desde Visual Studio (en mi caso 2010
) y con cuatro líneas de código ya lo tenemos, os paso el código y un pantallazo de los resultados obtenidos…
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();
panelImage.AllowDrop = true;
panelImage.BackgroundImageLayout = ImageLayout.Zoom;
}
private void Form1_Load(object sender, EventArgs e)
{
loadocr("images/capture.jpg");
}
private void loadocr(string filename)
{
panelImage.BackgroundImage = Image.FromFile(filename);
try
{
MODI.Document doc = new MODI.Document();
doc.Create(filename);
doc.OCR(MODI.MiLANGUAGES.miLANG_SPANISH, false, false);
foreach (MODI.Image img in doc.Images)
{
MODI.Layout layout = img.Layout;
textBoxResult.Text = layout.Text;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
private void panelImage_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void panelImage_DragDrop(object sender, DragEventArgs e)
{
String[] items = (String[])e.Data.GetData(DataFormats.FileDrop, false);
loadocr(items[0]);
}
}
}
Y el resultado que obtenemos…

ITAP Advisor en Microsoft Barcelona.

Jaume de Castellví i Hijosa
13 Abr, 2010
Es decir que una de las features más divertidas de OneNote, la podemos trasladar a nuestras aplicaciones… muy cooooool!!!
pequeño
19 May, 2010
Bueno gracias por el material pero tengo unas consultas: 1.- La propieda allow drop debe estar activada cierto? 2.- el panel es un picture box o un panel?
3.- Debo arrastrar la imagen al panel?
Alberto
28 May, 2010
Es sólo un ejemplo, puedes arrastrar o no, da igual…
Amy
5 Jun, 2010
Es decir que una de las features más divertidas de OneNote, la podemos trasladar a nuestras aplicaciones… muy cooooool!!!
Amy
6 Jun, 2010
Bueno gracias por el material pero tengo unas consultas: 1.- La propieda allow drop debe estar activada cierto? 2.- el panel es un picture box o un panel?
3.- Debo arrastrar la imagen al panel?