Saltar al pie de página
USANDO IRONOCR

Cómo extraer datos de recibos mediante OCR en C#

IronOCR ofrece una potente biblioteca en C# para extraer texto de imágenes de recibos mediante tecnología OCR avanzada, lo que permite el seguimiento automatizado de gastos y el análisis de datos con soporte para 125 idiomas y preprocesamiento de imágenes integrado.

Recibos y Automatización

Los recibos son esenciales en el mundo acelerado de hoy. Tanto si compras comestibles como si sales a cenar, los recibos te ayudan a llevar un control de los gastos y a elaborar un presupuesto. Por su parte, las tiendas utilizan escáneres de tickets para analizar los datos de ventas, lo que les ayuda a prever la demanda y gestionar el inventario mediante técnicas de extracción de datos.

Sin embargo, los recibos pueden ser difíciles de leer y los cálculos no siempre son claros. La introducción manual de datos para la elaboración de presupuestos es tediosa y propensa a errores, especialmente cuando hay muchos elementos. Perder un recibo puede convertir de repente tu gasto excesivo mensual en un misterio. Los recibos en papel tradicionales suelen tener una calidad de impresión deficiente, tinta descolorida y degradación del papel térmico, lo que hace que la optimización de imágenes mediante OCR sea crucial para una extracción precisa.

Para resolver esto, las aplicaciones de presupuesto y finanzas han adoptado la tecnología OCR (reconocimiento óptico de caracteres). Al escanear recibos a formato digital, el OCR minimiza los errores, automatiza la introducción de datos, realiza un seguimiento de los gastos y revela patrones de compra. Las soluciones modernas de OCR gestionan diversos formatos de recibos, desde los impresos tradicionales de punto de venta hasta los recibos digitales con capacidad para leer BarCodes y códigos QR.

El OCR utiliza el aprendizaje automático para identificar y extraer texto de imágenes. El proceso incluye el preprocesamiento de imágenes, la segmentación de caracteres, el reconocimiento de patrones y la validación. Sin embargo, el OCR no es perfecto: el desenfoque o las manchas pueden provocar errores. Los sistemas avanzados utilizan técnicas de visión artificial para aumentar la precisión. Elegir una biblioteca OCR fiable que procese y optimice la lectura de forma eficiente es fundamental para el éxito de la automatización de documentos.

¿Por qué debería elegir IronOCR para el procesamiento de recibos?

IronOCR es una biblioteca de C# basada en un motor OCR de Tesseract personalizado. A diferencia del Tesseract estándar, IronOCR incluye optimizaciones de Tesseract 5 y características diseñadas específicamente para desarrolladores de .NET. Esto es lo que la hace destacar:

  1. Compatibilidad cruzada: Funciona con .NET 8, 7, 6, 5 y Framework 4.6.2+. Funciona en Windows, macOS, Azure y Linux. Se implementa sin problemas en Docker, AWS Lambda y Azure Functions.

  2. Flexibilidad y escalabilidad: Admite los formatos JPG, PNG y GIF. Se integra con objetos System.Drawing. Procesa archivos TIFF de varias páginas y flujos PDF. Admite multihilo para escenarios de gran volumen.

  3. Facilidad de uso y asistencia técnica: Bien documentado, con una API robusta y asistencia técnica 24/5. Ofrece operaciones sencillas de una sola línea y opciones de configuración detalladas. Incluye guías completas de resolución de problemas.

  4. Capacidades multilingües: Admite 125 idiomas internacionales. Reconoce los nombres de los productos y los precios de forma eficaz. Admite varios idiomas por documento. Admite archivos de datos de entrenamiento personalizados.

  5. Procesamiento avanzado de imágenes: los filtros integrados mejoran automáticamente la calidad de los recibos. Incluye reducción de ruido, corrección de orientación y optimización de DPI. El asistente de filtros determina automáticamente la configuración óptima.

¿Cómo implemento el OCR de recibos en mi aplicación?

¿Qué licencia necesito para empezar?

Antes de utilizar IronOCR, necesitarás una clave de licencia. Consigue una prueba gratuita aquí. Las opciones de licencia incluyen los niveles Lite, Plus y Professional para equipos de diferentes tamaños y entornos de implementación. Consulte la documentación para aplicar las claves de licencia.

// Replace the license key variable with the trial key you obtained
IronOcr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
// Replace the license key variable with the trial key you obtained
IronOcr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
$vbLabelText   $csharpLabel

Para aplicaciones web, configure la clave de licencia en Web.config para una configuración centralizada. El sistema de licencias admite ampliaciones y actualizaciones a medida que crezca.

¿Cómo puedo leer un ticket de supermercado con IronOCR?

Veamos cómo se puede utilizar IronOCR en una aplicación que escanea tickets de supermercado con smartphones, extrayendo los nombres y precios de los productos para otorgar puntos de fidelidad en función de las compras. Esto implica la captura de imágenes, el preprocesamiento, la ejecución del OCR y la validación de datos mediante puntuaciones de confianza de los resultados.

¿Cómo es una imagen típica de un recibo?

Sample supermarket receipt showing Lorem ipsum placeholder text with items, prices, subtotal of $107.60, and payment details - demonstrating typical receipt layout with header, item list, totals, and barcode

Entre los retos habituales con los recibos se incluyen la calidad del papel térmico, las diferentes fuentes, los diseños recargados y los daños causados por el plegado o la humedad. El preprocesamiento de IronOCR se encarga de ello mediante técnicas de corrección de la calidad de la imagen y de corrección del color.

¿Qué código C# necesito para extraer datos de recibos?

using IronOcr;

class ReceiptScanner
{
    static void Main()
    {
        // Set the license key for IronOCR
        IronOcr.License.LicenseKey = "YOUR-KEY";

        // Instantiate OCR engine with optimal settings for receipts
        var ocr = new IronTesseract();

        // Configure for receipt-specific text
        ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.$,- ";
        ocr.Configuration.BlackListCharacters = "~`@#%^*_+={}[]|\\:;\"'<>?";

        using var inputPhoto = new OcrInput();
        inputPhoto.LoadImage("supermarketexample.jpg");

        // Apply preprocessing for better accuracy
        inputPhoto.DeNoise();
        inputPhoto.ToGrayScale();
        inputPhoto.Contrast(1.2);

        // Perform OCR on the loaded image
        OcrResult result = ocr.Read(inputPhoto);

        // Output the text extracted from the receipt
        string text = result.Text;
        Console.WriteLine(text);

        // Extract specific data using OcrResult features
        foreach (var line in result.Lines)
        {
            if (line.Text.Contains("TOTAL"))
            {
                Console.WriteLine($"Total Found: {line.Text}");
            }
        }
    }
}
using IronOcr;

class ReceiptScanner
{
    static void Main()
    {
        // Set the license key for IronOCR
        IronOcr.License.LicenseKey = "YOUR-KEY";

        // Instantiate OCR engine with optimal settings for receipts
        var ocr = new IronTesseract();

        // Configure for receipt-specific text
        ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.$,- ";
        ocr.Configuration.BlackListCharacters = "~`@#%^*_+={}[]|\\:;\"'<>?";

        using var inputPhoto = new OcrInput();
        inputPhoto.LoadImage("supermarketexample.jpg");

        // Apply preprocessing for better accuracy
        inputPhoto.DeNoise();
        inputPhoto.ToGrayScale();
        inputPhoto.Contrast(1.2);

        // Perform OCR on the loaded image
        OcrResult result = ocr.Read(inputPhoto);

        // Output the text extracted from the receipt
        string text = result.Text;
        Console.WriteLine(text);

        // Extract specific data using OcrResult features
        foreach (var line in result.Lines)
        {
            if (line.Text.Contains("TOTAL"))
            {
                Console.WriteLine($"Total Found: {line.Text}");
            }
        }
    }
}
$vbLabelText   $csharpLabel

El código muestra:

  1. Importa la biblioteca IronOCR.
  2. Instanciar el motor OCR (IronTesseract) con opciones de configuración.
  3. Crea un nuevo OcrInput para cargar la imagen del recibo.
  4. Aplicar un preprocesamiento para mejorar la precisión.
  5. Utilice el método Read para extraer texto.
  6. Procesar los resultados utilizando la clase OcrResult para datos estructurados.

Para diferentes formatos de recibos, IronOCR admite la lectura de fotos, capturas de pantalla y documentos escaneados. También puede extraer datos de tablas de recibos estructurados.

¿Cómo puedo verificar la precisión de los datos extraídos?

Para garantizar la coherencia, comprueba el nivel de confianza de los datos extraídos. IronOCR proporciona métricas de confianza exhaustivas en múltiples niveles:

OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine($"Overall Confidence: {result.Confidence}%");

// Check confidence for individual elements
foreach (var word in result.Words)
{
    if (word.Confidence < 80)
    {
        Console.WriteLine($"Low confidence word: '{word.Text}' ({word.Confidence}%)");
    }
}

// Validate numeric values
foreach (var block in result.Blocks)
{
    if (block.Text.Contains("$"))
    {
        Console.WriteLine($"Price detected: {block.Text} (Confidence: {block.Confidence}%)");
    }
}
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine($"Overall Confidence: {result.Confidence}%");

// Check confidence for individual elements
foreach (var word in result.Words)
{
    if (word.Confidence < 80)
    {
        Console.WriteLine($"Low confidence word: '{word.Text}' ({word.Confidence}%)");
    }
}

// Validate numeric values
foreach (var block in result.Blocks)
{
    if (block.Text.Contains("$"))
    {
        Console.WriteLine($"Price detected: {block.Text} (Confidence: {block.Confidence}%)");
    }
}
$vbLabelText   $csharpLabel

La propiedad Confidence mide la precisión estadística de 0 (baja) a 100 (alta). Utilice estos niveles de confianza para determinar cómo tratar los datos. Para los sistemas de producción, implemente un seguimiento del progreso para supervisar las operaciones de OCR.

¿Cómo puedo mejorar la precisión del OCR con el preprocesamiento de imágenes?

Antes del procesamiento, utilice estos métodos para preparar las imágenes y obtener mejores resultados:

using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("receipt.jpg");

// Basic preprocessing
inputPhoto.DeNoise();           // Removes noise from the image
inputPhoto.ToGrayScale();       // Converts image to grayscale
inputPhoto.Contrast(1.5);       // Enhance contrast for faded receipts
inputPhoto.Sharpen();           // Improve text clarity

// Advanced preprocessing for challenging receipts
inputPhoto.Rotate(2.5);         // Correct slight rotation
inputPhoto.Deskew();            // Automatically straighten receipt
inputPhoto.Scale(200);          // Upscale low-resolution images

// Handle specific receipt issues
if (receiptIsDamaged)
{
    inputPhoto.Dilate();        // Thicken thin text
    inputPhoto.Erode();         // Reduce text bleeding
}

// For colored or patterned backgrounds
inputPhoto.Binarize();          // Convert to pure black and white
inputPhoto.Invert();            // Handle white text on dark background
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("receipt.jpg");

// Basic preprocessing
inputPhoto.DeNoise();           // Removes noise from the image
inputPhoto.ToGrayScale();       // Converts image to grayscale
inputPhoto.Contrast(1.5);       // Enhance contrast for faded receipts
inputPhoto.Sharpen();           // Improve text clarity

// Advanced preprocessing for challenging receipts
inputPhoto.Rotate(2.5);         // Correct slight rotation
inputPhoto.Deskew();            // Automatically straighten receipt
inputPhoto.Scale(200);          // Upscale low-resolution images

// Handle specific receipt issues
if (receiptIsDamaged)
{
    inputPhoto.Dilate();        // Thicken thin text
    inputPhoto.Erode();         // Reduce text bleeding
}

// For colored or patterned backgrounds
inputPhoto.Binarize();          // Convert to pure black and white
inputPhoto.Invert();            // Handle white text on dark background
$vbLabelText   $csharpLabel

Estos pasos de preprocesamiento aumentan la precisión de la extracción. El Asistente de filtros encuentra automáticamente la mejor combinación de filtros para tus recibos. En el caso de los recibos con fondos de color, la corrección del color es esencial.

En casos más complejos, podría ser necesario utilizar un OCR específico para cada región con el fin de centrarse en los totales o la información fiscal. En el caso de los recibos con BarCodes, habilite la lectura de BarCodes junto con la extracción de texto.

¿Cuáles son las principales ventajas de utilizar IronOCR para el procesamiento de recibos?

IronOCR licensing page showing three pricing tiers (Lite $749, Plus $1,499, Professional $2,999) with a toggle between IronOCR and Iron Suite options, displaying Professional license details and total cost of $5,998 - flexible pricing options for teams and enterprises with individual product licensing and Iron Suite bundle for better value

La tecnología OCR para recibos ayuda a empresas y particulares con la elaboración de presupuestos, la prevención del fraude y la recopilación automatizada de datos. IronOCR ofrece precisión, rapidez y una fácil integración con las plataformas existentes, lo que lo convierte en la solución ideal para el escaneo de recibos.

Los beneficios clave incluyen:

  1. Optimización del rendimiento: el multithreading y el ajuste de velocidad procesan miles de recibos de forma eficiente.

  2. Flexibilidad de exportación: Convierte los recibos a archivos PDF con capacidad de búsqueda o a HTML hOCR para su integración web.

  3. Funciones Enterprise: Implemente en servidores Azure, Docker y Linux para obtener escalabilidad.

  4. Reconocimiento especializado: Lee notas manuscritas en recibos y extrae estructuras de tablas.

  5. Herramientas de depuración: Las funciones de visualización de texto resaltado y exportación de resultados facilitan la resolución de problemas.

Prueba la Licencia Trial de IronOCR para explorar sus capacidades. La documentación completa y los ejemplos de código le ayudarán a implementar el OCR de recibos rápidamente.

Preguntas Frecuentes

¿Cómo puede usarse la tecnología OCR para automatizar el procesamiento de recibos de supermercado?

La tecnología OCR puede automatizar el procesamiento de recibos de supermercado convirtiendo recibos escaneados en datos digitales. Usando IronOCR, los recibos pueden ser leídos y el texto puede ser extraído automáticamente, reduciendo la necesidad de ingresar datos manualmente y minimizando el error humano.

¿Qué ventajas ofrece IronOCR para el procesamiento de recibos de supermercado?

IronOCR ofrece varias ventajas para procesar recibos de supermercado, incluyendo compatibilidad multiplataforma, soporte para múltiples formatos de imagen, una API robusta para fácil integración, y la capacidad de procesar hasta 125 idiomas, lo que lo hace ideal para recibos internacionales.

¿Cómo integrar IronOCR en una aplicación C# para leer recibos de supermercado?

Para integrar IronOCR en una aplicación C#, necesitas obtener una clave de licencia, importar la biblioteca IronOcr, y usar el motor IronTesseract para leer y extraer texto de imágenes de recibos de supermercado.

¿Qué técnicas de preprocesamiento mejoran la precisión del OCR en el escaneo de recibos?

IronOCR proporciona técnicas de preprocesamiento como DeNoise y ToGrayScale para mejorar la precisión del OCR. Estas técnicas ayudan a eliminar el ruido de la imagen y a convertir imágenes a escala de grises, mejorando la extracción de texto de los recibos.

¿Por qué es importante la prueba de confianza en el OCR y cómo se aplica?

La prueba de confianza en IronOCR es importante porque mide la precisión de los datos extraídos, con valores que van de 0 (bajo) a 1 (alto). Ayuda a los usuarios a evaluar la fiabilidad de los resultados de OCR e informa las decisiones de manejo de datos.

¿Puede IronOCR manejar recibos de supermercado multilingües?

Sí, IronOCR soporta el procesamiento OCR en hasta 125 idiomas, lo que le permite manejar recibos de supermercado multilingües eficientemente.

¿Está disponible una versión de prueba para desarrolladores interesados en IronOCR?

Sí, una prueba gratuita de IronOCR está disponible para desarrolladores, permitiéndoles explorar sus características y capacidades antes de comprometerse a una compra.

¿Qué plataformas son compatibles con IronOCR para el escaneo de recibos?

IronOCR es compatible con plataformas .NET, incluyendo .NET 8, 7, 6, 5, y Framework 4.6.2 en adelante, y soporta operación en entornos Windows, macOS, Azure y Linux.

¿Qué hace que IronOCR sea adecuado para integrar el escaneo de recibos en aplicaciones?

IronOCR es adecuado para integrar el escaneo de recibos en aplicaciones debido a su alta precisión, facilidad de uso, soporte multiplataforma y su capacidad de manejar varios formatos de entrada e idiomas sin problemas.

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

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame