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.

OR
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 Iron Suite
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja 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