Saltar al pie de página
USANDO IRONOCR

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

Cómo realizar el reconocimiento óptico de caracteres (OCR) de un recibo en Tesseract

  1. Instalar biblioteca C# OCR para recibos con Tesseract
  2. Explora las características de la biblioteca C# para realizar OCR en recibos
  3. Extrae datos de los recibos con Tesseract
  4. Busca en el texto extraído para encontrar datos específicos
  5. Lee los valores de códigos de barras en la imagen del recibo.

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

IronOCR es una biblioteca OCR que se puede utilizar para reconocer datos de texto en imágenes para la extracción de información, incluidos los OCR de recibos. Está construido sobre el motor Tesseract OCR, considerado uno de los motores OCR más precisos disponibles hasta la fecha para el reconocimiento de recibos. IronOCR puede leer información clave de diferentes tipos de documentos, incluidos los formatos PNG, JPG, TIFF, JSON y PDF, y puede reconocer texto en múltiples idiomas.

Una de las características clave 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 los recibos cargados y la extracción de datos, ya que los recibos a menudo contienen mucha información y pueden doblarse o arrugarse, lo que provoca que el texto se distorsione.

2. Características de IronOCR

  • OCR de C# utiliza Aprendizaje Profundo para escanear y reconocer textos de imágenes, documentos escaneados y PDF.
  • OCR .NET admite más de 125 idiomas globales.
  • IronOCR puede leer texto de imágenes en muchos formatos de archivo, incluidos PNG, JPG, TIFF y PDF.
  • Se pueden producir texto, datos estructurados, salida JSON o PDFs buscables a partir de la información extraída.
  • IronOCR admite versiones .NET 5, 6 y 7 (Core, Framework y Standard).
  • IronOCR divide la entrada en diferentes imágenes según las regiones de texto. Utiliza Visión por Computadora para identificar áreas que contienen elementos textuales.

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

Abre Visual Studio y ve al menú Archivo. Selecciona "Nuevo Proyecto" y luego elige Aplicación de Consola.

Introduce el nombre del proyecto y selecciona la ruta en el cuadro de texto correspondiente. Luego, haga clic en el botón Crear. Selecciona el .NET Framework requerido, como se muestra en la captura de pantalla a continuación:

Creación de un nuevo proyecto en Visual Studio

Ahora se generará la estructura del proyecto para la Aplicación de Consola. Una vez que termine, se abrirá el archivo Program.cs, en el que puedes escribir y ejecutar código fuente.

El archivo Program.cs generado desde el Asistente de Nuevo Proyecto de Visual Studio

4. Instalar IronOCR

En Visual Studio, puedes integrar fácilmente IronOCR en tu proyecto C#. IronOCR ofrece múltiples formas de integrarse con un proyecto .NET en C#. Aquí, discutiremos una de ellas: instalar IronOCR usando el Administrador de Paquetes NuGet.

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

La consola del Administrador de Paquetes NuGet de Visual Studio

Aparecerá una nueva consola en la parte inferior de la ventana de Visual Studio. Escribe el siguiente comando en la consola y presiona enter.

Install-Package IronOcr

IronOCR se instalará en solo unos segundos.

5. Extracción de datos de recibos mediante IronOCR

IronOCR es una poderosa biblioteca OCR que se puede utilizar para extraer y acceder a datos detallados de recibos. Con IronOCR, puedes convertir una imagen de un recibo en texto legible por máquina que se pueda analizar y procesar fácilmente sin comprometer la privacidad de los datos.

Aquí hay un ejemplo de cómo puedes usar IronOCR para extraer texto de un recibo:

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Read the OCR result
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);
            string recognizedText = ocrResult.Text;

            // Output the recognized text to the console
            Console.WriteLine(recognizedText);
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Read the OCR result
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);
            string recognizedText = ocrResult.Text;

            // Output the recognized text to the console
            Console.WriteLine(recognizedText);
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract As New IronTesseract()

		' Load the receipt image
		Using ocrInput As New OcrInput("ocr.png")
			' Read the OCR result
			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
			Dim recognizedText As String = ocrResult.Text

			' Output the recognized text to the console
			Console.WriteLine(recognizedText)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Consulta el tutorial de Lectura de Texto de Imagen para obtener más detalles sobre cómo IronOCR lee texto de imágenes usando C#.

La salida del código anterior:

- LOGO SHOP
- LOREM IPSUM
- DOLOR SIT AMET 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 SEM NISIMASSA $0.50
- 7 DUIS FAMES DIS $7.60
- 8 FACILISI RISUS $810
- TOTAL AMOUNT $49.80
- CASH $50.00

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

IronOCR permite a los desarrolladores recuperar información crucial de recibos escaneados, como cantidades de impuestos y nombres de comerciantes.

Aquí hay un ejemplo que demuestra cómo extraer el valor total de un recibo de imagen:

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Set the language for OCR
        ocrTesseract.Language = OcrLanguage.English;

        // 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 amount in the OCR result
            var totalAmount = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
            Console.WriteLine("Total Amount: " + totalAmount);
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Set the language for OCR
        ocrTesseract.Language = OcrLanguage.English;

        // 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 amount in the OCR result
            var totalAmount = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
            Console.WriteLine("Total Amount: " + totalAmount);
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract As New IronTesseract()

		' Set the language for OCR
		ocrTesseract.Language = OcrLanguage.English

		' 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 amount in the OCR result
			Dim totalAmount = If(ocrResult.Text.Contains("Total:"), ocrResult.Text.Split("Total:")(1).Split(vbLf)(0), "")
			Console.WriteLine("Total Amount: " & totalAmount)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

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

Entrada

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

Resultado

- Total 16.5

7. Leer códigos de barras en recibos

IronOCR se puede utilizar para leer códigos de barras en recibos además de texto. Para leer códigos de barras en recibos, necesitarás usar la clase BarcodeReader en combinación con el método ReadBarCodes.

Aquí hay un ejemplo de cómo leer códigos de barras:

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        var ocrTesseract = new IronTesseract();
        ocrTesseract.Configuration.ReadBarCodes = true;

        // Load the receipt image with a barcode
        using (var ocrInput = new OcrInput("b.png"))
        {
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Output the barcode values to the console
            foreach (var barcode in ocrResult.Barcodes)
            {
                Console.WriteLine(barcode.Value);
            }
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        var ocrTesseract = new IronTesseract();
        ocrTesseract.Configuration.ReadBarCodes = true;

        // Load the receipt image with a barcode
        using (var ocrInput = new OcrInput("b.png"))
        {
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Output the barcode values to the console
            foreach (var barcode in ocrResult.Barcodes)
            {
                Console.WriteLine(barcode.Value);
            }
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract = New IronTesseract()
		ocrTesseract.Configuration.ReadBarCodes = True

		' Load the receipt image with a barcode
		Using ocrInput As New OcrInput("b.png")
			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)

			' Output the barcode values to the console
			For Each barcode In ocrResult.Barcodes
				Console.WriteLine(barcode.Value)
			Next barcode
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Imagen de entrada

Entrada para Leer Código de Barras

Texto de salida

El resultado del procesamiento de la imagen de códigos 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 fragmentos de código de ejemplo proporcionados.

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

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

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

Preguntas Frecuentes

¿Cómo puedo usar IronOCR para realizar OCR en una imagen de recibo en C#?

Puedes usar IronOCR para realizar OCR en una imagen de recibo cargando la imagen en la clase OcrInput y llamando al método Read para extraer datos de texto, como listas detalladas y cantidades totales.

¿Cuáles son las ventajas de usar IronOCR sobre Tesseract para el procesamiento de facturas?

IronOCR ofrece mayor precisión, soporta más de 125 idiomas y cuenta con características como detección automática de orientación de texto y capacidades de aprendizaje profundo. También es más fácil de integrar en proyectos de C# usando NuGet Package Manager.

¿Cómo integro IronOCR en un proyecto de Visual Studio?

Para integrar IronOCR en un proyecto de Visual Studio, usa el NuGet Package Manager. Navega a Herramientas > Gestor de Paquetes NuGet > Consola del Gestor de Paquetes, luego ejecuta Install-Package IronOcr para añadir la biblioteca a tu proyecto.

¿Puede IronOCR manejar múltiples idiomas en OCR de recibos?

Sí, IronOCR puede manejar múltiples idiomas, soportando más de 125 idiomas globales, lo que lo hace ideal para procesar recibos con texto multilingüe.

¿Cómo mejora IronOCR la precisión del reconocimiento de texto en los recibos?

IronOCR mejora la precisión del reconocimiento de texto a través de características como aprendizaje profundo, detección automática de orientación de texto y la capacidad de optimizar imágenes usando la clase OcrInput para obtener mejores resultados de OCR.

¿Es posible extraer listas detalladas de los recibos usando IronOCR?

Sí, IronOCR se puede usar para extraer listas detalladas de los recibos procesando los datos de texto e identificando los elementos de línea mediante coincidencia de patrones después de realizar OCR.

¿Cómo maneja IronOCR la lectura de códigos de barras en los recibos?

IronOCR maneja la lectura de códigos de barras usando la clase BarcodeReader y el método ReadBarCodes para escanear y decodificar códigos de barras presentes en los recibos.

¿Qué formatos de archivo puede procesar IronOCR para OCR de recibos?

IronOCR puede procesar una variedad de formatos de archivo para OCR de recibos, incluyendo PNG, JPG, TIFF y PDF, lo que lo hace versátil para diferentes tipos de entrada.

¿Qué pasos están involucrados en configurar IronOCR para el procesamiento de facturas en C#?

Configurar IronOCR para el procesamiento de facturas implica instalar la biblioteca a través de NuGet, configurar el OcrInput con la imagen del recibo y usar el método Read para extraer datos de texto. También puede usar las características de la biblioteca para mejorar la precisión y extraer datos específicos como totales.

Kannaopat Udonpant
Ingeniero de Software
Antes de convertirse en Ingeniero de Software, Kannapat completó un doctorado en Recursos Ambientales de la Universidad de Hokkaido en Japón. Mientras perseguía su grado, Kannapat también se convirtió en miembro del Laboratorio de Robótica de Vehículos, que es parte del Departamento de Ingeniería ...
Leer más