Zbuduj API OCR do paragonów w C#, które faktycznie wyodrębnia przydatne dane
Ręczne wprowadzanie danych z paragonów to rodzaj żmudnej, podatnej na błędy pracy, która sprawia, że programiści zaczynają kwestionować swoje wybory zawodowe. API OCR dla paragonów eliminuje ręczne wprowadzanie danych, używając optycznego rozpoznawania znaków do automatycznego wyodrębniania tekstu z obrazów paragonów i konwertowania go na strukturalne dane, które aplikacje mogą rzeczywiście wykorzystać. Niezależnie od tego, czy celem jest automatyzacja zarządzania wydatkami, integracja z oprogramowaniem księgowym, czy zasilanie programów lojalnościowych, solidne rozwiązanie OCR do paragonów wykonuje ciężką pracę.
W tym artykule pokażemy, jak można zbudować API OCR do paragonów w C# używając IronOCR, biblioteki .NET, która działa całkowicie lokalnie, przetwarza obrazy paragonów na miejscu i nie wymaga przesyłania wrażliwych danych paragonów do zewnętrznych usług chmurowych. Oznacza to pełną ochronę danych bez poświęcania dokładności.
Rozpocznij bezpłatnie z IronOCR, aby śledzić poniższe przykłady.
Jak działa technologia OCR do paragonów?

OCR do paragonów (optyczne rozpoznawanie znaków OCR) automatyzuje wyodrębnianie danych z paragonów, zamieniając drukowany tekst na obrazie paragonu w tekst możliwy do odczytu przez maszynę. Pod powierzchnią, technologie AI i modele głębokiego uczenia analizują wizualny układ paragonu, identyfikują obszary tekstu i rozpoznają znaki z niespotykaną dokładnością, często osiągając 99% lub więcej na czystych skanach.
Nowoczesne API OCR do paragonów używają uczenia maszynowego do analizowania kluczowych informacji, takich jak nazwa sprzedawcy, data, pojedyncze pozycje, sumy i kwoty podatków z różnych formatów i układów paragonów. Techniki głębokiego uczenia pozwalają tym modelom na ciągłą poprawę poprzez uczenie się na dużych zbiorach danych, dostosowując się do nowych projektów paragonów i języków w miarę upływu czasu. Wynikiem jest szybkie, niezawodne wyodrębnianie danych z paragonów, które zastępuje powolne, podatne na błędy ręczne wprowadzanie w różnych branżach.
Technologia skanowania paragonów może obsługiwać wiele języków, przetwarzać dokumenty w formatach takich jak JPG, PNG i PDF oraz dostarczać wyniki w standardowym formacie, takim jak ustrukturyzowany JSON, czyniąc prostą integrację z istniejącymi systemami.
Jak można wyodrębnić dane z paragonów za pomocą C#?
Wyodrębnianie danych z paragonów w C# wymaga zaledwie kilku linii kodu przy użyciu IronOCR. Podstawowy przepływ pracy ładuje plik obrazu paragonu, uruchamia silnik OCR i zwraca pełny wyodrębniony tekst.
using IronOcr;
// Initialize the OCR engine for receipt scanning
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
// Load the receipt image for data extraction
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Extract text from the receipt
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
// Initialize the OCR engine for receipt scanning
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
// Load the receipt image for data extraction
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Extract text from the receipt
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
' Initialize the OCR engine for receipt scanning
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
' Load the receipt image for data extraction
Using input As New OcrInput()
input.LoadImage("receipt.jpg")
' Extract text from the receipt
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Wynik

Klasa IronTesseract jest głównym silnikiem OCR, zarządzanym wrapperem wokół Tesseract 5, który eliminuje problem z natywną interoperacją C++ i ręczną konfiguracją. Ustawienie OcrLanguage.English informuje silnik, z którego modelu językowego korzystać, chociaż IronOCR obsługuje ponad 125 języków do przetwarzania paragonów z całego świata.
OcrInput akceptuje obrazy paragonów w praktycznie każdym popularnym formacie (JPG, PNG, BMP, TIFF, GIF, WEBP), a także w PDF-ach. Metoda Read wykonuje faktyczną operację OCR i zwraca obiekt OcrResult, bogaty model dokumentu, który zawiera nie tylko zwykły tekst, ale umożliwia strukturalny dostęp do akapitów, linii, słów i pojedynczych znaków z ocenami wiarygodności. To jest idealne dla przepływów pracy analizujących paragony, które muszą wyodrębniać dane na poziomie szczegółowym.
Jak przetwarzanie obrazu może zmniejszyć błędy w skanowaniu paragonów?
Obrazy paragonów z rzeczywistego świata rzadko są doskonałe. Zmięte papiery, słabe oświetlenie i nieznaczna rotacja wprowadzają szum, który może powodować błędy podczas wyodrębniania danych. Przetwarzanie obrazu przed uruchomieniem OCR znacznie poprawia dokładność i pomaga zmniejszyć błędy, które w przeciwnym razie zniszczyłyby dane z Twoich paragonów.
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Preprocess the receipt image to improve OCR accuracy
input.DeNoise(); // Remove digital noise from the scanned receipt
input.Deskew(); // Straighten a tilted or rotated receipt capture
input.Sharpen(); // Enhance text clarity for better recognition
OcrResult result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("receipt.jpg");
// Preprocess the receipt image to improve OCR accuracy
input.DeNoise(); // Remove digital noise from the scanned receipt
input.Deskew(); // Straighten a tilted or rotated receipt capture
input.Sharpen(); // Enhance text clarity for better recognition
OcrResult result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadImage("receipt.jpg")
' Preprocess the receipt image to improve OCR accuracy
input.DeNoise() ' Remove digital noise from the scanned receipt
input.Deskew() ' Straighten a tilted or rotated receipt capture
input.Sharpen() ' Enhance text clarity for better recognition
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine($"Confidence: {result.Confidence}%")
Console.WriteLine(result.Text)
End Using

Funkcje przetwarzania obrazu
Aby poprawić dokładność wyodrębniania, IronOCR oferuje kilka wbudowanych filtrów do oczyszczania obrazów przed rozpoczęciem procesu OCR.
| Funkcja | Cel |
|---|---|
DeNoise() |
Usuwa plamki i artefakty cyfrowe często spotykane w zeskanowanych dokumentach. |
Deskew() |
Wykrywa i koryguje rotację dla skręconych lub przechylonych obrazów. |
Sharpen() |
Poprawia rozmyte krawędzie, aby sprawić, by wyblakły tekst był bardziej czytelny. |
Binarize() |
Konwertuje obrazy na czarno-białe, aby zwiększyć kontrast. |
ToGrayScale() |
Usuwa dane kolorów, aby uprościć obraz dla silnika OCR. |
EnhanceResolution() |
Zwiększa rozdzielczość obrazów o niskiej jakości DPI, aby poprawić rozpoznawanie znaków. |
Walidacja danych z ocenami pewności
Poza prostym wyodrębnianiem tekstu, właściwość Confidence na OcrResult zwraca wynik procentowy wskazujący na wiarygodność wyników.
Dla zautomatyzowanych procesów przetwarzania paragonów obsługujących duże wolumeny, ten wynik jest nieoceniony. Umożliwia systemowi ustawienie progu — na przykład automatycznie przetwarzać wszystko powyżej 90%, jednocześnie oznaczając wyniki o niskiej pewności do ręcznego przeglądu. Dzięki temu zapewniamy wysoką jakość danych bez potrzeby sprawdzania każdego pojedynczego paragonu przez człowieka.
Jak można parsować określone pola z tekstu OCR paragonów?
Uzyskiwanie surowego tekstu z powrotem z silnika OCR to świetny początek, ale to dopiero początek. Jeśli budujesz raport wydatków lub narzędzie księgowe z przetwarzaniem w czasie rzeczywistym, nie potrzebujesz tylko 'blob'a' tekstu, potrzebujesz konkretnych pól danych, takich jak data, nazwa sprzedawcy i suma końcowa.
Gdy IronOCR wykona ciężką pracę polegającą na odczytaniu obrazu, możemy użyć standardowej logiki C# i wyrażeń regularnych (Regex) w naszym API paragonowym, aby wyciągnąć interesujące nas konkretne pola.
using IronOcr;
using System.Text.RegularExpressions;
var ocr = new IronTesseract();
using var input = new OcrInput("receipt.jpg");
input.DeNoise();
OcrResult result = ocr.Read(input);
string ocrText = result.Text;
// Parse the date from receipt data
var dateMatch = Regex.Match(ocrText, @"\d{1,2}/\d{1,2}/\d{2,4}");
string receiptDate = dateMatch.Success ? dateMatch.Value : "Not found";
// Parse the total amount
var totalMatch = Regex.Match(ocrText, @"(?i)total[\s:$]*(\d+\.\d{2})");
string total = totalMatch.Success ? totalMatch.Groups[1].Value : "Not found";
Console.WriteLine($"Date: {receiptDate}");
Console.WriteLine($"Total: ${total}");
using IronOcr;
using System.Text.RegularExpressions;
var ocr = new IronTesseract();
using var input = new OcrInput("receipt.jpg");
input.DeNoise();
OcrResult result = ocr.Read(input);
string ocrText = result.Text;
// Parse the date from receipt data
var dateMatch = Regex.Match(ocrText, @"\d{1,2}/\d{1,2}/\d{2,4}");
string receiptDate = dateMatch.Success ? dateMatch.Value : "Not found";
// Parse the total amount
var totalMatch = Regex.Match(ocrText, @"(?i)total[\s:$]*(\d+\.\d{2})");
string total = totalMatch.Success ? totalMatch.Groups[1].Value : "Not found";
Console.WriteLine($"Date: {receiptDate}");
Console.WriteLine($"Total: ${total}");
Imports IronOcr
Imports System.Text.RegularExpressions
Dim ocr As New IronTesseract()
Using input As New OcrInput("receipt.jpg")
input.DeNoise()
Dim result As OcrResult = ocr.Read(input)
Dim ocrText As String = result.Text
' Parse the date from receipt data
Dim dateMatch As Match = Regex.Match(ocrText, "\d{1,2}/\d{1,2}/\d{2,4}")
Dim receiptDate As String = If(dateMatch.Success, dateMatch.Value, "Not found")
' Parse the total amount
Dim totalMatch As Match = Regex.Match(ocrText, "(?i)total[\s:$]*(\d+\.\d{2})")
Dim total As String = If(totalMatch.Success, totalMatch.Groups(1).Value, "Not found")
Console.WriteLine($"Date: {receiptDate}")
Console.WriteLine($"Total: ${total}")
End Using

Ten przykład używa prostych wzorców regex, aby automatycznie wyodrębniać datę i sumę ze surowego tekstu OCR paragonu. Wzorzec daty dopasowuje się do popularnych formatów dat na paragonach, takich jak 03/15/2026, podczas gdy wzorzec dla sumy szuka słowa 'TOTAL' poprzedzonego kwotą w dolarach. Dla systemów produkcyjnych wzorce te powinny być dostosowane do konkretnych formatów paragonów, z jakimi się spotkano.
Aby wyodrębnić dane o pozycjach — nazwy poszczególnych produktów, ilości i ceny, podziel tekst OCR według linii i zastosuj wzorce, które identyfikują wiersze pozycji. To podejście dobrze sprawdza się przy konwersji obrazów paragonów na dane strukturalne odpowiednie do formatu JSON, przepływów pracy związanych z zarządzanie wydatkami i bezpośrednią integracją z oprogramowaniem księgowym. Dla bardziej zaawansowanego analizowania paragonów o różnorodnych układach, rozważ połączenie odczytu OCR opartego na regionach (używając prostokątów ContentArea) z funkcjami struktury dokumentu IronOCR, aby wyciągnąć dane o pozycjach z konkretnych sekcji paragonu.
Rzeczywisty sprawdzian rzeczywistości dla programistów dotyczący Regex
Bądźmy szczerzy: Regex to 'szybki i brudny' sposób na początek, ale nie jest niezawodny. Paragony z rzeczywistego świata są nieuporządkowane. Jeden sprzedawca może wydrukować 'TOTAL', inny może powiedzieć 'Kwota Do Zapłaty', a trzeci może mieć plamę od kawy bezpośrednio na znaku dolara.
Jeśli przenosisz to do produkcji, nie polegaj na jednym wzorcu. Oto jak to uczynić bardziej solidnym:
- Używaj ocen pewności: IronOCR daje Ci procentową ocenę pewności dla każdego przeczytanego słowa. Jeśli pewność dla Twojej kwoty 'Suma' jest poniżej 80%, powinieneś prawdopodobnie oznaczyć ten paragon do podwójnego sprawdzenia przez człowieka.
- Waliduj dane: Nie ufaj tylko łańcuchowi znaków. Spróbuj przekształcić tę 'Suma' na liczbę zmiennoprzecinkową. Jeśli to się nie uda, Twoje OCR mogło błędnie odczytać '5' jako 'S'.
- Lokalizacja ma znaczenie: Dla złożonych układów użyj
OcrResult.BlockslubLinesw IronOCR, aby znaleźć tekst według jego pozycji na stronie. Jeśli 'Suma' zawsze znajduje się w prawym dolnym rogu, celowanie w ten konkretny obszar zmniejsza 'szum' od innych liczb na paragonie.
Jak API OCR do paragonów integruje się z systemami zarządzania wydatkami?
API OCR do paragonów staje się naprawdę potężne, gdy dostarcza strukturalne dane paragonowe bezpośrednio do systemów biznesowych. IronOCR oferuje przyjazne dla programistów API, które integruje się bezproblemowo z dowolną aplikacją .NET, niezależnie od tego, czy to usługa internetowa ASP.NET, aplikacja do śledzenia wydatków na komputerze, czy tło przetwarzające paragony w partiach.
API zwraca wyodrębniony tekst jako obiekt OcrResult, który zapewnia dostęp do poszczególnych stron, akapitów i linii. Dzięki temu łatwo jest zbudować pipeline przetwarzania paragonów, który parsuje tekst OCR do strukturalnego JSON, waliduje dane (w tym wykrywanie duplikatów i weryfikację zakupu) i przekazuje je do oprogramowania księgowego, systemów ERP lub baz danych.
IronOCR wykonuje całe przetwarzanie OCR lokalnie, bez zależności od chmury, bez karty kredytowej wymaganej do bezpłatnego planu próbnego i pełnej kontroli nad wrażliwymi dokumentami finansowymi. To podejście zorientowane na lokalność oznacza, że API OCR do paragonów może obsługiwać duże ilości cyfrowych paragonów bez obaw o opóźnienia, a także zapewnia wbudowaną ochronę danych dla organizacji w różnych branżach z rygorystycznymi wymaganiami zgodności. Biblioteka oferuje obszerną dokumentację i bezproblemową integrację z istniejącymi systemami przez NuGet, co czyni ją pragmatycznym wyborem dla zespołów ceniących zarówno wydajność, jak i prostotę.
Dla programistów, którzy chcą zbudować pełne rozwiązanie do skanowania paragonów, IronOCR obsługuje również odczytywanie kodów kreskowych i QR, generowanie przeszukiwalnego PDF oraz przetwarzanie dokumentów wielostronicowych, wszystko w ramach tej samej biblioteki.
Zacznij automatyzować ekstrakcję danych z paragonów już dziś
Budowanie API OCR do paragonów w C# za pomocą IronOCR usuwa ból ręcznego wprowadzania danych i zastępuje go szybkim, dokładnym, automatycznym wyodrębnianiem danych. Od podstawowego skanowania paragonów po zaawansowane parsowanie paragonów z ekstrakcją na poziomie pól, biblioteka dostarcza wszystko, co potrzebne do konwersji obrazów paragonów na wartościowe, strukturalne dane, wszystko bez potrzeby wysyłania dokumentów poza siedzibę.
Połączenie potężnych filtrów przetwarzania wstępnego, czystego API .NET, rozpoznawania wspomaganego uczeniem maszynowym i lokalnego przetwarzania czyni IronOCR silnym wyborem dla zarządzania wydatkami, przetwarzania paragonów i dla każdego przepływu pracy, który wymaga niezawodnego wyodrębniania danych z paragonów na dużą skalę.
Gotowy, aby wyeliminować ręczne wprowadzanie z Twoich przepływów pracy dotyczących paragonów? Odkryj opcje licencji IronOCR aby znaleźć odpowiedni plan dla Twojego zespołu, lub rozpocznij z darmowym okresem próbnym, aby zobaczyć wyniki na własne oczy.
Install-Package IronOcr
Często Zadawane Pytania
Czym jest API OCR do rozpoznawania paragonów?
API OCR to narzędzie wykorzystujące technologię OCR do wyodrębniania tekstu z obrazów paragonów i przekształcania go w dane strukturalne, eliminując konieczność ręcznego wprowadzania danych.
Jak można wykorzystać IronOCR do wyodrębniania danych z paragonów?
IronOCR zapewnia solidne rozwiązanie do wyodrębniania danych strukturalnych z obrazów paragonów przy użyciu zaawansowanych funkcji OCR, dzięki czemu proces ten przebiega płynnie i jest dokładny.
Jakie są zalety korzystania z API OCR do rozpoznawania paragonów w języku C#?
Wykorzystanie API do optycznego rozpoznawania znaków (OCR) paragonów w języku C# usprawnia proces pozyskiwania danych z paragonów, ogranicza błędy związane z ręcznym wprowadzaniem danych oraz zwiększa wydajność aplikacji, takich jak te wykorzystywane w zarządzaniu wydatkami i księgowości.
Czy IronOCR może współpracować z oprogramowaniem księgowym?
Tak, IronOCR może współpracować z oprogramowaniem księgowym w celu automatyzacji pozyskiwania i przetwarzania danych z paragonów, poprawiając wydajność i dokładność przepływu pracy.
Czy IronOCR nadaje się do automatyzacji zarządzania wydatkami?
IronOCR idealnie nadaje się do automatyzacji zarządzania wydatkami, ponieważ skutecznie wyodrębnia i przetwarza dane z paragonów, zmniejszając czas i wysiłek wymagany do ręcznego wprowadzania danych.
W jaki sposób IronOCR radzi sobie z różnymi formatami paragonów?
IronOCR został zaprojektowany do rozpoznawania i przetwarzania szerokiej gamy formatów paragonów, zapewniając dokładne wyodrębnianie danych niezależnie od układu lub wyglądu paragonu.
Co sprawia, że IronOCR jest tak dokładny w wyodrębnianiu tekstu z paragonów?
IronOCR wykorzystuje zaawansowane algorytmy optycznego rozpoznawania znaków, aby zapewnić wysoką dokładność wyodrębniania tekstu, nawet ze złożonych obrazów paragonów.
Czy IronOCR może być wykorzystywany w aplikacjach programów lojalnościowych?
Tak, IronOCR może być wykorzystywany w aplikacjach programów lojalnościowych poprzez dokładne wyodrębnianie i przetwarzanie danych z paragonów w celu śledzenia zakupów i nagród.
Jaki język programowania jest używany do implementacji API OCR dla paragonów?
API OCR do rozpoznawania paragonów można zaimplementować przy użyciu języka C#, wykorzystując funkcje IronOCR do tworzenia wydajnych i niezawodnych rozwiązań do ekstrakcji danych.
Czy IronOCR obsługuje lokalne przetwarzanie obrazów paragonów?
Tak, IronOCR obsługuje lokalne przetwarzanie obrazów paragonów, zapewniając bezpieczny i wydajny sposób pozyskiwania danych bez konieczności korzystania z usług w chmurze.



