Cómo leer desde objetos System.Drawing

por Chaknith Bin

System.Drawing.Bitmap es una clase de .NET Framework que se utiliza para trabajar con imágenes de mapa de bits. Proporciona métodos y propiedades para crear, manipular y mostrar imágenes de mapa de bits.

System.Drawing.Image es una clase base para todos los objetos de imagen GDI+ en .NET Framework. Es la clase padre para varios tipos de imagen, incluyendo System.Drawing.Bitmap.

IronSoftware.Drawing.AnyBitmap es una clase de mapa de bits en IronDrawinguna biblioteca de código abierto desarrollada originalmente por Iron Software. Ayuda a los ingenieros de software de C# a sustituir System.Drawing.Common en proyectos .NET en plataformas Windows, macOS y Linux.


Biblioteca NuGet C# para OCR

Instalar con NuGet

Install-Package IronOcr
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Leer System.Drawing.Bitmap Ejemplo

En primer lugar, instancie la clase IronTesseract para realizar el OCR. Crea un System.Drawing.Bitmap desde uno de los varios métodos. En el ejemplo de código, he decidido utilizar una ruta de archivo.

A continuación, utiliza la sentencia 'using' para crear el objeto OcrImageInput, pasándole la imagen del objeto System.Drawing.Bitmap. Por último, utilice el método Read para realizar el OCR.

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-bitmap.cs
using IronOcr;
using System.Drawing;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Leer archivo de imagen a Bitmap
Bitmap bitmap = new Bitmap("Potter.tiff");

//  Importar System.Drawing.Bitmap
using var imageInput = new OcrImageInput(bitmap);
//  Realizar OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports System.Drawing

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Leer archivo de imagen a Bitmap
Private bitmap As New Bitmap("Potter.tiff")

'  Importar System.Drawing.Bitmap
Private imageInput = New OcrImageInput(bitmap)
'  Realizar OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
VB   C#

Leer System.Drawing.Image Ejemplo

Leer desde una System.Drawing.Image es tan simple como crear el objeto OcrImageInput con la Imagen y luego realizar el proceso estándar de OCR utilizando el método Read.

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-image.cs
using IronOcr;
using Image = System.Drawing.Image;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Abrir archivo de imagen como Imagen
Image image = Image.FromFile("Potter.tiff");

//  Importar System.Drawing.Image
using var imageInput = new OcrImageInput(image);
//  Realizar OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports Image = System.Drawing.Image

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Abrir archivo de imagen como Imagen
Private image As Image = Image.FromFile("Potter.tiff")

'  Importar System.Drawing.Image
Private imageInput = New OcrImageInput(image)
'  Realizar OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
VB   C#

Leer IronSoftware.Drawing.AnyBitmap Ejemplo

Del mismo modo, después de crear u obtener un objeto AnyBitmap, puede construir la clase OcrImageInput. El constructor se encargará de todos los pasos necesarios para importar los datos. El siguiente ejemplo de código lo demuestra.

:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-anybitmap.cs
using IronOcr;
using IronSoftware.Drawing;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Abrir archivo de imagen como AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

//  Importar IronSoftware.Drawing.AnyBitmap
using var imageInput = new OcrImageInput(anyBitmap);
//  Realizar OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports IronSoftware.Drawing

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Abrir archivo de imagen como AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

'  Importar IronSoftware.Drawing.AnyBitmap
Private imageInput = New OcrImageInput(anyBitmap)
'  Realizar OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
VB   C#

Especificar región de exploración

En la construcción de la clase OcrImageInput, puede especificar el área a escanear. Permite definir la región específica del documento de imagen para el OCR. Dependiendo del documento de imagen, la especificación de la región de escaneado puede mejorar significativamente el rendimiento. En el ejemplo de código proporcionado, especifico que sólo deben extraerse el número de capítulo y el título.

:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

//  Instanciar IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

//  Especifique la región de cultivo
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

//  Añadir imagen
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
//  Realizar OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

//  Envía el resultado a la consola
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

'  Instanciar IronTesseract
Private ocrTesseract As New IronTesseract()

'  Especifique la región de cultivo
Private scanRegion As New Rectangle(800, 200, 900, 400)

'  Añadir imagen
Private imageInput = New OcrImageInput("Potter.tiff", ContentArea:= scanRegion)
'  Realizar OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

'  Envía el resultado a la consola
Console.WriteLine(ocrResult.Text)
VB   C#

Resultado OCR

Leer región específica

Chaknith Bin

Ingeniero de software

Chaknith es el Sherlock Holmes de los desarrolladores. La primera vez que se le ocurrió que podría tener futuro en la ingeniería de software fue cuando hacía retos de código por diversión. Su trabajo se centra en IronXL e IronBarcode, pero se enorgullece de ayudar a los clientes con todos los productos. Chaknith aprovecha sus conocimientos, adquiridos hablando directamente con los clientes, para ayudar a mejorar los propios productos. Sus comentarios anecdóticos van más allá de los tickets de Jira y apoyan el desarrollo de productos, la documentación y el marketing, para mejorar la experiencia general del cliente.Cuando no está en la oficina, se le puede encontrar aprendiendo sobre aprendizaje automático, codificación y senderismo.