
Cómo obtener texto de una factura en C# Tutorial
Cómo realizar el reconocimiento óptico de caracteres (OCR) de un recibo en Tesseract
- Instalar biblioteca C# OCR para recibos con Tesseract
- Explora las características de la biblioteca C# para realizar OCR en recibos
- Extrae datos de los recibos con Tesseract
- Busca en el texto extraído para encontrar datos específicos
- 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:

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.

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

Aparecerá una nueva consola en la parte inferior de la ventana de Visual Studio. Escribe el siguiente comando en la consola y presiona enter.
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);
}
}
}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 ClassConsulta 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);
}
}
}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 ClassGracias a los múltiples ajustes que ofrece la clase OcrInput, es posible optimizar la imagen de entrada para obtener una mayor precisión en el proceso de OCR.
Entrada

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 BarCodes en recibos, deberá utilizar 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);
}
}
}
}Imports IronOcr
Imports System
Class Program
Shared Sub Main()
Dim ocrTesseract = New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
' Load the receipt image with a barcode
Using ocrInput = 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
End Using
End Sub
End ClassImagen de entrada

Texto de salida

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.

Artículos Relacionados

