IRONSOFTWAREHOME
KORZYSTANIE Z IRONOCR

API do skanowania paragonów: Wyodrębnianie danych z paragonów przy użyciu C# i IronOCR

Kannaopat Udonpant
Kannapat Udonpant
Updated: 8 maja 2026

Interfejsy API do skanowania paragonów automatyzują pobieranie danych z paragonów przy użyciu technologii OCR, co znacznie ogranicza błędy związane z ręcznym wprowadzaniem danych i przyspiesza przetwarzanie. Ten przewodnik pokazuje, jak używać IronOCR w języku C# do dokładnego wyodrębniania nazw dostawców, dat, pozycji, cen i sum z obrazów paragonów, z wbudowanym przetwarzaniem wstępnym obrazów i obsługą wielu formatów.

Dlaczego warto wybrać IronOCR do skanowania paragonów?

IronOCR to elastyczna biblioteka OCR, która pozwala na niezawodne wyodrębnianie tekstu ze skanowanych dokumentów, obrazów i plików PDF. Dzięki zaawansowanym algorytmom, wizji komputerowej i modelom uczenia maszynowego IronOCR zapewnia wysoką dokładność nawet w trudnych sytuacjach. Biblioteka obsługuje wiele języków i stylów czcionek, dzięki czemu nadaje się do zastosowań globalnych. Włączając IronOCR do swoich aplikacji, możesz zautomatyzować wprowadzanie danych i analizę tekstu, zwiększając produktywność.

W jaki sposób IronOCR wyodrębnia tekst z obrazów paragonów?

IronOCR pobiera tekst z dokumentów, zdjęć, zrzutów ekranu i obrazu z kamery na żywo w postaci odpowiedzi JSON. Wykorzystując zaawansowane algorytmy i uczenie maszynowe, IronOCR analizuje dane obrazówe, rozpoznaje znaki i przekształca je w tekst nadający się do odczytu maszynowego. Biblioteka wykorzystuje technologię Tesseract 5 wzbogaconą o autorskie ulepszenia zapewniające najwyższą dokładność.

Dlaczego IronOCR doskonale nadaje się do przetwarzania paragonów?

IronOCR doskonale radzi sobie ze skanami o niskiej jakości, różnymi formatami paragonów i różnymi orientacjami. Wbudowane filtry przetwarzania wstępnego obrazów automatycznie poprawiają jakość obrazu przed przetwarzaniem, zapewniając optymalne wyniki nawet w przypadku pogniecionych lub wyblakłych paragonów.

Czego potrzebuję, aby korzystać z IronOCR?

Przed rozpoczęciem pracy z IronOCR upewnij się, że spełnione są następujące warunki wstępne:

Jakie środowiska programistyczne są obsługiwane?

  1. Środowisko programistyczne: Zainstaluj odpowiednie środowisko IDE, takie jak Visual Studio. IronOCR obsługuje systemy Windows, Linux, macOS, Azure i AWS.

Jakie umiejętności programistyczne są wymagane?

  1. Znajomość języka C#: Podstawowa znajomość języka C# pomaga w modyfikowaniu przykładów kodu. IronOCR udostępnia proste przykłady i dokumentację API.

Jakie zależności oprogramowania są niezbędne?

  1. Instalacja IronOCR: Zainstaluj za pomocą menedżera pakietów NuGet. Mogą być wymagane zależności specyficzne dla platformy.

Czy wymagany jest klucz licencyjny?

  1. Klucz licencyjny (opcjonalnie): Dostępna bezpłatna wersja próbna; Korzystanie w środowisku produkcyjnym wymaga licencji.

Jak utworzyć nowy projekt Visual Studio do skanowania paragonów?

Jak rozpocząć nowy projekt w Visual Studio?

Otwórz program Visual Studio, przejdź do menu Pliki, najedź kursorem na opcję Nowy i kliknij Projekt.

Interfejs IDE Visual Studio z rozwiniętym menu Plik pokazującym wyróżnioną opcję 'Nowy > Projekt' oraz edytor kodu wyświetlający kod C# do ładowania skoroszytu Excel Nowy obraz projektu

Który szablon projektu wybrać?

Wybierz opcję Aplikacja konsolowa i kliknij Dalej. Ten szablon jest idealny do nauki obsługi IronOCR przed wdrożeniem go w aplikacjach internetowych.

Okno dialogowe 'Utwórz nowy projekt' w Visual Studio pokazujące wybrany szablon aplikacji konsolowej z opcjami platform dla Windows, Linux i macOS Aplikacja konsolowa

Jak nazwać mój projekt skanera paragonów?

Wpisz nazwę projektu i lokalizację, a następnie kliknij Dalej. Wybierz opisową nazwę, na przykład 'ReceiptScannerAPI'.

Ekran konfiguracji nowego projektu w Visual Studio do tworzenia aplikacji konsolowej o nazwie 'IronOCR' z wybranym językiem C# i wyświetlonymi ustawieniami rozwiązania Konfiguracja projektu

Którą wersję .NET Framework należy wybrać?

Wybierz .NET 5.0 lub nowszą wersję, aby uzyskać optymalną kompatybilność, a następnie kliknij Utwórz.

Dialog 'Dodatkowe informacje' w Visual Studio pokazujący konfigurację aplikacji konsolowej z wybranym jako celowym środowiskiem .NET 5.0 i opcjami platform Linux, macOS, Windows i konsoli Docelowa platforma

Jak zainstalować IronOCR w moim projekcie?

Dostępne są dwie proste metody instalacji:

Jak korzystać z menedżera pakietów NuGet?

Przejdź do Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania

Dialog ustawień Menedżera pakietów NuGet w Visual Studio z konfiguracją źródeł pakietów obok struktury projektu C# w eksploratorze rozwiązań Menedżer pakietów NuGet

Wyszukaj IronOCR i zainstaluj pakiet. W przypadku paragonów w językach innych niż angielski należy zainstalować pakiety dla danego języka.

Menedżer pakietów NuGet w Visual Studio wyświetlający zainstalowane pakiety IronOCR, w tym główną bibliotekę i specyficzne językowo pakiety OCR dla arabskiego, hebrajskiego i hiszpańskiego IronOCR

Jak korzystać z instalacji z wiersza poleceń?

  1. Przejdź do Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów

  2. Wpisz następujące polecenie:

    PM > Install-Package IronOcr

    Okno konsoli menedżera pakietów w Visual Studio wyświetlające polecenie NuGet 'PM> Install-Package IronOcr' wykonywane dla projektu o nazwie 'Utwórz PDF' Konsola menedżera pakietów

Jak szybko wyodrębnić dane z paragonu za pomocą IronOCR?

Wyodrębnij dane z paragonu za pomocą zaledwie kilku wierszy kodu:

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Skopiuj i uruchom ten fragment kodu.

    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. 3Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
    arrow pointer

Jak wyodrębnić dane strukturalne z obrazów paragonów?

IronOCR wyodrębnia pozycje, ceny, podatki i sumy z różnych typów dokumentów. Biblioteka IronOCR obsługuje pliki PDF, wielostronicowe pliki TIFF oraz różne formaty obrazów.

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

Jakie techniki poprawiają dokładność skanowania paragonów?

Kluczowe techniki dokładnego skanowania paragonów:

Konsola debugowania Visual Studio wyświetlająca wyodrębnione dane z faktury z pliku PDF, pokazujące pozycje z opisami, ilościami, cenami, podatkami i sumami Wynik

Jak wyodrębnić całą treść paragonu?

Wyodrębnij pełną treść paragonu z zachowaniem formatowania:

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

Konsola debugowania Visual Studio wyświetlająca wyodrębnione dane z faktury z pliku PDF, pokazujące pozycje z opisami, ilościami, cenami, podatkami i sumami Wynik działania API skanowania paragonów

Jakie zaawansowane funkcje usprawniają skanowanie paragonów?

IronOCR oferuje kilka zaawansowanych funkcji, które znacznie poprawiają dokładność skanowania paragonów:

Jakie języki obsługuje IronOCR?

  1. Obsługa wielu języków: Przetwarzaj dokumenty w ponad 125 językach lub w wielu językach w jednym dokumencie.

Czy IronOCR potrafi odczytywać BarCodes na paragonach?

  1. Odczytywanie kodów BarCode: Automatyczne wykrywanie i odczytywanie kodów BarCode oraz kodów QR.

W jaki sposób wizja komputerowa pomaga w przetwarzaniu paragonów?

  1. Wizja komputerowa: Wykorzystaj zaawansowane wykrywanie tekstu do lokalizowania obszarów tekstowych przed OCR.

Czy mogę trenować niestandardowe modele dla unikalnych formatów paragonów?

  1. Szkolenie niestandardowe: Trenuj niestandardowe czcionki dla specjalistycznych formatów paragonów.

Jak mogę poprawić wydajność przetwarzania zbiorczego?

  1. Optymalizacja wydajności: Wdrożenie wielowątkowości i przetwarzania asynchronicznego dla operacji zbiorczych.
// 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);
        }
    }
}

Jak radzić sobie z typowymi wyzwaniami związanymi ze skanowaniem paragonów?

Skanowanie paragonów wiąże się z wyjątkowymi wyzwaniami, w których rozwiązaniu pomaga IronOCR:

Jak radzić sobie z niską jakością zdjęć paragonów?

  • Obrazy niskiej jakości: Użyj Kreatora filtrów, aby automatycznie znaleźć optymalne ustawienia przetwarzania wstępnego.

A co z przekrzywionymi lub obróconymi paragonami?

Jak przetwarzać wyblakłe lub mało kontrastowe paragony?

Czy IronOCR radzi sobie z pogniecionymi lub uszkodzonymi paragonami?

Jak zarządzać różnymi formatami i układami paragonów?

Formaty paragonów różnią się znacznie w zależności od sprzedawcy. IronOCR oferuje elastyczne podejście:

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;
    }
}

O czym należy pamiętać w przypadku interfejsów API do skanowania paragonów?

Interfejsy API do skanowania paragonów, takie jak IronOCR, oferują niezawodne rozwiązania do automatycznego pozyskiwania danych z paragonów. Dzięki zaawansowanej technologii OCR firmy mogą automatycznie wyodrębniać nazwy dostawców, daty zakupów, szczegółowe listy produktów, ceny, podatki i sumy. Dzięki obsłudze wielu języków, walut i BARCODE firmy mogą uprościć zarządzanie paragonami, zaoszczędzić czas i podejmować decyzje oparte na danych.

IronOCR zapewnia programistom narzędzia niezbędne do dokładnego i wydajnego pozyskiwania tekstu, umożliwiając automatyzację zadań i zwiększenie wydajności. Pełen zestaw funkcji biblioteki obejmuje obsługę różnych typów dokumentów oraz najnowsze ulepszenia, takie jak 98% redukcja zużycia pamięci.

Spełniając wymagania wstępne i integrując IronOCR, można odkryć zalety automatycznego przetwarzania paragonów. Dokumentacja biblioteki, przykłady i przewodniki dotyczące rozwiązywania problemów zapewniają płynne wdrożenie.

Aby uzyskać więcej informacji, odwiedź stronę dotyczącą licencji lub zapoznaj się z samouczkiem dotyczącym OCR Tesseract w języku C#.

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta