Passer au contenu du pied de page
UTILISATION D'IRONOCR

API de numérisation de reçus : extraire des données de reçus à l’aide de C# et d’IronOCR

Les API de numérisation de reçus automatisent l'extraction de données à partir des reçus grâce à la technologie OCR, réduisant considérablement les erreurs de saisie manuelle et accélérant le traitement. Ce guide explique comment utiliser IronOCR en C# pour extraire avec précision les noms des fournisseurs, les dates, les articles, les prix et les totaux à partir d'images de reçus, grâce à un prétraitement d'image intégré et à la prise en charge de plusieurs formats.

Pourquoi choisir IronOCR pour la numérisation de reçus ?

IronOCR est une bibliothèque OCR flexible offrant une extraction de texte fiable à partir de documents numérisés, d'images et de fichiers PDF. Grâce à des algorithmes avancés, à la vision par ordinateur et à des modèles d'apprentissage automatique, IronOCR garantit une précision élevée même dans des scénarios difficiles. La bibliothèque prend en charge plusieurs langues et styles de police, ce qui la rend adaptée aux applications internationales. En intégrant IronOCR à vos applications, vous pouvez automatiser la saisie de données et l'analyse de texte, et ainsi accroître votre productivité.

Comment IronOCR extrait-il le texte des images de reçus ?

IronOCR récupère le texte des documents, des photographies, des captures d'écran et des flux vidéo en direct sous forme de réponses JSON. Grâce à des algorithmes sophistiqués et à l'apprentissage automatique, IronOCR analyse les données d'image , reconnaît les caractères et les convertit en texte lisible par machine. La bibliothèque utilise la technologie Tesseract 5, améliorée grâce à des perfectionnements exclusifs, pour une précision supérieure.

Pourquoi IronOCR est-il excellent pour le traitement des reçus ?

IronOCR excelle dans le traitement des numérisations de faible qualité , des formats de reçus variés et des orientations différentes . Les filtres de prétraitement d'image intégrés améliorent automatiquement la qualité de l'image avant traitement, garantissant des résultats optimaux même à partir de reçus froissés ou décolorés.

De quoi ai-je besoin pour utiliser IronOCR ?

Avant d'utiliser IronOCR, assurez-vous que les prérequis suivants sont remplis :

Quels environnements de développement sont pris en charge ?

  1. Environnement de développement : Installez un EDI approprié comme Visual Studio. IronOCR prend en charge Windows , Linux , macOS , Azure et AWS .

Quelles sont les compétences en programmation requises ?

  1. Connaissances en C# : Une compréhension de base du C# vous aide à modifier les exemples de code. IronOCR fournit des exemples simples et une documentation API .

Quelles dépendances logicielles sont nécessaires ?

  1. Installation d'IronOCR : Installez-le via le gestionnaire de packages NuGet . Des dépendances spécifiques à la plateforme peuvent être nécessaires.

Une clé de licence est-elle requise ?

  1. Clé de licence (facultative) : Essai gratuit disponible ; L'utilisation en production nécessite une licence .

Comment créer un nouveau projet Visual Studio pour la numérisation de reçus ?

Comment démarrer un nouveau projet dans Visual Studio ?

Ouvrez Visual Studio, allez dans Fichiers, puis survolez Nouveau et cliquez sur Projet.

! L'environnement de développement intégré Visual Studio, avec le menu Fichier développé, affiche l'option " Nouveau > Projet " mise en surbrillance, et l'éditeur de code affiche le code C# permettant de charger un classeur Excel. Nouvelle image de projet

Quel modèle de projet dois-je choisir ?

Sélectionnez Application console et cliquez sur Suivant. Ce modèle est idéal pour apprendre IronOCR avant de l'implémenter dans des applications web.

La boîte de dialogue " Créer un projet " de Visual Studio affiche le modèle " Application console " sélectionné, avec les options de plateforme pour Windows, Linux et macOS. Application Console

Comment nommer mon projet de scanner de reçus ?

Saisissez le nom et l'emplacement de votre projet, puis cliquez sur Suivant. Choisissez un nom descriptif comme " API ReceiptScanner ".

! Écran de configuration d'un nouveau projet Visual Studio pour la création d'une application console nommée " IronOCR " avec C# sélectionné et les paramètres de la solution affichés Configuration du Projet

Quelle version de .NET Framework dois-je choisir ?

Sélectionnez .NET 5.0 ou une version ultérieure pour une compatibilité optimale, puis cliquez sur Créer.

La boîte de dialogue " Informations supplémentaires " de Visual Studio affiche la configuration de l'application console avec .NET 5.0 sélectionné comme framework cible et les options de plateforme pour Linux, macOS, Windows et Console. Framework Cible

Comment installer IronOCR dans mon projet ?

Deux méthodes d'installation simples sont disponibles :

Comment utiliser la méthode du gestionnaire de packages NuGet ?

Accédez à Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution

! Boîte de dialogue des paramètres du gestionnaire de packages NuGet de Visual Studio avec la configuration des sources de packages, ainsi qu'une structure de projet C# dans l'explorateur de solutions Gestionnaire de paquets NuGet

Recherchez IronOCR et installez le package. Pour les reçus non anglais, installez les modules linguistiques correspondants .

Le gestionnaire de packages NuGet de Visual Studio affiche les packages IronOCR installés, notamment la bibliothèque principale et les packages OCR spécifiques aux langues arabe, hébreu et espagnol. IronOCR

Comment utiliser l'installation en ligne de commande ?

  1. Accédez à Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages
  2. Saisissez cette commande :

    Install-Package IronOcr

    ! Fenêtre de la console du gestionnaire de packages de Visual Studio affichant la commande NuGet " PM> Install-Package IronOCR " exécutée pour un projet nommé " Create PDF " Console du Gestionnaire de Paquets

Comment extraire rapidement les données d'un reçu avec IronOCR ?

Extraire les données d'un reçu en quelques lignes de code seulement :

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronOCR avec le gestionnaire de packages NuGet

    PM > Install-Package IronOcr

  2. Copiez et exécutez cet extrait de code.

    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}%");
    }
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Comment extraire des données structurées à partir d'images de reçus ?

IronOCR extrait les lignes de commande, les prix, les taxes et les totaux de différents types de documents. La bibliothèque prend en charge les PDF , les TIFF multipages et divers formats d'image .

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}");
        }
    }
}
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}");
        }
    }
}
$vbLabelText   $csharpLabel

Quelles techniques permettent d'améliorer la précision de la numérisation des reçus ?

Techniques clés pour une numérisation précise des reçus :

! La console de débogage de Visual Studio affiche les données extraites d'une facture PDF, présentant les articles avec leurs descriptions, quantités, prix, taxes et totaux. Sortie

Comment extraire l'intégralité du contenu d'un reçu ?

Extraire le contenu complet du reçu en conservant la mise en forme :

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");
        }
    }
}
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");
        }
    }
}
$vbLabelText   $csharpLabel

! La console de débogage de Visual Studio affiche les données extraites d'une facture PDF, présentant les articles avec leurs descriptions, quantités, prix, taxes et totaux. Résultat de l'API de numérisation des reçus

Quelles sont les fonctionnalités avancées qui améliorent la numérisation des reçus ?

IronOCR offre plusieurs fonctionnalités avancées qui améliorent considérablement la précision de la numérisation des reçus :

Quelles langues IronOCR prend-il en charge ?

  1. Prise en charge multilingue : Traitez les reçus dans plus de 125 langues ou plusieurs langues dans un seul document .

IronOCR peut-il lire les codes-barres sur les reçus ?

  1. Lecture des codes-barres : Détection et lecture automatiques des codes-barres et des codes QR .

Comment la vision par ordinateur facilite-t-elle le traitement des reçus ?

  1. Vision par ordinateur : Utiliser la détection de texte avancée pour localiser les régions de texte avant la reconnaissance optique de caractères (OCR).

Puis-je entraîner des modèles personnalisés pour des formats de reçus uniques ?

  1. Formation personnalisée : Entraîner les polices personnalisées pour les formats de reçus spécialisés.

Comment puis-je améliorer les performances du traitement en masse ?

  1. Optimisation des performances : Mettre en œuvre le multithreading et le traitement asynchrone pour les opérations en masse.
// 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);
        }
    }
}
// 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);
        }
    }
}
$vbLabelText   $csharpLabel

Comment gérer les problèmes courants liés à la numérisation des reçus ?

La numérisation des reçus présente des défis uniques qu'IronOCR contribue à relever :

Comment gérer les images de reçus de mauvaise qualité ?

  • Images de mauvaise qualité : utilisez l' assistant de filtre pour trouver automatiquement les paramètres de prétraitement optimaux.

Qu'en est-il des reçus de travers ou pivotés ?

Comment traiter les reçus décolorés ou à faible contraste ?

IronOCR peut-il traiter les reçus froissés ou endommagés ?

  • Reçus froissés ou endommagés : Un prétraitement avancé permet de récupérer le texte à partir d'images difficiles à lire.

Comment gérer les différents formats et mises en page des reçus ?

Les formats de reçus varient considérablement d'un détaillant à l'autre. IronOCR propose des approches 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;
    }
}
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;
    }
}
$vbLabelText   $csharpLabel

Quels sont les points clés à retenir concernant les API de numérisation de reçus ?

Les API de numérisation de reçus, comme IronOCR, offrent des solutions fiables pour automatiser l'extraction de données. Grâce à une technologie OCR avancée, les entreprises peuvent extraire automatiquement les noms des fournisseurs, les dates d'achat, les listes détaillées, les prix, les taxes et les totaux. Grâce à la prise en charge de plusieurs langues , devises et codes-barres , les entreprises peuvent simplifier la gestion des reçus, gagner du temps et prendre des décisions basées sur les données.

IronOCR fournit aux développeurs les outils nécessaires à une extraction de texte précise et efficace, permettant l'automatisation des tâches et une efficacité accrue. L' ensemble complet des fonctionnalités de la bibliothèque comprend la prise en charge de divers types de documents et des améliorations récentes telles qu'une réduction de 98 % de la mémoire .

En remplissant les conditions préalables et en intégrant IronOCR, vous pourrez bénéficier des avantages du traitement automatisé des reçus. La documentation , les exemples et les guides de dépannage de la bibliothèque garantissent une mise en œuvre sans accroc.

Pour plus d'informations, consultez la page relative aux licences ou explorez le tutoriel C# Tesseract OCR .

Questions Fréquemment Posées

Comment puis-je automatiser l'extraction de données de reçus en utilisant l'OCR en C# ?

Vous pouvez automatiser l'extraction de données de reçus en C# en utilisant IronOCR, qui vous permet d'extraire des détails clés comme les articles, les prix, les taxes, et les montants totaux à partir d'images de reçus avec une haute précision.

Quels sont les prérequis pour configurer un projet de numérisation de reçus en C# ?

Pour configurer un projet de numérisation de reçus en C#, vous avez besoin de Visual Studio, de connaissances de base en programmation C#, et de la bibliothèque IronOCR installée dans votre projet.

Comment puis-je installer la bibliothèque OCR en utilisant le gestionnaire de packages NuGet dans Visual Studio ?

Ouvrez Visual Studio et allez dans Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution, recherchez IronOCR et installez-le dans votre projet.

Puis-je installer la bibliothèque OCR en utilisant la ligne de commande de Visual Studio ?

Oui, vous pouvez installer IronOCR en ouvrant la console du gestionnaire de packages dans Visual Studio et en exécutant la commande : Install-Package IronOcr.

Comment puis-je extraire le texte d'un reçu entier en utilisant l'OCR ?

Pour extraire le texte d'un reçu entier, utilisez IronOCR pour effectuer une OCR sur l'image complète du reçu, puis affichez le texte extrait à l'aide du code en C#.

Quels avantages une API de numérisation de reçus fournit-elle ?

Une API de numérisation de reçus comme IronOCR automatise l'extraction de données, minimise les erreurs manuelles, améliore la productivité et fournit des informations sur les habitudes de dépense pour de meilleures décisions commerciales.

La bibliothèque OCR prend-elle en charge plusieurs langues et devises ?

Oui, IronOCR prend en charge plusieurs langues, devises et formats de reçus, ce qui le rend idéal pour des applications globales.

Quelle est la précision de la bibliothèque OCR dans l'extraction de texte à partir d'images ?

IronOCR assure une haute précision en utilisant des algorithmes OCR avancés, la vision par ordinateur, et des modèles d'apprentissage automatique, même dans des scénarios complexes.

Quels types de données peuvent être extraits des reçus en utilisant l'OCR ?

IronOCR peut extraire des données telles que les articles, les prix, les montants de taxes, les montants totaux et d'autres détails de reçu.

Comment l'automatisation de l'analyse des reçus peut-elle améliorer les processus commerciaux ?

L'automatisation de l'analyse des reçus avec IronOCR améliore les processus commerciaux en réduisant l'entrée manuelle, permettant une collecte de données précise et facilitant la prise de décisions basées sur les données.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Pendant qu'il poursuivait son diplôme, Kannapat est également devenu membre du laboratoire de robotique de véhicules, qui fait partie du département de bioproduction. En 2022, il a utilisé ses compé...
Lire la suite