Jak odczytywać kody kreskowe i kody QR w języku C# za pomocą IronOCR
IronOCR odczytuje kody kreskowe i kody QR w C# poprzez ustalenie ReadBarCodes = true w konfiguracji. To pojedyncze ustawienie umożliwia automatyczne wyodrębnianie wartości kodów kreskowych z plików PDF i obrazów wraz ze standardowym rozpoznawaniem tekstu, obsługując ponad 20 formatów kodów kreskowych, w tym kody QR, Code 128 i Data Matrix.
Szybki start: Natychmiastowe odczytywanie BarCodes z pliku PDF
Włącz wykrywanie kodów kreskowych za pomocą jednego ustawienia i skanuj pliki PDF za pomocą IronOCR. Poniższy kod pokazuje, jak włączyć odczyt BarCode, przetworzyć plik PDF i pobrać zdekodowane wartości.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
var result = new IronOcr.IronTesseract() { Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = true } }.Read(new IronOcr.OcrPdfInput("document.pdf")); foreach(var bc in result.Barcodes) Console.WriteLine(bc.Value); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Jak odczytywać kody kreskowe i kody QR w języku C# za pomocą IronOCR
- Pobierz bibliotekę C# do odczytu kodów kreskowych i kodów QR.
- Zaimportuj docelowy obraz i dokument PDF.
- Włącz odczyt kodów BarCode, ustawiając właściwość
ReadBarCodesna true. - Użyj metody
Read,aby przeprowadzić OCR w zwykły sposób. - Wyświetl wykryty tekst i wartości BARCODE.
Jak odczytać BarCodes z dokumentów PDF?
Utwórz obiekt IronTesseract, aby wykonać odczyt. Ustaw właściwość ReadBarCodes na prawda, aby włączyć wykrywanie kodów kreskowych. Zaimportuj dokument PDF za pomocą konstruktora OcrPdfInput. Użyj metody Read, aby przeprowadzić OCR na zaimportowanym PDF.
Oto przykład wykorzystujący ten dokument PDF:
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-barcodes.cs
using IronOcr;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;
// Add PDF
using var imageInput = new OcrPdfInput("pdfWithBarcodes.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
Imports IronOcr
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = True
' Add PDF
Dim imageInput = New OcrPdfInput("pdfWithBarcodes.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output detected barcodes and text values
Console.WriteLine("Extracted text:")
Console.WriteLine(ocrResult.Text)
Console.WriteLine("Extracted barcodes:")
For Each barcode In ocrResult.Barcodes
Console.WriteLine(barcode.Value)
Next barcode
Pod BarCodeami pojawia się wiele wartości, które są uwzględnione w wyodrębnionym tekście.
Dlaczego IronOCR wyodrębnia zarówno tekst, jak i wartości BARCODE-ów?
Podwójne wyodrębnianie danych w IronOCR zapewnia kompleksową analizę dokumentów. Podczas przetwarzania dokumentów zawierających zarówno tekst, jak i kody kreskowe, biblioteka wykonuje standardowe wyodrębnianie tekstu metodą OCR, jednocześnie dekodując symbole BarCODE. To ujednolicone podejście eliminuje potrzebę wielokrotnego przetwarzania lub stosowania oddzielnych bibliotek.
Funkcja wyodrębniania tekstu przechwytuje elementy czytelne dla człowieka, natomiast wykrywanie BARCODE-ów identyfikuje i dekoduje dane czytelne dla maszyn. Jest to przydatne w przypadku dokumentów takich jak faktury, etykiety wysyłkowe lub raporty magazynowe, w których wartości BarCode są powiązane z drukowanym tekstem. Klasa OcrResult rozdziela te wyniki – uzyskaj dostęp do tekstu przez właściwość Text i do danych kodu kreskowego przez kolekcję Barcodes.
Jakie formaty BarCode'ów są obsługiwane?
IronOCR obsługuje ponad 20 formatów kodów kreskowych:
BarCode 1D:
- Kod 128, Kod 39, Kod 93
- EAN-13, EAN-8
- UPC-A, UPC-E
- Codabar
- ITF (Interleaved 2 of 5)
- MSI
- Plessey
Kody kreskowe 2D:
- Kod QR
- Data Matrix
- PDF417
- Kod Aztec
- MaxiCode
Do aplikacji specjalistycznych jak odczyt czeków MICR czy przetwarzanie dokumentów tożsamości, możliwości kodów kreskowych IronOCR uzupełniają jego funkcje ekstrakcji tekstu.
Kiedy należy używać OCR do odczytu kodów kreskowych zamiast dedykowanych bibliotek kodów kreskowych?
Wybierz zintegrowany odczyt kodów kreskowych IronOCR, gdy:
- Przetwarzanie mieszanej zawartości: Dokumenty zawierają tekst i kody kreskowe (etykiety wysyłkowe, faktury lub zeskanowane dokumenty)
- Preferencja jednej biblioteki: Chcesz zminimalizować zależności i użyć jednego rozwiązania
- Przetwarzanie PDF: Już używasz IronOCR do ekstrakcji tekstu OCR z PDF
- Złożone układy dokumentów: Dokumenty mają kody kreskowe osadzone w obszarach tekstowych lub tablicach
Używaj dedykowanych bibliotek kodów kreskowych, gdy:
- Przetwarzanie obrazów z kodami tylko kreskowymi o dużej objętości
- Wymagane skanowanie kodów kreskowych w czasie rzeczywistym (< 50 ms czas reakcji)
- Praca z uszkodzonymi lub niskiej jakości kodami kreskowymi wymagającymi specjalistycznych algorytmów
- Implementowanie mobilnego skanowania kodów kreskowych z optymalizacją kamery
Jak mogę odczytać kody QR z dokumentów?
Podobnie jak przy odczycie kodów kreskowych, ustaw właściwość ReadBarCodes na prawda. Nie są potrzebne żadne inne zmiany w kodzie z wyjątkiem ścieżki pliku. Przetwórz ten dokument PDF z kodami QR:
:path=/static-assets/ocr/content-code-examples/how-to/barcodes-read-qr-codes.cs
using IronOcr;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = true;
// Add PDF
using var imageInput = new OcrPdfInput("pdfWithQrCodes.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output detected barcodes and text values
Console.WriteLine("Extracted text:");
Console.WriteLine(ocrResult.Text);
Console.WriteLine("Extracted barcodes:");
foreach (var barcode in ocrResult.Barcodes)
{
Console.WriteLine(barcode.Value);
}
Imports IronOcr
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable barcode reading
ocrTesseract.Configuration.ReadBarCodes = True
' Add PDF
Dim imageInput = New OcrPdfInput("pdfWithQrCodes.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output detected barcodes and text values
Console.WriteLine("Extracted text:")
Console.WriteLine(ocrResult.Text)
Console.WriteLine("Extracted barcodes:")
For Each barcode In ocrResult.Barcodes
Console.WriteLine(barcode.Value)
Next barcode
Dlaczego ta sama konfiguracja działa zarówno dla kodów kreskowych, jak i kodów QR?
Zunifikowany silnik wykrywania kodów kreskowych IronOCR traktuje wszystkie kody maszynowo-czytelne jednakowo. Konfiguracja ReadBarCodes aktywuje kompleksowy detektor symbologii, który rozpoznaje zarówno formaty 1D (kody liniowe), jak i 2D (kody QR, Data Matrix) bez konieczności stosowania ustawień specyficznych dla danego formatu. Takie podejście upraszcza implementację i zmniejsza złożoność konfiguracji.
Algorytm detekcji automatycznie:
- Identyfikuje typ symbologii na podstawie rozpoznawania wzorców
- Stosuje odpowiednie algorytmy dekodowania
- Obsługuje zmiany orientacji i rozmiaru
- Zwraca wyniki w jednolitym formacie bez względu na typ kodu kreskowego
To podejście odzwierciedla działanie modeli komputerowego widzenia - trenowanie na wielu formatach, aby zapewnić uniwersalne zdolności detekcji.
Jakie są powszechne problemy przy odczycie kodów QR za pomocą OCR?
Powszechne wyzwania przy przetwarzaniu kodów QR obejmują:
-
Problemy z rozdzielczością: Kody QR w plikach PDF mogą być sprowadzone do rozdzielczości poniżej minimalnego rozmiaru modułu. Użyj ustawienia DPI dla zapewnienia odpowiedniej rozdzielczości (zalecane minimum 300 DPI).
- Jakość obrazu: Zeskanowane kody QR często cierpią z powodu rozmycia, szumu lub zniekształceń. Zastosuj filtry korekcji obrazu, aby zwiększyć wyrazistość:
// Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();
var result = ocrTesseract.Read(input);
// Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = true;
var input = new OcrImageInput("qr-code-scan.jpg");
input.DeNoise();
input.Sharpen();
input.EnhanceResolution();
var result = ocrTesseract.Read(input);
' Apply filters to improve QR code readability
ocrTesseract.Configuration.ReadBarCodes = True
Dim input As New OcrImageInput("qr-code-scan.jpg")
input.DeNoise()
input.Sharpen()
input.EnhanceResolution()
Dim result = ocrTesseract.Read(input)
-
Problemy z orientacją: Kody QR pod kątem mogą nie być prawidłowo dekodowane. Włącz wykrywanie rotacji stron, aby obsługiwać nieprawidłowo wyrównane dokumenty.
- Zakłócenia mieszanej zawartości: Tekst lub grafika nakładające się na kody QR mogą uniemożliwiać wykrycie. Użyj obszarów przycięcia, aby odizolować obszary kodów QR, gdy to konieczne.
Jak mogę poprawić dokładność rozpoznawania kodów QR?
Optymalizuj rozpoznawanie kodów QR za pomocą tych technik:
- Wstępne przetwarzanie obrazów: Użyj kreatora filtrów, aby określić optymalne ustawienia poprawy jakości:
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts
var result = ocrTesseract.Read(input);
// Enhanced QR code reading with preprocessing
var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
// Configure for better QR detection
var input = new OcrImageInput("document-with-qr.pdf");
input.TargetDPI = 300; // Ensure sufficient resolution
input.Binarize(); // Convert to black and white
input.DeNoise(); // Remove image artifacts
var result = ocrTesseract.Read(input);
Imports IronTesseract
' Enhanced QR code reading with preprocessing
Dim ocrTesseract = New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
' Configure for better QR detection
Dim input = New OcrImageInput("document-with-qr.pdf")
input.TargetDPI = 300 ' Ensure sufficient resolution
input.Binarize() ' Convert to black and white
input.DeNoise() ' Remove image artifacts
Dim result = ocrTesseract.Read(input)
- Obsługa wielu stron: W przypadku dokumentów wielostronicowych z kodami QR na wielu stronach:
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;
var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
foreach (var barcode in page.Barcodes)
{
Console.WriteLine($" QR Code: {barcode.Value}");
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}");
}
}
// Process multi-page documents efficiently
using var pdfInput = new OcrPdfInput("multi-page-qr-document.pdf");
pdfInput.TargetDPI = 300;
var results = ocrTesseract.Read(pdfInput);
foreach (var page in results.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
foreach (var barcode in page.Barcodes)
{
Console.WriteLine($" QR Code: {barcode.Value}");
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}");
}
}
Imports System
' Process multi-page documents efficiently
Using pdfInput As New OcrPdfInput("multi-page-qr-document.pdf")
pdfInput.TargetDPI = 300
Dim results = ocrTesseract.Read(pdfInput)
For Each page In results.Pages
Console.WriteLine($"Page {page.PageNumber}:")
For Each barcode In page.Barcodes
Console.WriteLine($" QR Code: {barcode.Value}")
Console.WriteLine($" Location: X={barcode.X}, Y={barcode.Y}")
Next
Next
End Using
- Przetwarzanie asynchroniczne: Dla lepszej wydajności przy wielu dokumentach użyj metod asynchronicznych:
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
// Asynchronous QR code reading
var result = await ocrTesseract.ReadAsync(imageInput);
' Asynchronous QR code reading
Dim result = Await ocrTesseract.ReadAsync(imageInput)
- Debugowanie problemów z rozpoznawaniem: Włącz podświetlanie wyników, aby zobaczyć, co IronOCR wykrywa:
result.SaveAsHighlightedImage("qr-detection-debug.png");
result.SaveAsHighlightedImage("qr-detection-debug.png");
result.SaveAsHighlightedImage("qr-detection-debug.png")
Optymalizacja wydajności dla przetwarzania kodów kreskowych na dużą skalę
Podczas przetwarzania tysięcy dokumentów z kodami kreskowymi i QR, wdróż te strategie optymalizacji:
- Wielowątkowość: Wykorzystaj przetwarzanie wielowątkowe, aby obsługiwać wiele dokumentów jednocześnie:
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
var tesseract = new IronTesseract();
tesseract.Configuration.ReadBarCodes = true;
return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
// Process multiple documents in parallel
var documents = new[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
var results = documents.AsParallel().Select(doc =>
{
var tesseract = new IronTesseract();
tesseract.Configuration.ReadBarCodes = true;
return tesseract.Read(new OcrPdfInput(doc));
}).ToList();
' Process multiple documents in parallel
Dim documents = {"doc1.pdf", "doc2.pdf", "doc3.pdf"}
Dim results = documents.AsParallel().Select(Function(doc)
Dim tesseract = New IronTesseract()
tesseract.Configuration.ReadBarCodes = True
Return tesseract.Read(New OcrPdfInput(doc))
End Function).ToList()
- Zarządzanie pamięcią: Używaj tokenów anulowania do operacji długotrwałych:
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Configuration.CancellationToken = cts.Token;
// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
// Implement cancellation for large batch processing
using var cts = new CancellationTokenSource();
ocrTesseract.Configuration.CancellationToken = cts.Token;
// Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5));
' Implement cancellation for large batch processing
Using cts As New CancellationTokenSource()
ocrTesseract.Configuration.CancellationToken = cts.Token
' Cancel if processing takes too long
cts.CancelAfter(TimeSpan.FromMinutes(5))
End Using
- Eksport wyników: Zapisuj wyniki jako przeszukiwalne pliki PDF, aby zachować zarówno dane tekstowe, jak i kodów kreskowych:
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
// Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf");
' Export results with embedded barcode values
result.SaveAsSearchablePdf("output-with-barcodes.pdf")
Integracja z aplikacjami biznesowymi
Możliwości kodów kreskowych IronOCR bezproblemowo integrują się z istniejącymi aplikacjami .NET. Typowe scenariusze integracji obejmują:
- Zarządzanie zapasami: Ekstrakcja kodów produktów z manifestów wysyłkowych
- Archiwizacja dokumentów: Indeksowanie zeskanowanych dokumentów poprzez osadzone identyfikatory kodów kreskowych
- Przetwarzanie faktur: Dopasowanie kodów SKU do pozycji na dokumentach finansowych
- Rekordy medyczne: Przetwarzanie kodów kreskowych z opasek pacjenta w połączeniu z formularzami medycznymi
Do aplikacji produkcyjnych przetwarzających duże ilości kodów kreskowych i kodów QR, rozważ wdrożenie śledzenia postępów, aby monitorować stan przetwarzania i optymalizować wydajność na podstawie rzeczywistych danych.
Często Zadawane Pytania
Jak wlaczyc odczytywanie kodow kreskowych w aplikacji C#?
W IronOCR wlacz odczytywanie kodow kreskowych przez ustawienie ReadBarCodes = true w TesseractConfiguration. To pojedyncze ustawienie aktywuje automatyczne wyciaganie wartosci kodow kreskowych z PDF-ow i obrazow razem z regularnym rozpoznawaniem tekstu, wspierajac ponad 20 formatow kodow kreskowych.
Czy moge odczytac jednoczesnie tekst i kody kreskowe z tego samego dokumentu?
Tak, IronOCR wykonuje podwojne wyciaganie - wychwytuje tekst czytelny dla ludzi przez standardowe OCR, jednoczesnie dekodujac kody kreskowe czytelne dla maszyn. Klasa OcrResult rozdziela te wyniki z tekstem dostepnym przez wlasciwosc Text i danymi kodow kreskowych przez kolekcje Barcodes.
Jakie formaty kodow kreskowych moga byc wykryte?
IronOCR wspiera ponad 20 formatow kodow kreskowych, w tym 1D (Code 128, Code 39, Code 93, EAN-13, EAN-8, UPC-A, UPC-E, Codabar, ITF, MSI, Plessey) i 2D (QR Code, Data Matrix, i wiecej).
Jak wyodrebnic kody kreskowe z dokumentow PDF?
Utworz obiekt IronTesseract, ustaw ReadBarCodes na true, zaimportuj PDF uzywajac konstruktora OcrPdfInput, nastepnie uzyj metody Read. IronOCR wykona OCR i wyodrebni wszystkie wykryte wartosci kodow kreskowych, ktore mozesz uzyskac przez kolekcje wynik.Barcodes.
Czy potrzebuje oddzielnych bibliotek do tekstu OCR i odczytu kodow kreskowych?
Nie, zintegrowane podejscie IronOCR eliminuje potrzebe wielokrotnych przetwarzania lub oddzielnych bibliotek. Wykonuje standardowe wyciaganie tekstu OCR, jednoczesnie dekodujac symbologie kodow kreskowych w jednej operacji.

