USO DE IRONOCR

Cómo obtener texto de una factura en C# Tutorial

Kannaopat Udonpant
Kannapat Udonpant
23 de febrero, 2023
Actualizado 18 de diciembre, 2023
Compartir:

1. IronOCR, una API de reconocimiento óptico de caracteres

IronOCR es una biblioteca OCR que se puede utilizar para reconocer datos de texto de imágenes para la extracción de información, incluyendo OCR de recibos. Está basado en el motor Tesseract OCR, considerado uno de los motores OCR más precisos disponibles hasta la fecha para el reconocimiento de recibos. IronOCR puede utilizarse para leer texto con información clave de distintos tipos de documentos, como PNG, JPG, TIFF, formato JSON y PDF, y puede reconocer texto en varios idiomas.

Una de las características clave o servicios de IronOCR que lo hace particularmente útil para el OCR de recibos es su capacidad para detectar automáticamente la orientación del texto, incluso si la imagen ha sido rotada o distorsionada. Esto es esencial para el reconocimiento preciso del texto en la carga de recibos y para la extracción de datos, ya que los recibos suelen tener mucha información y pueden estar doblados o arrugados, lo que hace que el texto esté torcido.

2. Características de IronOCR

  • C# OCR utiliza Deep Learning para escanear y reconocer textos de imágenes, documentos escaneados y PDF.
  • .NET OCR es compatible con más de 127 idiomas de todo el mundo.
  • IronOCR puede leer texto de imágenes en muchos formatos de archivo, incluidos PNG, JPG, TIFF y PDF.
  • Texto, datos estructurados, salida JSON o PDFs con capacidad de búsqueda se pueden producir a partir de información extraída.
  • IronOCR es compatible con .NET 5, 6 y 7 (Core, Framework y Standard).
  • IronOCR divide la entrada en diferentes imágenes basadas en regiones de texto. Utiliza Visión por Computador para identificar áreas que contienen elementos de texto.

3. Creación de un nuevo proyecto en Visual Studio

Abra el software Visual Studio y vaya al menú Archivo. Seleccione "Nuevo Proyecto" y luego seleccione Aplicación de Consola.

Introduzca el nombre del proyecto y seleccione la ruta en el cuadro de texto correspondiente. A continuación, haga clic en el botón Crear. Seleccione el .NET Framework necesario, como en la captura de pantalla siguiente:

Cómo obtener texto de una factura en un tutorial de C#, Figura 1: Creando un nuevo proyecto en Visual Studio

Creación de un nuevo proyecto en Visual Studio

El proyecto de Visual Studio generará ahora la estructura de la aplicación de consola. Una vez terminado, abrirá el archivo Program.cs, en el que podrá escribir y ejecutar el código fuente.

Cómo obtener texto de una factura en C# Tutorial, Figura 2: El archivo program.cs generado desde el asistente de nuevo proyecto de Visual Studio

El archivo program.cs generado por el Asistente de Nuevo Proyecto de Visual Studio

4. Instalar IronOCR

En Visual Studio, puede integrar fácilmente IronOCR con su proyecto C#. IronOCR ofrece múltiples formas de integración con un proyecto C# .NET. A continuación, hablaremos de uno de ellos: la instalación de IronOCR mediante el gestor de paquetes NuGet.

En Visual Studio, ve a Herramientas > Administrador de paquetes NuGet > Consola del administrador de paquetes

Cómo Obtener Texto de una Factura en C# Tutorial, Figura 3: La Consola del Administrador de Paquetes NuGet de Visual Studio

La Consola del Administrador de Paquetes NuGet de Visual Studio

Tras hacer clic, aparecerá una nueva consola en la parte inferior de la ventana de Visual Studio. Escriba el siguiente comando en la consola y pulse Intro.

Install-Package IronOcr

IronOCR se instalará en sólo unos segundos.

5. Extracción de datos de recibos mediante IronOCR

IronOCR es una potente librería OCR que puede utilizarse para extraer y acceder a datos con detalles de recibos. Con IronOCR, puede tomar una foto de un recibo y convertirla en texto legible por máquina que puede ser fácilmente analizado y procesado sin comprometer la privacidad de los datos.

He aquí un ejemplo de cómo puede utilizar IronOCR para extraer texto de un recibo y mostrar cómo funciona el OCR de recibos.

using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    OcrResult ocrResult = ocrTesseract.Read(ocrInput);
    string RecognizedText = ocrResult.Text;

    Console.WriteLine(RecognizedText);
}
using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    OcrResult ocrResult = ocrTesseract.Read(ocrInput);
    string RecognizedText = ocrResult.Text;

    Console.WriteLine(RecognizedText);
}
Imports IronOcr
Imports System

Private ocrTesseract As New IronTesseract()

Using ocrInput As New OcrInput("ocr.png")
	Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
	Dim RecognizedText As String = ocrResult.Text

	Console.WriteLine(RecognizedText)
End Using
$vbLabelText   $csharpLabel

Consulte el tutorial de Lectura de Texto desde Imagen para obtener más detalles sobre cómo IronOCR lee texto de imágenes utilizando el lenguaje de programación C#.

A continuación se muestra el resultado del código presentado anteriormente:

- LOGO SHOP
- LOREM IPSUM
- DOLOR SITAMET CONSECTETUR
- ADIPISCING ELIT
- 1 LOREM IPSUM $3.20
- 2 ORNARE MALESUADA $9.50
- 3 PORTA FERMENTUM $5.90
- 4 SODALES ARCU $6.00
- 5 ELEIFEND $9.00
- 6 SEMNISIMASSA $0.50
- 7 DUIS FAMES DIS $7.60
- 8 FACILISIRISUS $810
- TOTAL AMOUNT $49.80
- CASH $50.00

6. Extracción de datos específicos de la imagen de recibo mediante IronOCR

Como potente librería OCR, IronOCR permite a los desarrolladores obtener información importante de los recibos escaneados, incluyendo el importe de los impuestos y el nombre del comerciante.

He aquí un ejemplo de cómo podría utilizar IronOCR para extraer el valor del importe total de una imagen de recibo:

using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.English;

// Code line to load the receipt image
using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    // Optimize the input image for OCR
    ocrInput.DeNoise(true);
    ocrInput.Contrast();
    ocrInput.EnhanceResolution();
    ocrInput.ToGrayScale();

    OcrResult ocrResult = ocrTesseract.Read(ocrInput);

    // Search for the total price in the OCR result
    var totalPrice = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
    Console.WriteLine("Total Price: " + totalPrice);
}
using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.English;

// Code line to load the receipt image
using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    // Optimize the input image for OCR
    ocrInput.DeNoise(true);
    ocrInput.Contrast();
    ocrInput.EnhanceResolution();
    ocrInput.ToGrayScale();

    OcrResult ocrResult = ocrTesseract.Read(ocrInput);

    // Search for the total price in the OCR result
    var totalPrice = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
    Console.WriteLine("Total Price: " + totalPrice);
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System

Private ocrTesseract As New IronTesseract()

ocrTesseract.Language = OcrLanguage.English

' Code line to load the receipt image
Using ocrInput As New OcrInput("ocr.png")
	' Optimize the input image for OCR
	ocrInput.DeNoise(True)
	ocrInput.Contrast()
	ocrInput.EnhanceResolution()
	ocrInput.ToGrayScale()

	Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)

	' Search for the total price in the OCR result
	Dim totalPrice = If(ocrResult.Text.Contains("Total:"), ocrResult.Text.Split("Total:")(1).Split(vbLf)(0), "")
	Console.WriteLine("Total Price: " & totalPrice)
End Using
$vbLabelText   $csharpLabel

Gracias a los múltiples ajustes proporcionados por la clase OcrInput, es posible optimizar la imagen de entrada para mejorar la precisión en el proceso de OCR.

Entrada

Cómo obtener texto de una factura en C# Tutorial, Figura 4: La imagen de entrada utilizada para demostrar la extracción de datos específicos de recibos

La imagen de entrada utilizada para demostrar la extracción de datos específicos de los recibos

Salida

- Total 16.5

7. Leer códigos de barras en recibos

IronOCR puede utilizarse para leer códigos de barras en recibos, así como texto. Para leer códigos de barras en recibos usando IronOCR, deberá utilizar la clase BarcodeReader en combinación con el método ReadBarCodes.

He aquí un ejemplo de cómo puede utilizar IronOCR para leer códigos de barras en una imagen de recibo.

using IronOcr;
using System;

var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using (var ocrInput = new OcrInput("b.png"))
{
    var ocrResult = ocrTesseract.Read(ocrInput);
    foreach (var barcode in ocrResult.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
using IronOcr;
using System;

var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using (var ocrInput = new OcrInput("b.png"))
{
    var ocrResult = ocrTesseract.Read(ocrInput);
    foreach (var barcode in ocrResult.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
Imports IronOcr
Imports System

Private ocrTesseract = New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
Using ocrInput As New OcrInput("b.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	For Each barcode In ocrResult.Barcodes
		Console.WriteLine(barcode.Value)
	Next barcode
End Using
$vbLabelText   $csharpLabel

Imagen de entrada

Cómo obtener texto de una factura en C# Tutorial, Figura 4: Entrada para lectura de código de barras

Entrada para leer el código de barras

Texto de salida

Cómo obtener texto de una factura en C# Tutorial, Figura 5: El resultado del procesamiento de la imagen del código de barras

El resultado del procesamiento de la imagen del código de barras

8. Conclusión

El artículo anterior explica el proceso de instalación y uso de IronOCR en un proyecto C# para extraer datos de recibos, con un fragmento de código de ejemplo.

Por favor, lea el tutorial sobre cómo leer texto de imágenes.

IronOCR es una parte de la Iron Suite, que incluye cinco bibliotecas .NET diferentes para manipular documentos e imágenes. Puedes comprar el Iron Suite completo por el precio de solo dos licencias de IronOCR.

Prueba IronOCR en tus aplicaciones de producción con una prueba gratuita.

Kannaopat Udonpant
Ingeniero de software
Antes de convertirse en ingeniero de software, Kannapat realizó un doctorado en Recursos Medioambientales en la Universidad de Hokkaido (Japón). Mientras cursaba su licenciatura, Kannapat también se convirtió en miembro del Laboratorio de Robótica Vehicular, que forma parte del Departamento de Ingeniería de Bioproducción. En 2022, aprovechó sus conocimientos de C# para unirse al equipo de ingeniería de Iron Software, donde se centra en IronPDF. Kannapat valora su trabajo porque aprende directamente del desarrollador que escribe la mayor parte del código utilizado en IronPDF. Además del aprendizaje entre iguales, Kannapat disfruta del aspecto social de trabajar en Iron Software. Cuando no está escribiendo código o documentación, Kannapat suele jugar con su PS5 o volver a ver The Last of Us.
< ANTERIOR
Cómo hacer OCR de matrículas en C# (Tutorial)
SIGUIENTE >
Cómo obtener texto de una captura de pantalla con OCR en C#