USO DE IRONOCR

Cómo crear el reconocimiento de caracteres en C#

Actualizado 29 de abril, 2024
Compartir:

Introducción

La tecnología del reconocimiento óptico de caracteres (OCR) permite convertir texto impreso o manuscrito en formatos digitales legibles por máquina. Cuando se escanea un documento (como una factura o un recibo)La imagen escaneada se guarda en su ordenador como un archivo de imagen. Sin embargo, el texto dentro de la imagen escaneada no se puede editar, buscar o contar utilizando un editor de texto normal.

Sin embargo, el OCR puede procesar la imagen, extraer el texto y transformarlo en un formato de texto que puedan leer los ordenadores. Permite extraer texto de diversas fuentes, incluidos archivos PDF y otras imágenes escaneadas. Además, las capacidades de OCR van más allá de la simple extracción de texto e incluyen los principales formatos de imagen y documentos PDF, convirtiéndolos en datos OCR que permiten realizar búsquedas.

En C#, los desarrolladores pueden aprovechar la potencia del OCR a través de varias bibliotecas, y una de ellas es la potente biblioteca IronOCR de Iron Software. En este tutorial, exploraremos los fundamentos del OCR y demostraremos cómo utilizar IronOCR para realizar el Reconocimiento de Caracteres de forma eficiente en C#.

Cómo crear el reconocimiento de caracteres en C#

  1. Cree un nuevo proyecto C# y nómbrelo en Visual Studio.
  2. Instale el IronOCR NET e inclúyala en la carpeta del proyecto.
  3. Utilice el IronOCR Tesseract para leer texto a partir de imágenes.
  4. Utilice el IronOCR Funciones avanzadas para leer el texto de las imágenes
  5. Ajuste del rendimiento de IronOCR Leer Operación.

Primeros pasos con IronOCR

IronOCR una biblioteca de C# desarrollada por Iron Software es que proporciona funciones avanzadas de OCR. Ofrece una extracción de texto precisa a partir de imágenes, PDF y documentos escaneados. Antes de sumergirnos en el código, asegúrate de que tienes IronOCR instalado en tu proyecto.

Características principales de IronOCR de Iron Software

Motor OCR Tesseract mejorado

IronOCR eleva las capacidades del motor de OCR Tesseract, ampliamente utilizado, mejorando tanto la precisión como la velocidad. Es una solución robusta para extraer texto de diversas fuentes, como imágenes, PDF y otros formatos de documento.

Amplia cobertura lingüística

Gracias a su compatibilidad con más de 127 idiomas, IronOCR es capaz de gestionar requisitos multilingües, lo que lo convierte en la opción ideal para aplicaciones que exigen versatilidad lingüística.

Opciones de salida versátiles

El texto extraído puede enviarse cómodamente como texto sin formato o como datos estructurados para integrarlo sin problemas en otras cadenas de procesamiento. Además, IronOCR facilita la creación de PDF con capacidad de búsqueda directamente a partir de entradas de imágenes.

Adaptabilidad multiplataforma

Diseñado para ser compatible con C#, F# y VB.NET, IronOCR funciona sin problemas en varios entornos .NET, incluidas las versiones 8, 7, 6, Core, Standard y Framework.

Aprovechamiento de Tesseract 5

IronOCR aprovecha la potencia de Tesseract 5, finamente adaptada para un rendimiento óptimo dentro del ecosistema .NET.

Capacidad de OCR por zonas

Con IronOCR, los usuarios pueden definir con precisión zonas específicas dentro de los documentos, lo que permite un procesamiento OCR específico. Esta función mejora la precisión y la eficacia al concentrar la potencia de procesamiento donde más se necesita.

Herramientas de preprocesamiento de imágenes

La biblioteca ofrece un conjunto de funciones de preprocesamiento de imágenes, como la eliminación de distorsiones y la reducción del ruido. Estas herramientas garantizan resultados superiores incluso cuando se trabaja con imágenes de origen imperfectas, mejorando en última instancia la experiencia global del OCR.

Ahora, desarrollaremos una aplicación demo que utiliza IronOCR para leer Texto de imágenes.

Requisitos previos

  1. Visual Studio: Asegúrate de tener instalado Visual Studio o cualquier otro entorno de desarrollo C#.
  2. NuGet Package Manager: Asegúrese de que NuGet está presente para gestionar los paquetes en su proyecto.

Paso 1: Crear un nuevo proyecto C# en Visual Studio

Para empezar, vamos a crear una nueva aplicación de consola utilizando Visual Studio como se muestra a continuación.

Cómo crear Reconocimiento de Caracteres en C#: Figura 1 - Creación de un nuevo proyecto C# en Visual Studio

Indique a continuación el nombre y la ubicación del proyecto.

Cómo crear Reconocimiento de Caracteres en C#: Figura 2 - Proporcionar un nombre de proyecto y la ubicación en la que desea guardar

Seleccione la versión .NET necesaria para el proyecto.

Cómo crear Reconocimiento de Caracteres en C#: Figura 3 - Seleccionar la versión .NET adecuada para el proyecto

Haga clic en el botón Crear para crear el nuevo proyecto.

Paso 2: Instale la biblioteca IronOCR e intégrela en su proyecto.

IronOCR en el NuGet como se muestra a continuación. Utilice el comando proporcionado para instalar el paquete.

Cómo crear Reconocimiento de Caracteres en C#: Figura 4 - Página de descarga de IronOCR NuGet Package Manager

Mediante el gestor de paquetes NuGet de Visual Studio, busque IronOCR e instálelo en la carpeta del proyecto.

Cómo crear Reconocimiento de Caracteres en C#: Figura 5 - Buscando IronOCR a través de la pestaña browse usando NuGet Package Manager

Una vez instalada, la aplicación está lista para hacer uso de IronOCR para leer texto a partir de imágenes.

Paso 3: Utilizar el IronOCR Tesseract para leer texto de imágenes.

IronOCR destaca por ser la biblioteca .NET exclusiva que ofrece funciones de OCR de Tesseract 5. En la actualidad, ostenta la distinción de ser la biblioteca Tesseract 5 más sofisticada en todos los lenguajes de programación. IronOCR integra a la perfección Tesseract 5 en varios entornos .NET, incluidos Framework, Standard, Core, Xamarin y Mono, garantizando una compatibilidad completa en todo el ecosistema.

Considere el siguiente archivo de imagen como entrada. Veamos ahora cómo leer el texto de este archivo de imagen

Cómo crear Reconocimiento de Caracteres en C#: Figura 6 - Ejemplo de entrada

using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr
Public Class Program
	Public Shared Sub Main(ByVal args() As String)
		Dim ocrTesseract = New IronTesseract()
	Dim ocrInput As New OcrInput()
	ocrInput.LoadImage("sample1.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
	End Sub
End Class
VB   C#

Código Explicación

  1. Comenzamos creando IronTesseract con la configuración necesaria
  2. A continuación, cargamos la imagen de muestra mostrada en el objeto OcrInput
  3. Por último, leemos el texto de la imagen y lo mostramos en la consola

Salida

Cómo crear Reconocimiento de Caracteres en C#: Figura 7 - Texto extraído con IronOCR

Paso 4: Utilizar las funciones de IronOCR Advance para leer el texto de las imágenes

El objeto IronTesseract.Configuration ofrece a los usuarios avanzados acceso a la API subyacente de Tesseract dentro de C#/.NET, lo que permite una configuración detallada para el ajuste y la optimización. A continuación se indican algunas de las configuraciones avanzadas posibles

Selección de idioma

Puede especificar el idioma para el OCR mediante la propiedad Idioma. Por ejemplo, para establecer el idioma en inglés, utilice:

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
VB   C#

Modo de segmentación de páginas

El PageSegmentationMode determina cómo Tesseract segmenta la imagen de entrada. Las opciones incluyen AutoOsd, SingleBlock, SingleLine y más. Por ejemplo:

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
VB   C#

Variables Tesseract personalizadas

Puedes ajustar Tesseract mediante variables específicas. Por ejemplo, para desactivar la paralelización:

ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
VB   C#

Lista blanca y lista negra de personajes

Utilice WhiteListCharacters y BlackListCharacters para controlar qué caracteres reconoce Tesseract. Por ejemplo:

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
VB   C#

**Variables de configuración adicionales

Explora otras variables de configuración de Tesseract para personalizar el comportamiento según tus necesidades. Por ejemplo:

ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
//  ... (más variables)
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
//  ... (más variables)
ocr.Configuration.TesseractVariables ("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables ("textord_debug_tabfind") = 0
'  ... (más variables)
VB   C#

Intentemos ahora descodificar la misma imagen utilizando la configuración avanzada

using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() //  crear instancia
        {
            Language = OcrLanguage.EnglishBest, //  configurar el mejor idioma inglés
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, //  leer códigos de barras falso
                BlackListCharacters = "`ë
^", //  personajes de la lista negra
                WhiteListCharacters = null, //  sin lista blanca, permitir todo
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, //  no se utiliza ninguna variable personalizada
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); //  crear un objeto de entrada ocr desechable
        ocrInput.AddImage(@"sample1.png"); //  cargar la imagen de muestra 
        var ocrResult = ocrTesseract.Read(ocrInput); //  leer el texto de la imagen
        Console.WriteLine(ocrResult.Text);//  salida de la imagen
    }
}
using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() //  crear instancia
        {
            Language = OcrLanguage.EnglishBest, //  configurar el mejor idioma inglés
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, //  leer códigos de barras falso
                BlackListCharacters = "`ë
^", //  personajes de la lista negra
                WhiteListCharacters = null, //  sin lista blanca, permitir todo
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, //  no se utiliza ninguna variable personalizada
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); //  crear un objeto de entrada ocr desechable
        ocrInput.AddImage(@"sample1.png"); //  cargar la imagen de muestra 
        var ocrResult = ocrTesseract.Read(ocrInput); //  leer el texto de la imagen
        Console.WriteLine(ocrResult.Text);//  salida de la imagen
    }
}
Imports IronOcr
Public Class Program
	Public Shared Sub Main()
		Console.WriteLine("Decoding using advanced features")
		Dim ocrTesseract As New IronTesseract() With {
			.Language = OcrLanguage.EnglishBest,
			.Configuration = New TesseractConfiguration() With {
				.ReadBarCodes = False,
				.BlackListCharacters = "`ë ^",
				var ocrInput = New OcrInput(); ocrInput.AddImage("sample1.png"); var ocrResult = ocrTesseract.Read(ocrInput); Console.WriteLine(ocrResult.Text);
			}
		}
VB   C#

Código Explicación

  1. Configuración de IronOCR: Una instancia de IronTesseract (la clase principal IronOCR) y se asigna a la variable ocrTesseract.

     Los ajustes de configuración se aplican a ocrTesseract:
    1. Idioma: Especifica el idioma para el OCR (en este caso, inglés).
    2. Configuración: Un objeto TesseractConfiguration que permite una mayor personalización:
    3. LeerCódigosDeBarra: Desactiva la lectura de códigos de barras.
    4. ListaNegraCaracteres: Especifica los caracteres a incluir en la lista negra (caracteres para no reconocer).
    5. ListaBlancaCaracteres: No se ha especificado ninguna lista blanca, se permiten todos los caracteres.
    6. PageSegmentationMode: Establece el modo de segmentación de página en "AutoOsd".
    7. TesseractVariables: No se han utilizado variables personalizadas.
      1. Multihilo: Desactiva el multihilo.
      2. Entrada OcrInput y carga de imágenes: Un bloque using crea un objeto ocrInput desechable de tipo OcrInput. El archivo de imagen "sample1.png" se añade a ocrInput.
      3. Extracción de texto: Se llama al método Read en ocrTesseract, pasándole ocrInput.
      4. El resultado se almacena en la variable ocrResult.
      5. Salida: El texto extraído se imprime en la consola utilizando Console.WriteLine(ocrResult.Text).

Salida

Cómo crear Reconocimiento de Caracteres en C#: Figura 8 - Texto extraído con IronOCR

Paso 5: Ajuste del rendimiento de la operación de lectura IronOCR.

Al trabajar con IronOCR, tiene acceso a varios filtros de imagen que pueden ayudar a preprocesar las imágenes antes de realizar el OCR. Estos filtros optimizan la calidad de la imagen, mejoran la visibilidad y reducen el ruido o los artefactos. Ayudan a mejorar el rendimiento de la operación de OCR.

  1. **Gira:

     El filtro Girar permite rotar las imágenes un número determinado de grados en el sentido de las agujas del reloj. Para girar en sentido contrario a las agujas del reloj, utilice números negativos.
    1. Deskew:

      El filtro Deskew corrige la inclinación de la imagen, garantizando que el texto esté en posición vertical y ortogonal. Esto resulta especialmente útil para el OCR, ya que Tesseract funciona mejor con escaneados correctamente orientados.

  2. **Escala:

     El filtro Escala escala proporcionalmente las páginas de entrada del OCR.
  3. Binarizar:

     El filtro Binarizar convierte cada píxel en blanco o negro, sin término medio. Puede mejorar el rendimiento del OCR en casos de muy bajo contraste entre el texto y el fondo.
  4. **A escala de grises:

     El filtro ToGrayScale convierte cada píxel en un tono de escala de grises. Aunque es poco probable que mejore significativamente la precisión del OCR, puede aumentar la velocidad.
  5. **Invertido:

     El filtro Invertir invierte los colores: el blanco se convierte en negro y el negro en blanco.
  6. ReemplazarColor:

     El filtro ReemplazarColor reemplaza un color específico dentro de una imagen por otro color, considerando un determinado umbral.
  7. **Contraste:

     El filtro Contraste aumenta automáticamente el contraste. Suele mejorar la velocidad y precisión del OCR en escaneos con poco contraste.
  8. Dilatar y Erosionar:

     Estos filtros morfológicos avanzados manipulan los límites de los objetos en una imagen.
    1. Dilatar añade píxeles a los límites del objeto.

      1. Erode elimina los píxeles de los límites del objeto.
      2. **Afilar:

        El filtro Enfocar hace más nítidos los documentos OCR borrosos y aplana los canales alfa a blanco.

  9. DeNoise:

     El filtro DeNoise elimina el ruido digital. Utilízalo donde se espere ruido.
    1. **Ruido de fondo profundo:

      Este filtro de eliminación de ruido de fondo pesado sólo debe utilizarse cuando se conoce el ruido de fondo extremo del documento. Puede reducir la precisión del OCR en documentos limpios y consume mucha CPU.

    2. MejorarResolución:

      El filtro MejorarResolución mejora la resolución de las imágenes de baja calidad. No suele ser necesario debido a la gestión automática de la resolución.

    He aquí un ejemplo de cómo aplicar filtros utilizando IronOCR en C#:

var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Aplicaciones comunes del OCR

  1. Digitalización de documentos: El OCR se utiliza ampliamente para convertir documentos en papel escaneados, como facturas, recibos, formularios y contratos, en formatos digitales. Este proceso de digitalización agiliza el almacenamiento, la recuperación y la gestión de documentos, reduciendo el desorden de papel y mejorando la eficiencia.
  2. Extracción de datos: El OCR permite extraer texto y datos de documentos escaneados, imágenes y PDF. Estos datos extraídos pueden utilizarse para la introducción automatizada de datos, el análisis de contenidos, la indexación y la integración en bases de datos o sistemas empresariales.
  3. Reconocimiento de texto en imágenes: La tecnología OCR permite extraer texto de imágenes de texto impresas o manuscritas con fines de indexación y búsqueda. Esta capacidad se utiliza en diversas aplicaciones, como la realidad aumentada, los motores de búsqueda basados en imágenes y los servicios de traducción.
  4. Reconocimiento automático de matrículas (ALPR): Los sistemas ALPR utilizan OCR para leer números de matrícula a partir de imágenes o secuencias de vídeo captadas por cámaras instaladas en aplicaciones de vigilancia del tráfico, gestión de aparcamientos, cobro de peajes y aplicación de la ley.
  5. Soluciones de accesibilidad: El OCR desempeña un papel crucial en la creación de contenidos accesibles para personas con discapacidad visual. Al convertir el texto de imágenes o documentos en voz alta o braille, el OCR ayuda a que la información sea accesible para las personas con discapacidad.
  6. Verificación de identidad: La tecnología OCR se emplea en procesos de verificación de identidad, como el escaneado y procesamiento de documentos de identidad como pasaportes, permisos de conducir y documentos de identidad. Ayuda a verificar la autenticidad de los documentos y a extraer información pertinente para verificar la identidad.
  7. Banca y finanzas: El OCR se utiliza en banca y finanzas para tareas como la lectura de cheques, el procesamiento de facturas, la conversión de un documento PDF existente, la extracción de datos de estados financieros y la automatización de flujos de trabajo basados en documentos para mejorar la precisión y la eficacia de las operaciones financieras.
  8. Gestión de historias clínicas: En el sector sanitario, el OCR facilita la conversión de historias clínicas manuscritas o impresas a formatos electrónicos, lo que contribuye a la historia clínica electrónica. (HCE) gestión, análisis de datos y procesos de toma de decisiones.
  9. Traducción automatizada: La tecnología OCR se integra en herramientas de traducción y aplicaciones de aprendizaje de idiomas para convertir texto impreso de un idioma a otro. Los usuarios pueden capturar texto con sus dispositivos y el OCR les ayuda a traducirlo al idioma deseado en tiempo real.
    1. Conservación de documentos históricos y de archivo: El OCR se utiliza en la digitalización de materiales de archivo y documentos históricos, preservándolos en formatos digitales para su acceso, investigación y análisis en el futuro, al tiempo que garantiza la conservación de un valioso patrimonio cultural.

Requisitos de licencia

IronOCR. Indique los siguientes datos para recibir la clave en su dirección de correo electrónico

Cómo crear Reconocimiento de Caracteres en C#: Figura 9 - Página de licencia de prueba de IronPDF

Una vez obtenida la clave, ya sea mediante compra o prueba gratuita, siga los siguientes pasos para utilizarla

Establecer su clave de licencia: Establezca su clave de licencia IronOCR utilizando el código. Añade la siguiente línea al inicio de tu aplicación (antes de utilizar IronOCR):

IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
VB   C#

Clave de aplicación global (Web.Config o App.Config): Para aplicar una clave globalmente a través de su aplicación, utilice el archivo de configuración (Web.Config o App.Config). Añade la siguiente clave a tu appSettings:

<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<configuration> <!-- Other settings -- > <appSettings> <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/> </appSettings> </configuration>
VB   C#

Utilización de .NET Core appsettings.json: Para aplicaciones .NET Core, cree un archivo appsettings.json en el directorio raíz de su proyecto. Sustituya la clave "IronOcr.LicenseKey" por el valor de su licencia:

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
If True Then
	"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
End If
VB   C#

Comprobación de la clave de licencia: Verifique que su clave ha sido instalada correctamente probándola:

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
VB   C#

Conclusión

En conclusión, IronOCR a partir de 749 dólares. Aproveche el poder del OCR con IronOCR y desbloquee un mundo de posibilidades en sus proyectos de C#.

< ANTERIOR
Cómo realizar el OCR del registro de vehículos en C#
SIGUIENTE >
Cómo leer documentos de identidad mediante OCR en C#

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 2,012,139 Ver licencias >
123