
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.
Dlaczego 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:
-
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.
-
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.
-
Łatwość użytkowania i wsparcie: Dobrze udokumentowane, 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.
-
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.
-
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"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?

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ę, aby wyodrębnić dane z paragonów?
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 ClassKod pokazuje:
- Zaimportuj bibliotekę IronOCR.
- Utworz instancje silnika OCR (
IronTesseract) z opcje konfiguracyjna. - Utwórz nowy obiekt OcrInput, aby załadować obraz paragonu.
- Zastosuj przetwarzanie wstępne w celu uzyskania większej dokładności.
- Uzyj metody
Readdo wyodrebnienia tekstu. - 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}%)");
}
}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
NextWlasciwosc Confidence mierzy statystyczna dokladnosc 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 backgroundnetTe 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?
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:
-
Optymalizacja wydajności: wielowątkowość i dostrajanie prędkości pozwalają na wydajne przetwarzanie tysięcy paragonów.
-
Elastyczność eksportu: Konwertuj paragony na pliki PDF z możliwością wyszukiwania lub HTML z funkcją hOCR w celu integracji z internetem.
-
Funkcje dla Enterprise: Wdrażaj na serwerach Azure, Docker i Linux, aby zapewnić skalowalność.
-
Rozpoznawanie specjalistyczne: odczytywanie odręcznych notatek na paragonach i wyodrębnianie struktur tabel.
-
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.

Powiązane artykuły

