IRONSOFTWAREHOME
USANDO IRONOCR

API de escaneo de recibos: extraiga datos de recibos con C# e IronOCR

Kannaopat Udonpant
Kannapat Udonpant
Updated: 8 de mayo de 2026

Las API de escaneo de recibos automatizan la extracción de datos de los recibos mediante tecnología OCR, lo que reduce significativamente los errores de introducción manual y agiliza el procesamiento. Esta guía muestra cómo utilizar IronOCR en C# para extraer con precisión nombres de proveedores, fechas, artículos, precios y totales de imágenes de recibos, con preprocesamiento de imágenes integrado y compatibilidad con múltiples formatos.

¿Por qué elegir IronOCR para el escaneo de recibos?

IronOCR es una biblioteca IronOCR flexible que ofrece una extracción de texto fiable a partir de documentos escaneados, imágenes y archivos PDF. Gracias a algoritmos avanzados, visión artificial y modelos de aprendizaje automático, IronOCR garantiza una alta precisión incluso en situaciones complejas. La biblioteca admite múltiples idiomas y estilos de fuente, lo que la hace adecuada para aplicaciones globales. Al incorporar IronOCR a sus aplicaciones, puede automatizar la introducción de datos y el análisis de texto, lo que aumenta la productividad.

¿Cómo extrae IronOCR el texto de las imágenes de recibos?

IronOCR extrae texto de documentos, fotografías, capturas de pantalla y transmisiones de cámara en directo como respuestas JSON. Mediante algoritmos sofisticados y aprendizaje automático, IronOCR analiza datos de imagen, reconoce caracteres y los convierte en texto legible por máquina. La biblioteca utiliza la tecnología Tesseract 5, mejorada con optimizaciones propias para lograr una precisión superior.

¿Por qué IronOCR es excelente para el procesamiento de recibos?

IronOCR destaca por su capacidad para gestionar escaneos de baja calidad, formatos de recibos variados y diferentes orientaciones. Los filtros de preprocesamiento de imágenes integrados mejoran automáticamente la calidad de la imagen antes del procesamiento, lo que garantiza resultados óptimos incluso con recibos arrugados o descoloridos.

¿Qué necesito para utilizar IronOCR?

Antes de trabajar con IronOCR, asegúrese de que se cumplen los siguientes requisitos previos:

¿Qué entornos de desarrollo son compatibles?

  1. Entorno de desarrollo: Instala un IDE adecuado, como Visual Studio. IronOCR es compatible con Windows, Linux, macOS, Azure y AWS.

¿Qué conocimientos de programación se requieren?

  1. Conocimientos de C#: Un conocimiento básico de C# te ayudará a modificar los ejemplos de código. IronOCR proporciona ejemplos sencillos y documentación de la API.

¿Qué dependencias de software son necesarias?

  1. Instalación de IronOCR: Instálalo a través del gestor de paquetes NuGet. Es posible que se requieran dependencias específicas de la plataforma.

¿Se requiere una clave de licencia?

  1. Clave de licencia (opcional): Prueba gratuita disponible; El uso en producción requiere una licencia.

¿Cómo creo un nuevo proyecto de Visual Studio para el escaneo de recibos?

¿Cómo inicio un nuevo proyecto en Visual Studio?

Abre Visual Studio y ve a Archivos, luego pasa por encima de Nuevo y haz clic en Proyecto.

IDE de Visual Studio con el menú Archivo desplegado, mostrando la opción Imagen de Nuevo Proyecto

¿Qué plantilla de proyecto debo elegir?

Seleccione "Aplicación de consola" y haga clic en "Siguiente". Esta plantilla es ideal para aprender a utilizar IronOCR antes de implementarlo en aplicaciones web.

Cuadro de diálogo Aplicación de Consola

¿Cómo debería llamar a mi proyecto de escáner de recibos?

Escriba el nombre y la ubicación de su proyecto y, a continuación, haga clic en Siguiente. Elige un nombre descriptivo como "ReceiptScannerAPI".

Pantalla de configuración de un nuevo proyecto de Visual Studio para crear una aplicación de consola llamada Configuración del Proyecto

¿Qué versión de .NET Framework debo seleccionar?

Seleccione .NET 5.0 o posterior para una compatibilidad óptima y, a continuación, haga clic en Crear.

Cuadro de diálogo Marco de Trabajo Objetivo

¿Cómo instalo IronOCR en mi proyecto?

Hay dos métodos de instalación sencillos disponibles:

¿Cómo se utiliza el método del gestor de paquetes NuGet?

Vaya a Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución

Cuadro de diálogo de configuración del Administrador de paquetes NuGet de Visual Studio con la configuración de fuentes de paquetes, junto a una estructura de proyecto C# en el explorador de soluciones Administrador de Paquetes NuGet

Busca IronOCR e instala el paquete. Para recibos que no estén en inglés, instale los paquetes específicos para cada idioma.

El Administrador de paquetes NuGet en Visual Studio muestra los paquetes IronOCR instalados, incluyendo la biblioteca IronOCR y los paquetes de OCR específicos para los idiomas árabe, hebreo y español IronOCR

¿Cómo se utiliza la instalación desde la línea de comandos?

  1. Vaya a Herramientas > Administrador de paquetes NuGet > Consola del administrador de paquetes

  2. Introduzca este comando:

    PM > Install-Package IronOcr

    Ventana de la consola del Administrador de paquetes de Visual Studio que muestra la ejecución del comando NuGet Consola del Administrador de Paquetes

¿Cómo puedo extraer rápidamente los datos de un recibo con IronOCR?

Extraiga datos de recibos con solo unas pocas líneas de código:

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

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

    using IronOcr;
    using System;
    
    var ocr = new IronTesseract();
    
    // Configure for receipt scanning
    ocr.Configuration.ReadBarCodes = true;
    ocr.Configuration.WhiteListCharacters = "0123456789.$,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz% ";
    
    using (var input = new OcrInput(@"receipt.jpg"))
    {
        // Apply automatic image enhancement
        input.DeNoise();
        input.Deskew();
        input.EnhanceResolution(225);
        
        // Extract text from receipt
        var result = ocr.Read(input);
        
        // Display extracted text and confidence
        Console.WriteLine($"Extracted Text:\n{result.Text}");
        Console.WriteLine($"\nConfidence: {result.Confidence}%");
    }
    C#
  3. 3Despliegue para probar en su entorno real

    Comienza a usar IronOCR en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿Cómo extraigo datos estructurados de imágenes de recibos?

IronOCR extrae partidas, precios, impuestos y totales de diversos tipos de documentos. La biblioteca IronOCR es compatible con archivos PDF, TIFF de varias páginas y diversos formatos de imagen.

using IronOcr;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class ReceiptScanner
{
    static void Main()
    {
        var ocr = new IronTesseract();
        
        // Configure OCR for optimal receipt reading
        ocr.Configuration.WhiteListCharacters = "0123456789.$,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz% ";
        ocr.Configuration.BlackListCharacters = "~`@#*_}{][|\\";
        ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
        
        // Load the image of the receipt
        using (var input = new OcrInput(@"r2.png"))
        {
            // Apply image enhancement filters
            input.Deskew(); // Fix image rotation
            input.EnhanceResolution(225); // Optimal DPI for receipts
            input.DeNoise(); // Remove background noise
            input.Sharpen(); // Improve text clarity
            
            // Perform OCR on the input image
            var result = ocr.Read(input);

            // Regular expression patterns to extract relevant details from the OCR result
            var descriptionPattern = @"\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
            var pricePattern = @"\$\d+(\.\d{2})?";
            var datePattern = @"\d{1,2}[/-]\d{1,2}[/-]\d{2,4}";
            
            // Variables to store extracted data
            var descriptions = new List<string>();
            var unitPrices = new List<decimal>();
            var taxes = new List<decimal>();
            var amounts = new List<decimal>();
            
            var lines = result.Text.Split('\n');
            foreach (var line in lines)
            {
                // Match each line against the description pattern
                var descriptionMatch = Regex.Match(line, descriptionPattern);
                if (descriptionMatch.Success)
                {
                    descriptions.Add(descriptionMatch.Groups[1].Value.Trim());
                    unitPrices.Add(decimal.Parse(descriptionMatch.Groups[2].Value));
                    
                    // Calculate tax and total amount for each item
                    var tax = unitPrices[unitPrices.Count - 1] * 0.15m;
                    taxes.Add(tax);
                    amounts.Add(unitPrices[unitPrices.Count - 1] + tax);
                }
                
                // Extract date if found
                var dateMatch = Regex.Match(line, datePattern);
                if (dateMatch.Success)
                {
                    Console.WriteLine($"Receipt Date: {dateMatch.Value}");
                }
            }
            
            // Output the extracted data
            for (int i = 0; i < descriptions.Count; i++)
            {
                Console.WriteLine($"Description: {descriptions[i]}");
                Console.WriteLine($"Quantity: 1.00 Units");
                Console.WriteLine($"Unit Price: ${unitPrices[i]:0.00}");
                Console.WriteLine($"Taxes: ${taxes[i]:0.00}");
                Console.WriteLine($"Amount: ${amounts[i]:0.00}");
                Console.WriteLine("-----------------------");
            }
            
            // Calculate and display totals
            var subtotal = unitPrices.Sum();
            var totalTax = taxes.Sum();
            var grandTotal = amounts.Sum();
            
            Console.WriteLine($"\nSubtotal: ${subtotal:0.00}");
            Console.WriteLine($"Total Tax: ${totalTax:0.00}");
            Console.WriteLine($"Grand Total: ${grandTotal:0.00}");
        }
    }
}

¿Qué técnicas mejoran la precisión del escaneo de recibos?

Técnicas clave para un escaneo preciso de recibos:

Consola de depuración de Visual Studio que muestra datos de facturas extraídos de un PDF, con artículos que incluyen descripciones, cantidades, precios, impuestos y totales Salida

¿Cómo extraigo todo el contenido del recibo?

Extraer el contenido completo del recibo conservando el formato:

using IronOcr;
using System;
using System.Linq;

class WholeReceiptExtractor
{
    static void Main()
    {
        var ocr = new IronTesseract();
        
        // Configure for receipt scanning
        ocr.Configuration.ReadBarCodes = true; // Enable barcode detection
        ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5; // Use latest engine
        ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm; // Best accuracy
        
        using (var input = new OcrInput(@"r3.png"))
        {
            // Apply automatic image correction
            input.WithTitle("Receipt Scan");
            
            // Use computer vision to find text regions
            var textRegions = input.FindTextRegions();
            Console.WriteLine($"Found {textRegions.Count()} text regions");
            
            // Apply optimal filters for receipt processing
            input.ApplyOcrInputFilters();
            
            // Perform OCR on the entire receipt
            var result = ocr.Read(input);
            
            // Display extracted text
            Console.WriteLine("=== EXTRACTED RECEIPT TEXT ===");
            Console.WriteLine(result.Text);
            
            // Get detailed results
            Console.WriteLine($"\n=== OCR STATISTICS ===");
            Console.WriteLine($"OCR Confidence: {result.Confidence:F2}%");
            Console.WriteLine($"Pages Processed: {result.Pages.Length}");
            Console.WriteLine($"Paragraphs Found: {result.Paragraphs.Length}");
            Console.WriteLine($"Lines Detected: {result.Lines.Length}");
            Console.WriteLine($"Words Recognized: {result.Words.Length}");
            
            // Extract any barcodes found
            if (result.Barcodes.Any())
            {
                Console.WriteLine("\n=== BARCODES DETECTED ===");
                foreach(var barcode in result.Barcodes)
                {
                    Console.WriteLine($"Type: {barcode.Type}");
                    Console.WriteLine($"Value: {barcode.Value}");
                    Console.WriteLine($"Location: X={barcode.X}, Y={barcode.Y}");
                }
            }
            
            // Save as searchable PDF
            result.SaveAsSearchablePdf("receipt_searchable.pdf");
            Console.WriteLine("\nSearchable PDF saved as: receipt_searchable.pdf");
            
            // Export as hOCR for preservation
            result.SaveAsHocrFile("receipt_hocr.html");
            Console.WriteLine("hOCR file saved as: receipt_hocr.html");
        }
    }
}

Consola de depuración de Visual Studio que muestra datos de facturas extraídos de un PDF, con artículos que incluyen descripciones, cantidades, precios, impuestos y totales Salida de la API de Escaneo de Recibos

¿Qué funciones avanzadas mejoran el escaneo de recibos?

IronOCR ofrece varias funciones avanzadas que mejoran significativamente la precisión del escaneo de recibos:

¿Qué idiomas admite IronOCR?

  1. Compatibilidad multilingüe: procesa recibos en más de 125 idiomas o en varios idiomas en un mismo documento.

¿Puede IronOCR leer BarCodes en recibos?

  1. Lectura de BarCodes: Detecta y lee automáticamente BarCodes y códigos QR.

¿Cómo ayuda la visión artificial al procesamiento de recibos?

  1. Visión artificial: Utiliza la detección avanzada de texto para localizar regiones de texto antes del OCR.

¿Puedo entrenar modelos personalizados para formatos de recibos únicos?

  1. Entrenamiento personalizado: Entrena fuentes personalizadas para formatos de recibos especializados.

¿Cómo puedo mejorar el rendimiento del procesamiento masivo?

  1. Optimización del rendimiento: Implementar multithreading y procesamiento asíncrono para operaciones masivas.
// Example: Async receipt processing for high-volume scenarios
using IronOcr;
using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.IO;

class BulkReceiptProcessor
{
    static async Task Main()
    {
        var ocr = new IronTesseract();
        
        // Configure for optimal performance
        ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
        ocr.Configuration.UseMultiThreading = true;
        ocr.Configuration.ProcessorCount = Environment.ProcessorCount;
        
        // Process multiple receipts asynchronously
        var receiptFiles = Directory.GetFiles(@"C:\Receipts\", "*.jpg");
        var tasks = new List<Task<OcrResult>>();
        
        foreach (var file in receiptFiles)
        {
            tasks.Add(ProcessReceiptAsync(ocr, file));
        }
        
        // Wait for all receipts to be processed
        var results = await Task.WhenAll(tasks);
        
        // Aggregate results
        decimal totalAmount = 0;
        foreach (var result in results)
        {
            // Extract total from each receipt
            var match = System.Text.RegularExpressions.Regex.Match(
                result.Text, @"Total:?\s*\$?(\d+\.\d{2})");
            
            if (match.Success && decimal.TryParse(match.Groups[1].Value, out var amount))
            {
                totalAmount += amount;
            }
        }
        
        Console.WriteLine($"Processed {results.Length} receipts");
        Console.WriteLine($"Combined total: ${totalAmount:F2}");
    }
    
    static async Task<OcrResult> ProcessReceiptAsync(IronTesseract ocr, string filePath)
    {
        using (var input = new OcrInput(filePath))
        {
            // Apply preprocessing
            input.DeNoise();
            input.Deskew();
            input.EnhanceResolution(200);
            
            // Process asynchronously
            return await ocr.ReadAsync(input);
        }
    }
}

¿Cómo puedo abordar los retos habituales del escaneo de recibos?

El escaneo de recibos presenta retos únicos que IronOCR ayuda a resolver:

¿Cómo puedo solucionar el problema de las imágenes de recibos de mala calidad?

  • Imágenes de baja calidad: utilice el Asistente de filtros para encontrar automáticamente la configuración óptima de preprocesamiento.

¿Qué pasa con los recibos torcidos o girados?

¿Cómo proceso los recibos descoloridos o con poco contraste?

¿Puede IronOCR procesar recibos arrugados o dañados?

¿Cómo gestiono los diferentes formatos y diseños de recibos?

Los formatos de los recibos varían mucho entre los distintos comercios de Retail. IronOCR ofrece enfoques flexibles:

using IronOcr;
using System;
using System.Collections.Generic;
using System.Linq;

class ReceiptLayoutHandler
{
    static void Main()
    {
        var ocr = new IronTesseract();
        
        // Configure for different receipt layouts
        ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
        ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
        
        using (var input = new OcrInput(@"complex_receipt.jpg"))
        {
            // Apply region-specific processing
            var cropRegion = new CropRectangle(x: 0, y: 100, width: 400, height: 800);
            input.AddImage(@"complex_receipt.jpg", cropRegion);
            
            // Process with confidence tracking
            var result = ocr.Read(input);
            
            // Parse using confidence scores
            var highConfidenceLines = result.Lines
                .Where(line => line.Confidence > 85)
                .Select(line => line.Text)
                .ToList();
            
            // Extract data with fallback strategies
            var total = ExtractTotal(highConfidenceLines) 
                        ?? ExtractTotalAlternative(result.Text);
            
            Console.WriteLine($"Receipt Total: {total}");
        }
    }
    
    static decimal? ExtractTotal(List<string> lines)
    {
        // Primary extraction method
        foreach (var line in lines)
        {
            if (line.Contains("TOTAL") && 
                System.Text.RegularExpressions.Regex.IsMatch(line, @"\d+\.\d{2}"))
            {
                var match = System.Text.RegularExpressions.Regex.Match(line, @"(\d+\.\d{2})");
                if (decimal.TryParse(match.Value, out var total))
                    return total;
            }
        }
        return null;
    }
    
    static decimal? ExtractTotalAlternative(string fullText)
    {
        // Fallback extraction method
        var pattern = @"(?:Total|TOTAL|Grand Total|Amount Due).*?(\d+\.\d{2})";
        var match = System.Text.RegularExpressions.Regex.Match(fullText, pattern);
        
        if (match.Success && decimal.TryParse(match.Groups[1].Value, out var total))
            return total;
            
        return null;
    }
}

¿Qué puntos clave debo recordar sobre las API de escaneo de recibos?

Las API de escaneo de recibos, como IronOCR, ofrecen soluciones fiables para automatizar la extracción de datos de los recibos. Mediante el uso de tecnología OCR avanzada, las empresas pueden extraer automáticamente nombres de proveedores, fechas de compra, listas detalladas, precios, impuestos y totales. Gracias a la compatibilidad con múltiples idiomas, divisas y BarCodes, las empresas pueden simplificar la gestión de recibos, ahorrar tiempo y tomar decisiones basadas en datos.

IronOCR proporciona las herramientas que los desarrolladores necesitan para una extracción de texto precisa y eficiente, lo que permite la automatización de tareas y una mayor eficiencia. El conjunto completo de características de la biblioteca incluye compatibilidad con diversos tipos de documentos y mejoras recientes, como una reducción del 98 % del consumo de memoria.

Al cumplir los requisitos previos e integrar IronOCR, podrá descubrir las ventajas del procesamiento automatizado de recibos. La documentación, los ejemplos y las guías de resolución de problemas de la biblioteca garantizan una implementación fluida.

Para obtener más información, visita la página de licencias o consulta el tutorial de C# Tesseract OCR.

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta