Cómo usar imágenes de System.Drawing para procesamiento de OCR en C#

Cómo leer objetos System.Drawing en C

This article was translated from English: Does it need improvement?
Translated
View the article in English

System.Drawing.Bitmap es una clase en el .NET Framework utilizada 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 el .NET Framework. Es la clase padre para varios tipos de imágenes, incluyendo System.Drawing.Bitmap.

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

como-encabezado:2(Inicio rápido: Leer texto de un System.Drawing.Bitmap)

En solo una declaración simple, crea un IronTesseract y aliméntalo con un System.Drawing.Bitmap envuelto por OcrImageInput para extraer todo el texto. Este ejemplo de inicio rápido muestra lo fácilmente que IronOCR convierte tu imagen en texto legible con una configuración mínima.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronOCR con el gestor de paquetes NuGet

    PM > Install-Package IronOcr

  2. Copie y ejecute este fragmento de código.

    var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrImageInput(new System.Drawing.Bitmap("image.png")));
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer


Ejemplo de lectura de System.Drawing.Bitmap

Primero, instanciar la clase IronTesseract para realizar OCR. Crear un System.Drawing.Bitmap a partir de uno de los varios métodos. En el ejemplo de código, he decidido usar una ruta de archivo.

A continuación, usa la declaración using para crear el objeto OcrImageInput, pasando la imagen del objeto System.Drawing.Bitmap a él. Finalmente, usar el método Read para realizar OCR.

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

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

// Read image file to Bitmap
Bitmap bitmap = new Bitmap("Potter.tiff");

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

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Read image file to Bitmap
Private bitmap As New Bitmap("Potter.tiff")

' Import System.Drawing.Bitmap
Private imageInput = New OcrImageInput(bitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

Ejemplo de lectura de System.Drawing.Image

Leer desde un 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;

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

// Open image file as Image
Image image = Image.FromFile("Potter.tiff");

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

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Open image file as Image
Private image As Image = Image.FromFile("Potter.tiff")

' Import System.Drawing.Image
Private imageInput = New OcrImageInput(image)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

Lea el ejemplo de IronSoftware.Drawing.AnyBitmap

De manera similar, después de crear u obtener un objeto AnyBitmap, puedes construir la clase OcrImageInput. El constructor se encargará de todos los pasos necesarios para importar los datos. El ejemplo de código a continuación demuestra esto.

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

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

// Open image file as AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

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

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Open image file as AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Import IronSoftware.Drawing.AnyBitmap
Private imageInput = New OcrImageInput(anyBitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
$vbLabelText   $csharpLabel

Especifique la región de escaneado

En la construcción de la clase OcrImageInput, puedes especificar el área a escanear. Esto te permite definir la región específica del documento de imagen para OCR. Dependiendo del documento de imagen, especificar la región de escaneo puede mejorar significativamente el rendimiento. En el ejemplo de código proporcionado, especifico que solo se debe extraer 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;

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

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)

' Add image
Private imageInput = New OcrImageInput("Potter.tiff", ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Output the result to console
Console.WriteLine(ocrResult.Text)
$vbLabelText   $csharpLabel

Resultado OCR

Leer región específica

Preguntas Frecuentes

¿Cómo puedo extraer texto de una imagen bitmap en C#?

Puedes usar IronOCR creando primero una instancia de la clase IronTesseract. Luego, crea un System.Drawing.Bitmap y pásalo a un objeto OcrImageInput. Finalmente, usa el método Read para extraer texto.

¿Qué pasos están involucrados en la lectura de objetos System.Drawing para tareas de OCR?

Para leer de objetos System.Drawing con IronOCR, descarga la biblioteca, obtén objetos System.Drawing, construye la clase OcrImageInput, y define una región de recorte si es necesario. Usa AnyBitmap para la compatibilidad multiplataforma en Linux y macOS.

¿Cómo se realiza OCR en una System.Drawing.Image?

Para realizar OCR en una System.Drawing.Image, crea un objeto OcrImageInput con la imagen y ejecuta el método Read en IronOCR.

¿Cuál es el beneficio de usar AnyBitmap en proyectos multiplataforma?

Iron Software.Drawing.AnyBitmap permite a los desarrolladores reemplazar System.Drawing.Common con una solución multiplataforma, habilitando funcionalidad OCR en Windows, macOS y Linux.

¿Cómo pueden las regiones de escaneo mejorar el rendimiento de OCR?

Al definir regiones de escaneo específicas en la clase OcrImageInput, puedes centrar los esfuerzos de OCR en áreas relevantes, lo que puede mejorar significativamente el rendimiento y la precisión.

¿Es IronOCR compatible con Linux y macOS?

Sí, IronOCR es compatible con Linux y macOS cuando se utiliza Iron Software.Drawing.AnyBitmap, ofreciendo una solución multiplataforma para tareas de OCR.

¿Cómo especificas una región para escanear en una imagen para OCR?

En IronOCR, especifica una región de escaneo estableciendo coordenadas y dimensiones en la clase OcrImageInput, lo que mejora el rendimiento de OCR al centrarse en secciones de la imagen relevantes.

¿Qué clases son esenciales para manejar imágenes en proyectos OCR .NET?

En proyectos .NET OCR, clases como System.Drawing.Bitmap, System.Drawing.Image, y Iron Software.Drawing.AnyBitmap son esenciales para el manejo de imágenes.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 5,167,857 | Version: 2025.11 recién lanzado