Zum Fußzeileninhalt springen
VERWENDUNG VON IRONOCR

API zum Scannen von Belegen: Daten aus Belegen mit C# und IronOCR extrahieren

Belegscanning-APIs automatisieren die Datenextraktion von Belegen mithilfe von OCR-Technologie, wodurch manuelle Eingabefehler deutlich reduziert und die Verarbeitung beschleunigt wird. Dieser Leitfaden zeigt, wie man mit IronOCR in C# Lieferantennamen, Datum, Artikel, Preise und Summen präzise aus Belegbildern extrahiert, mit integrierter Bildvorverarbeitung und Unterstützung für mehrere Formate.

Warum IronOCR zum Scannen von Belegen wählen?

IronOCR ist eine flexible OCR-Bibliothek , die eine zuverlässige Textextraktion aus gescannten Dokumenten, Bildern und PDFs bietet. Mit fortschrittlichen Algorithmen, Computer Vision und Modellen des maschinellen Lernens gewährleistet IronOCR auch in anspruchsvollen Szenarien eine hohe Genauigkeit. Die Bibliothek unterstützt mehrere Sprachen und Schriftarten und eignet sich daher für globale Anwendungen. Durch die Integration von IronOCR in Ihre Anwendungen können Sie die Dateneingabe und Textanalyse automatisieren und so die Produktivität steigern.

Wie extrahiert IronOCR Text aus Belegbildern?

IronOCR extrahiert Text aus Dokumenten, Fotos, Screenshots und Live-Kamerabildern als JSON-Antworten. Mithilfe ausgefeilter Algorithmen und maschinellem Lernen analysiert IronOCR Bilddaten , erkennt Zeichen und wandelt sie in maschinenlesbaren Text um. Die Bibliothek nutzt die Tesseract 5-Technologie, die durch firmeneigene Verbesserungen für überragende Genauigkeit optimiert wurde.

Warum eignet sich IronOCR hervorragend für die Belegverarbeitung?

IronOCR zeichnet sich durch seine Fähigkeit aus , Scans mit geringer Qualität , unterschiedliche Belegformate und verschiedene Ausrichtungen problemlos zu verarbeiten. Eingebaute Bildvorverarbeitungsfilter verbessern automatisch die Bildqualität vor der Verarbeitung und gewährleisten so optimale Ergebnisse auch bei zerknitterten oder verblassten Belegen.

Was benötige ich zur Nutzung von IronOCR?

Bevor Sie mit IronOCR arbeiten, stellen Sie sicher, dass folgende Voraussetzungen erfüllt sind:

Welche Entwicklungsumgebungen werden unterstützt?

  1. Entwicklungsumgebung : Installieren Sie eine geeignete IDE wie Visual Studio. IronOCR unterstützt Windows , Linux , macOS , Azure und AWS .

Welche Programmierkenntnisse sind erforderlich?

  1. C#-Kenntnisse : Grundlegende C#-Kenntnisse helfen Ihnen, Codebeispiele anzupassen. IronOCR bietet einfache Beispiele und eine API-Dokumentation .

Welche Softwareabhängigkeiten sind notwendig?

  1. IronOCR-Installation : Installation über den NuGet-Paketmanager . Plattformspezifische Abhängigkeiten können erforderlich sein.

Ist ein Lizenzschlüssel erforderlich?

  1. Lizenzschlüssel (optional) : Kostenlose Testversion verfügbar; Für die Nutzung in Produktionsprozessen ist eine Lizenz erforderlich.

Wie erstelle ich ein neues Visual Studio-Projekt zum Scannen von Belegen?

Wie starte ich ein neues Projekt in Visual Studio?

Öffnen Sie Visual Studio und gehen Sie zu Dateien, klicken Sie dann auf Neu und dann auf Projekt.

Visual Studio IDE mit geöffnetem Menü "Datei", in dem die Option "Neu > Projekt" hervorgehoben ist, und dem Code-Editor, der C#-Code zum Laden einer Excel-Arbeitsmappe anzeigt. Neues Projektbild

Welche Projektvorlage soll ich wählen?

Wählen Sie "Konsolenanwendung" und klicken Sie auf "Weiter". Diese Vorlage eignet sich ideal zum Erlernen von IronOCR vor der Implementierung in Webanwendungen.

Der Dialog "Neues Projekt erstellen" von Visual Studio zeigt die ausgewählte Konsolenanwendungsvorlage mit Plattformoptionen für Windows, Linux und macOS. Konsolenanwendung

Wie soll ich mein Projekt zur Entwicklung eines Belegscanners nennen?

Geben Sie den Projektnamen und den Projektort ein und klicken Sie dann auf Weiter. Wählen Sie einen aussagekräftigen Namen wie " ReceiptScanner API".

Visual Studio öffnet die neue Projektkonfigurationsseite zum Erstellen einer Konsolenanwendung namens "IronOCR" mit der ausgewählten Programmiersprache C# und zeigt die Projektmappeneinstellungen an. Projektkonfiguration

Welche .NET Framework-Version soll ich auswählen?

Wählen Sie .NET 5.0 oder höher für optimale Kompatibilität und klicken Sie dann auf Erstellen.

Der Dialog "Zusätzliche Informationen" von Visual Studio zeigt die Konfiguration der Konsolenanwendung mit .NET 5.0 als Zielframework und Plattformoptionen für Linux, macOS, Windows und Konsole an. Ziel-Framework

Wie installiere ich IronOCR in meinem Projekt?

Es stehen zwei einfache Installationsmethoden zur Verfügung:

Wie verwende ich die NuGet-Paketmanager-Methode?

Gehen Sie zu Tools > NuGet-Paket-Manager > NuGet-Pakete für die Projektmappe verwalten

! Dialogfeld "Einstellungen für den NuGet-Paket-Manager" in Visual Studio mit Konfiguration der Paketquellen, neben einer C#-Projektstruktur im Projektmappen-Explorer NuGet-Paket-Manager

Suchen Sie nach IronOCR und installieren Sie das Paket. Für nicht-englische Belege installieren Sie sprachspezifische Pakete .

Der NuGet-Paketmanager in Visual Studio zeigt die installierten IronOCR-Pakete an, darunter die Hauptbibliothek und sprachspezifische OCR-Pakete für Arabisch, Hebräisch und Spanisch. IronOCR

Wie installiere ich über die Kommandozeile?

  1. Gehen Sie zu "Tools" > "NuGet-Paket-Manager" > "Paket-Manager-Konsole" .
  2. Geben Sie diesen Befehl ein:

    Install-Package IronOcr

    Das Fenster der Visual Studio-Paket-Manager-Konsole zeigt an, dass der NuGet-Befehl 'PM> Install-Package IronOCR' für ein Projekt namens 'Create PDF' ausgeführt wird. Package Manager Console

Wie kann ich mit IronOCR schnell Belegdaten extrahieren?

Belegdaten mit nur wenigen Codezeilen extrahieren:

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronOCR mit dem NuGet-Paketmanager.

    PM > Install-Package IronOcr

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    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. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronOCR in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Wie extrahiere ich strukturierte Daten aus Belegbildern?

IronOCR extrahiert Positionen, Preise, Steuern und Summen aus verschiedenen Dokumenttypen. Die Bibliothek unterstützt PDFs , mehrseitige TIFFs und verschiedene Bildformate .

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

Welche Techniken verbessern die Genauigkeit beim Scannen von Kassenbons?

Wichtige Techniken für das korrekte Scannen von Belegen:

Visual Studio-Debugkonsole zeigt extrahierte Rechnungsdaten aus einer PDF-Datei an, einschließlich Artikel mit Beschreibungen, Mengen, Preisen, Steuern und Summen. Ausgabe

Wie kann ich den gesamten Inhalt des Kassenbons extrahieren?

Extrahieren Sie den vollständigen Beleginhalt unter Beibehaltung der Formatierung:

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

Visual Studio-Debugkonsole zeigt extrahierte Rechnungsdaten aus einer PDF-Datei an, einschließlich Artikel mit Beschreibungen, Mengen, Preisen, Steuern und Summen. Scan-Empfangs-API-Ausgabe

Welche erweiterten Funktionen verbessern das Scannen von Belegen?

IronOCR bietet mehrere fortschrittliche Funktionen, die die Genauigkeit des Belegscannens deutlich verbessern:

Welche Sprachen unterstützt IronOCR?

  1. Mehrsprachige Unterstützung : Belege in über 125 Sprachen oder in mehreren Sprachen in einem Dokument verarbeiten.

Kann IronOCR Barcodes auf Kassenbons lesen?

  1. Barcode-Lesung : Automatisches Erkennen und Lesen von Barcodes und QR-Codes .

Wie hilft Computer Vision bei der Belegverarbeitung?

  1. Computer Vision : Nutzen Sie fortschrittliche Texterkennung , um Textbereiche vor der OCR zu lokalisieren.

Kann ich benutzerdefinierte Modelle für spezielle Belegformate trainieren?

  1. Kundenspezifisches Training : Schulung von benutzerdefinierten Schriftarten für spezielle Belegformate.

Wie kann ich die Leistung bei der Massenverarbeitung verbessern?

  1. Leistungsoptimierung : Implementierung von Multithreading und asynchroner Verarbeitung für Massenoperationen.
// 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

Wie gehe ich mit häufigen Problemen beim Scannen von Kassenbons um?

Das Scannen von Belegen stellt besondere Herausforderungen dar, bei deren Bewältigung IronOCR hilft:

Wie gehe ich mit qualitativ minderwertigen Belegbildern um?

  • Bilder von geringer Qualität : Verwenden Sie den Filterassistenten , um automatisch optimale Vorverarbeitungseinstellungen zu finden.

Was ist mit schiefen oder gedrehten Kassenbons?

Wie bearbeite ich verblasste oder kontrastarme Kassenbons?

Kann IronOCR auch zerknitterte oder beschädigte Kassenbons verarbeiten?

Wie verwalte ich unterschiedliche Belegformate und -layouts?

Die Formate der Kassenbons variieren stark zwischen den Einzelhändlern. IronOCR bietet flexible Ansätze:

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

Welche wichtigen Punkte sollte ich mir bei APIs zum Scannen von Belegen merken?

APIs zur Belegscannung wie IronOCR bieten zuverlässige Lösungen zur automatisierten Datenextraktion von Belegen. Mithilfe fortschrittlicher OCR-Technologie können Unternehmen automatisch Lieferantennamen, Kaufdaten, Einzelposten, Preise, Steuern und Summen extrahieren. Dank der Unterstützung mehrerer Sprachen , Währungen und Barcodes können Unternehmen die Belegverwaltung vereinfachen, Zeit sparen und datengestützte Entscheidungen treffen.

IronOCR bietet Entwicklern die Werkzeuge, die sie für eine genaue und effiziente Textextraktion benötigen, und ermöglicht so die Automatisierung von Aufgaben und eine verbesserte Effizienz. Der vollständige Funktionsumfang der Bibliothek umfasst die Unterstützung verschiedener Dokumenttypen und aktuelle Verbesserungen wie eine Speicherreduzierung von 98 % .

Durch die Erfüllung der Voraussetzungen und die Integration von IronOCR können Sie die Vorteile der automatisierten Belegverarbeitung nutzen. Die Dokumentation , die Beispiele und die Anleitungen zur Fehlerbehebung der Bibliothek gewährleisten eine reibungslose Implementierung.

Weitere Informationen finden Sie auf der Lizenzseite oder im C# Tesseract OCR-Tutorial .

Häufig gestellte Fragen

Wie kann ich die Datenextraktion von Quittungen in C# mithilfe von OCR automatisieren?

Sie können die Datenextraktion von Quittungen in C# automatisieren, indem Sie IronOCR verwenden, das es Ihnen ermöglicht, wichtige Details wie Posten, Preise, Steuern und Gesamtsummen aus Quittungsbildern mit hoher Genauigkeit zu extrahieren.

Was sind die Voraussetzungen für die Einrichtung eines Projekts zur Quittungserfassung in C#?

Um ein Projekt zur Quittungserfassung in C# einzurichten, benötigen Sie Visual Studio, grundlegende C#-Programmierkenntnisse und die in Ihrem Projekt installierte IronOCR-Bibliothek.

Wie installiere ich die OCR-Bibliothek mit dem NuGet-Paketmanager in Visual Studio?

Öffnen Sie Visual Studio und gehen Sie zu Extras > NuGet-Paketmanager > NuGet-Pakete für die Lösung verwalten, suchen Sie IronOCR und installieren Sie es in Ihrem Projekt.

Kann ich die OCR-Bibliothek mit der Visual Studio-Befehlszeile installieren?

Ja, Sie können IronOCR installieren, indem Sie die Paket-Manager-Konsole in Visual Studio öffnen und den Befehl Install-Package IronOcr ausführen.

Wie extrahiere ich Text aus einer gesamten Quittung mithilfe von OCR?

Um Text aus einer gesamten Quittung zu extrahieren, verwenden Sie IronOCR, um OCR auf dem vollständigen Quittungsbild durchzuführen, und geben Sie den extrahierten Text mit C#-Code aus.

Welche Vorteile bietet eine Quittungs-Scan-API?

Eine Quittungs-Scan-API wie IronOCR automatisiert die Datenerfassung, minimiert manuelle Fehler, steigert die Produktivität und bietet Einblicke in das Ausgabeverhalten für bessere Geschäftsentscheidungen.

Unterstützt die OCR-Bibliothek mehrere Sprachen und Währungen?

Ja, IronOCR unterstützt mehrere Sprachen, Währungen und Quittungsformate, was es ideal für globale Anwendungen macht.

Wie genau ist die OCR-Bibliothek beim Extrahieren von Text aus Bildern?

IronOCR gewährleistet hohe Genauigkeit durch die Verwendung fortschrittlicher OCR-Algorithmen, Computer Vision und maschineller Lernmodelle, selbst in herausfordernden Szenarien.

Welche Arten von Daten können aus Quittungen mithilfe von OCR extrahiert werden?

IronOCR kann Daten wie Posten, Preise, Steuerbeträge, Gesamtsummen und andere Details von Quittungen extrahieren.

Wie kann die Automatisierung der Quittungsbearbeitung Geschäftsprozesse verbessern?

Die Automatisierung der Quittungsbearbeitung mit IronOCR verbessert Geschäftsprozesse, indem manuelle Eingaben reduziert, eine genaue Datenerfassung ermöglicht und datenbasierte Entscheidungen unterstützt.

Kannaopat Udonpant
Software Ingenieur
Bevor er Software-Ingenieur wurde, absolvierte Kannapat ein PhD in Umweltressourcen an der Hokkaido University in Japan. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Fakultät für Bioproduktionstechnik ist. Im Jahr 2022 nutzte er seine C#-Kenntnisse, um dem Engineering-Team von Iron Software ...
Weiterlesen