Przejdź do treści stopki
KORZYSTANIE Z IRONOCR

Jak wyodrębniać dane z paragonów przy użyciu OCR w C#

IronOCR zapewnia potężną bibliotekę C# do wyodrębniania tekstu z obrazów paragonów przy użyciu zaawansowanej technologii OCR, umożliwiającą automatyczne śledzenie wydatków i analizę danych z obsługą 125 języków oraz wbudowanym przetwarzaniem wstępnym obrazów.

Paragony i automatyzacja

W dzisiejszym szybko zmieniającym się świecie paragony są niezbędne. Niezależnie od tego, czy robisz zakupy spożywcze, czy jesz na mieście, paragony pomagają śledzić wydatki i ułatwiają planowanie budżetu. Tymczasem sklepy wykorzystują skanery paragonów do analizy danych dotyczących sprzedaży, co pomaga im prognozować popyt i zarządzać zapasami za pomocą technik ekstrakcji danych.

Jednak paragony mogą być trudne do odczytania, a obliczenia nie zawsze są jasne. Ręczne wprowadzanie danych do budżetu jest żmudne i podatne na błędy, zwłaszcza w przypadku wielu pozycji. Utrata paragonu może sprawić, że Twoje miesięczne nadmierne wydatki staną się nagle zagadką. Tradycyjne paragony papierowe często charakteryzują się słabą jakością druku, blaknącym tuszem i degradacją papieru termicznego, co sprawia, że optymalizacja obrazu OCR ma kluczowe znaczenie dla dokładnego wyodrębniania danych.

Aby rozwiązać ten problem, aplikacje do zarządzania budżetem i finansami wykorzystują technologię OCR (optycznego rozpoznawania znaków). Dzięki skanowaniu paragonów do formatu cyfrowego technologia OCR minimalizuje błędy, automatyzuje wprowadzanie danych, śledzi wydatki i ujawnia wzorce zakupowe. Nowoczesne rozwiązania OCR obsługują różne formaty paragonów, od tradycyjnych wydruków z punktów sprzedaży po paragony cyfrowe z możliwością odczytu kodów BARCODE i kodów QR.

OCR wykorzystuje uczenie maszynowe do identyfikacji i wyodrębniania tekstu z obrazów. Proces obejmuje wstępne przetwarzanie obrazów, segmentację znaków, rozpoznawanie wzorców i walidację. Jednak OCR nie jest idealny — rozmycie lub smugi mogą prowadzić do błędów. Zaawansowane systemy wykorzystują techniki wizji komputerowej w celu zwiększenia dokładności. Wybór niezawodnej biblioteki OCR, która efektywnie przetwarza i optymalizuje odczyt, ma kluczowe znaczenie dla pomyślnej automatyzacji dokumentów.

Dłączego warto wybrać IronOCR do przetwarzania paragonów?

IronOCR to biblioteka C# oparta na dostosowanym silniku OCR Tesseract. W przeciwieństwie do standardowego Tesseractu, IronOCR zawiera optymalizacje Tesseract 5 oraz funkcje zaprojektowane specjalnie dla programistów .NET. Oto, co wyróżnia ten projekt:

  1. Kompatybilność krzyżowa: Działa z .NET 8, 7, 6, 5 oraz Framework 4.6.2+. Działa na systemach Windows, macOS, Azure i Linux. Płynnie wdraża się w Dockerze, AWS Lambda i Azure Functions.

  2. Elastyczność i skalowalność: Obsługuje formaty JPG, PNG i GIF. Integruje się z obiektami System.Drawing. Przetwarza wielostronicowe pliki TIFF i strumienie PDF. Obsługuje wielowątkowość w scenariuszach wymagających przetwarzania dużych ilości danych.

  3. Łatwość użytkowania i wsparcie: Dobrze udokumentówane, z solidnym API i wsparciem technicznym dostępnym 24 godziny na dobę, 5 dni w tygodniu. Oferuje proste operacje jednoliniowe oraz szczegółowe opcje konfiguracyjne. Zawiera obszerne przewodniki dotyczące rozwiązywania problemów.

  4. Obsługa wielu języków: Obsługuje 125 języków międzynarodowych. Skutecznie rozpoznaje nazwy produktów i ceny. Obsługuje wiele języków w jednym dokumencie. Obsługuje niestandardowe pliki danych szkoleniowych.

  5. Zaawansowane przetwarzanie obrazu: wbudowane filtry automatycznie poprawiają jakość paragonów. Obejmuje redukcję szumów, korekcję orientacji i optymalizację DPI. Kreator filtrów automatycznie określa optymalne ustawienia.

Jak wdrożyć OCR paragonów w mojej aplikacji?

Jakiej licencji potrzebuję, aby rozpocząć pracę?

Przed rozpoczęciem korzystania z IronOCR potrzebny jest klucz licencyjny. Skorzystaj z bezpłatnej wersji próbnej tutaj. Opcje licencyjne obejmują poziomy Lite, Plus i Professional dla zespołów o różnej wielkości i różnych wdrożeń. Zobacz dokumentację dotyczącą stosowania kluczy licencyjnych.

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

W przypadku aplikacji internetowych należy ustawić klucz licencyjny w pliku Web.config w celu scentralizowanej konfiguracji. System licencji obsługuje rozszerzenia i aktualizacje w miarę rozwoju firmy.

Jak odczytać paragon z supermarketu za pomocą IronOCR?

Przyjrzyjmy się wykorzystaniu IronOCR w aplikacji, która skanuje paragony z supermarketów za pomocą smartfonów, wyodrębniając nazwy produktów i ceny w celu przyznania punktów lojalnościowych na podstawie zakupów. Obejmuje to przechwytywanie obrazów, przetwarzanie wstępne, wykonywanie OCR oraz walidację danych przy użyciu wyników oceny pewności.

Jak wygląda typowy obraz paragonu?

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

Typowe wyzwania związane z paragonami to jakość papieru termicznego, różne czcionki, zatłoczone układy oraz uszkodzenia spowodowane zagięciami lub wilgocią. Faza wstępnego przetwarzania w IronOCR zajmuje się tymi kwestiami poprzez korekcję jakości obrazu i techniki korekcji kolorów.

Jakiego kodu C# potrzebuję do wyodrębnienia danych z paragonu?

using IronOcr;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class ReceiptScanner
    Shared Sub Main()
        ' Set the license key for IronOCR
        IronOcr.License.LicenseKey = "YOUR-KEY"

        ' Instantiate OCR engine with optimal settings for receipts
        Dim ocr As New IronTesseract()

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

        Using inputPhoto As New OcrInput()
            inputPhoto.LoadImage("supermarketexample.jpg")

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

            ' Perform OCR on the loaded image
            Dim result As OcrResult = ocr.Read(inputPhoto)

            ' Output the text extracted from the receipt
            Dim text As String = result.Text
            Console.WriteLine(text)

            ' Extract specific data using OcrResult features
            For Each line In result.Lines
                If line.Text.Contains("TOTAL") Then
                    Console.WriteLine($"Total Found: {line.Text}")
                End If
            Next
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Kod pokazuje:

  1. Zaimportuj bibliotekę IronOCR.
  2. Utwórz instancję silnika OCR (IronTesseract) z opcjami konfiguracyjnymi.
  3. Utwórz nowy obiekt OcrInput, aby załadować obraz paragonu.
  4. Zastosuj przetwarzanie wstępne w celu uzyskania większej dokładności.
  5. Użyj metody Read do wyodrębnienia tekstu.
  6. Przetwarzaj wyniki przy użyciu klasy OcrResult dla danych ustrukturyzowanych.

W przypadku różnych formatów paragonów IronOCR obsługuje odczytywanie zdjęć, zrzutów ekranu i zeskanowanych dokumentów. Może również wyodrębniać dane tabelaryczne ze strukturalnych paragonów.

Jak mogę zweryfikować dokładność wyodrębnionych danych?

Aby zapewnić spójność, sprawdź poziom pewności wyodrębnionych danych. IronOCR zapewnia kompleksowe wskaźniki pewności na wielu poziomach:

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

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

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

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

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

' Check confidence for individual elements
For Each word In result.Words
    If word.Confidence < 80 Then
        Console.WriteLine($"Low confidence word: '{word.Text}' ({word.Confidence}%)")
    End If
Next

' Validate numeric values
For Each block In result.Blocks
    If block.Text.Contains("$") Then
        Console.WriteLine($"Price detected: {block.Text} (Confidence: {block.Confidence}%)")
    End If
Next
$vbLabelText   $csharpLabel

Właściwość Confidence mierzy dokładność statystyczną w skali od 0 (niska) do 100 (wysoka). Skorzystaj z tych poziomów pewności, aby określić, jak postępować z danymi. W systemach produkcyjnych należy wdrożyć śledzenie postępów w celu monitorowania operacji OCR.

Jak poprawić dokładność OCR dzięki wstępnemu przetwarzaniu obrazów?

Przed przetwarzaniem użyj tych metod, aby przygotować obrazy i uzyskać lepsze wyniki:

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

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

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

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

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

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

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

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

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

Te etapy przetwarzania wstępnego zwiększają dokładność ekstrakcji. Kreator filtrów automatycznie wyszukuje najlepszą kombinację filtrów dla Twoich paragonów. W przypadku paragonów z kolorowym tłem niezbędna jest korekcja kolorów.

W bardziej zaawansowanych scenariuszach może być konieczne zastosowanie OCR dostosowanego do regionu, aby skupić się na sumach lub informacjach podatkowych. W przypadku paragonów z kodami kreskowymi należy umożliwić odczyt kodów kreskowych wraz z ekstrakcją tekstu.

Jakie są główne zalety korzystania z IronOCR do przetwarzania paragonów?

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

Technologia OCR paragonów pomaga firmom i osobom prywatnym w planowaniu budżetu, zapobieganiu oszustwom i automatycznym gromadzeniu danych. IronOCR zapewnia dokładność, szybkość i łatwą integrację z istniejącymi platformami, dzięki czemu idealnie nadaje się do rozwiązań do skanowania paragonów.

Główne zalety to:

  1. Optymalizacja wydajności: wielowątkowość i dostrajanie prędkości pozwalają na wydajne przetwarzanie tysięcy paragonów.

  2. Elastyczność eksportu: Konwertuj paragony na pliki PDF z możliwością wyszukiwania lub HTML z funkcją hOCR w celu integracji z internetem.

  3. Funkcje dla Enterprise: Wdrażaj na serwerach Azure, Docker i Linux, aby zapewnić skalowalność.

  4. Rozpoznawanie specjalistyczne: odczytywanie odręcznych notatek na paragonach i wyodrębnianie struktur tabel.

  5. Narzędzia do debugowania: Funkcje podświetlania tekstu i eksportu wyników ułatwiają rozwiązywanie problemów.

Wypróbuj Licencję Trial IronOCR, aby poznać jego możliwości. Kompleksowa dokumentacja i przykłady kodu pomogą Ci szybko wdrożyć OCR dla paragonów.

Często Zadawane Pytania

W jaki sposób można wykorzystać technologię OCR do automatyzacji przetwarzania paragonów z supermarketów?

Technologia OCR pozwala zautomatyzować przetwarzanie paragonów ze sklepów spożywczych poprzez konwersję zeskanowanych paragonów na dane cyfrowe. Dzięki IronOCR paragony mogą być odczytywane, a tekst wyodrębniany automatycznie, co ogranicza konieczność ręcznego wprowadzania danych i minimalizuje ryzyko błędu ludzkiego.

Jakie zalety oferuje IronOCR w zakresie przetwarzania paragonów ze supermarketów?

IronOCR oferuje kilka zalet w zakresie przetwarzania paragonów ze supermarketów, w tym kompatybilność międzyplatformową, obsługę wielu formatów obrazów, solidny interfejs API ułatwiający integrację oraz możliwość przetwarzania do 125 języków, co czyni go idealnym rozwiązaniem dla paragonów międzynarodowych.

Jak zintegrować IronOCR z aplikacją C# w celu odczytu paragonów ze supermarketu?

Aby zintegrować IronOCR z aplikacją C#, należy uzyskać klucz licencyjny, zaimportować bibliotekę IronOCR i użyć silnika IronTesseract do odczytu i wyodrębniania tekstu z obrazów paragonów z supermarketu.

Jakie techniki przetwarzania wstępnego poprawiają dokładność OCR podczas skanowania paragonów?

IronOCR oferuje techniki przetwarzania wstępnego, takie jak DeNoise i ToGrayScale, które zwiększają dokładność OCR. Techniki te pomagają usunąć szumy z obrazów i przekształcić je w skalę szarości, co usprawnia wyodrębnianie tekstu z paragonów.

Dlaczego testy pewności są ważne w OCR i jak się je stosuje?

Testowanie pewności w IronOCR jest ważne, ponieważ mierzy dokładność wyodrębnionych danych, a wartości mieszczą się w przedziale od 0 (niska) do 1 (wysoka). Pomaga to użytkownikom ocenić wiarygodność wyników OCR i podejmować decyzje dotyczące przetwarzania danych.

Czy IronOCR radzi sobie z wielojęzycznymi paragonami ze supermarketów?

Tak, IronOCR obsługuje przetwarzanie OCR w maksymalnie 125 językach, dzięki czemu jest w stanie efektywnie obsługiwać wielojęzyczne paragony z supermarketów.

Czy dla programistów zainteresowanych IronOCR dostępna jest wersja próbna?

Tak, dla programistów dostępna jest bezpłatna wersja próbna IronOCR, która pozwala im zapoznać się z jego funkcjami i możliwościami przed podjęciem decyzji o zakupie.

Jakie platformy obsługuje IronOCR do skanowania paragonów?

IronOCR jest kompatybilny z platformami .NET, w tym .NET 8, 7, 6, 5 oraz Framework 4.6.2 i nowszymi, i obsługuje środowiska Windows, macOS, Azure oraz Linux.

Dlaczego IronOCR nadaje się do integracji skanowania paragonów z aplikacjami?

IronOCR nadaje się do integracji skanowania paragonów z aplikacjami ze względu na wysoką dokładność, łatwość obsługi, obsługę wielu platform oraz możliwość płynnego obsługiwania różnych formatów wejściowych i języków.

Kannaopat Udonpant
Inżynier oprogramowania
Zanim stał się inżynierem oprogramowania, Kannapat ukończył doktorat z zasobów środowiskowych na Uniwersytecie Hokkaido w Japonii. W czasie studiowania, Kannapat również został członkiem Laboratorium Robotyki Pojazdów, które jest częścią Wydziału Inżynierii Bioprodukcji. W 2022 roku wykorzystał swoje umiejętności w ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie