Przejdź do treści stopki
KORZYSTANIE Z IRONBARCODE

IronBarcode vs. Otwarty kod źródłowy czytnik kodów kreskowych w .NET

Podczas tworzenia aplikacji .NET wymagających funkcji odczytu kodów kreskowych programiści często zaczynają od poszukiwania rozwiązań typu open source do odczytu kodów kreskowych. Chociaż darmowe biblioteki do odczytu kodów kreskowych, takie jak ZXing.NET, mogą początkowo wydawać się atrakcyjne, środowiska produkcyjne wymagają niezawodności, wydajności i profesjonalnego wsparcia, których rozwiązania open source nie są w stanie zapewnić. Ten samouczek pokazuje, w jaki sposób IronBarcode zapewnia wydajność skanowania kodów kreskowych na poziomie Enterprise w języku C#, stanowiąc solidną alternatywę, która z łatwością radzi sobie z rzeczywistymi wyzwaniami.

Niezależnie od tego, czy chodzi o przetwarzanie skanów zapasów, odczytywanie etykiet wysyłkowych, czy też wyodrębnianie danych z dokumentów PDF, IronBarcode upraszcza odczyt kodów kreskowych do zaledwie kilku linii kodu, zapewniając jednocześnie dokładność i funkcje wymagańe przez profesjonalne aplikacje do skanowania kodów kreskowych w środowisku .NET.

Jakie są typowe wyzwania związane z odczytywaniem BARCODE-ów w .NET?

Programiści wdrażający funkcję odczytu kodów kreskowych stają przed kilkoma poważnymi wyzwaniami, które mogą znacząco wpłynąć na niezawodność aplikacji i komfort użytkowania. Biblioteki .NET typu open source do odczytu kodów kreskowych, choć są bezpłatne, często mają trudności z obsługą rzeczywistych scenariuszy, które wymagają niezawodnego wykrywania kodów kreskowych.

Po pierwsze, najczęstszym wyzwaniem jest niedoskonała jakość obrazu. BarCODES rejestrowane przez urządzenia mobilne, kamery bezpieczeństwa lub skanery ręczne rzadko dorównują wysokiej jakości formatów obrazów generowanych cyfrowo. Problemy takie jak przekrzywione kąty, słabe oświetlenie i częściowe uszkodzenia mogą sprawić, że wiele czytników BARCODE będzie nieskuteczne. Rozwiązania open source zazwyczaj wymagają rozbudowanego kodu przetwarzania wstępnego, aby poradzić sobie z tymi warunkami, co zwiększa złożoność projektów i obciążenie związane z ich utrzymaniem.

Po drugie, ograniczenia licencyjne powodują nieoczekiwane problemy w przypadku zastosowań komercyjnych. Wiele bibliotek BarCode typu open source korzysta z licencji takich jak Apache 2.0 lub LGPL, które nakładają określone wymagania dotyczące wykorzystania komercyjnego. Organizacje muszą dokładnie zapoznać się z tymi licencjami, aby zapewnić zgodność z przepisami, a niektóre licencje mogą być niezgodne z modelami dystrybucji oprogramowania własnościowego. Zgodnie z dyskusjami na Stack Overflow programiści często napotykają niejasności związane z licencjami podczas przechodzenia z etapu rozwoju do produkcji.

Po trzecie, ograniczona lub nieaktualna dokumentacja dotycząca możliwości skanowania kodów kreskowych spowalnia tempo rozwoju. Projekty open source opierają się na wkładzie społeczności, co często skutkuje niekompletną dokumentacją, nieaktualnymi przykładami i minimalnymi wskazówkami dotyczącymi rozwiązywania problemów. Kiedy programiści napotykają problemy, znalezienie rozwiązań zależy od forów społecznościowych lub bezpośredniej analizy kodu źródłowego.

Wreszcie, brak profesjonalnego wsparcia staje się krytyczny, gdy pojawiają się problemy produkcyjne. Bez dedykowanych zespołów wsparcia programiści muszą polegać na dobrej woli społeczności lub wewnętrznej wiedzy specjalistycznej, aby rozwiązać problemy. Ta niepewność sprawia, że bezpłatne rozwiązania do odczytu kodów kreskowych w środowisku .NET są ryzykowne w przypadku aplikacji o znaczeniu krytycznym, gdzie przestoje mają bezpośredni wpływ na przychody.

Wyzwania te podkreślają, dłączego profesjonalne rozwiązania do odczytu kodów kreskowych stały się niezbędne w aplikacjach Enterprise, które wymagają niezawodności, wydajności i odpowiedziąlności.

W jaki sposób IronBarcode rozwiązuje problemy związane z odczytywaniem kodów kreskowych?

IronBarcode odpowiada na każde wyzwanie dzięki funkcjom zaprojektowanym specjalnie dla środowisk produkcyjnych. Oparta na zaawansowanej technologii przetwarzania obrazu biblioteka do skanowania BarCode radzi sobie z niedoskonałymi skanami, które sprawiają trudności podstawowym czytnikom, zachowując jednocześnie prostotę potrzebną programistom do szybkiego wdrożenia. W przeciwieństwie do darmowych bibliotek do odczytu kodów kreskowych, IronBarcode zapewnia obsługę wielu formatów kodów kreskowych oraz niezawodność na poziomie korporacyjnym.

Kompleksowe porównanie funkcji

Funkcja

Biblioteki open source

IronBarcode

Licencjonowanie

Ograniczenia licencji Apache 2.0, MIT, LGPL

Licencja komercyjna na nieograniczone wdrożenie

Wsparcie

Tylko fora społecznościowe

Professional zespół wsparcia technicznego dostępny 24 godziny na dobę, 5 dni w tygodniu, z bezpośrednim dostępem

Dokumentacja

Zmienna jakość, często nieaktualne

Kompleksowa dokumentacja z aktualnymi przykładami

Korekta plików graficznych

Wymagane ręczne przetwarzanie wstępne

Automatyczna rotacja, usuwanie szumów i poprawianie jakości

Obsługiwane formaty

Ograniczony wybór

Nowoczesne kody kreskowe liniowe i formaty QR

Przetwarzanie plików PDF

Wymaga dodatkowych bibliotek

Natywne wyodrębnianie BARCODE-ów z plików PDF

Wielopłatformowe

Kompilacje specyficzne dla platformy

.NET 5/6/7/8/9, Framework, Core, .NET Standard, obsługuje wiele platform

Obsługa kontenerów

Ograniczona kompatybilność z Dockerem

Pełna obsługa wdrażania w Dockerze i chmurze

Konserwacja

Zależne od społeczności

Regularne aktualizacje i poprawki błędów

Wydajność

Podstawowy jednowątkowy

Wielowątkowe przetwarzanie wsadowe

Na szczególną uwagę zasługuje obsługa wielu platform przez IronBarcode. W przeciwieństwie do alternatywnych rozwiązań open source, które często wymagają implementacji specyficznych dla danej platformy, IronBarcode działa płynnie w systemach Windows, Linux, macOS oraz w środowiskach chmurowych. Wdrażanie kontenerów Docker działa bez modyfikacji, co ma kluczowe znaczenie dla nowoczesnych architektur mikrousług. Ta kompatybilność obejmuje platformy Azure, AWS i Google Cloud Platform, umożliwiając prawdziwe tworzenie oprogramowania typu "napisz raz, wdrażaj wszędzie".

Komercjalny model licencjonowania zapewnia jasność prawną, której potrzebują przedsiębiorstwa. Organizacje otrzymują wyraźne prawa do rozwoju, testowania i wdrażania produkcyjnego bez konieczności poruszania się po skomplikówanych wymaganiach licencji open source. To proste podejście eliminuje niepewność prawną i pozwala programistom skupić się na tworzeniu funkcji, a nie na zgodności z przepisami. Dowiedz się więcej o opcjach licencyjnych IronBarcode dostosowanych do Twoich konkretnych potrzeb.

Profesjonalne wsparcie sprawia, że rozwiązywanie problemów przestaje być czasochłonnym projektem badawczym, a staje się szybkim rozwiązaniem. Zespół wsparcia technicznego IronBarcode składa się z inżynierów, którzy rozumieją zarówno wewnętrzne mechanizmy biblioteki IronBarcode, jak i rzeczywiste wyzwania związane z jej wdrażaniem. Ta wiedza specjalistyczna okazuje się przydatna w przypadku napiętych terminów lub nietypowych wymagań.

IronBarcode a czytniki kodów kreskowych typu open source w .NET: Rysunek 3 – Wielopłatformowość

Jak odczytać swój pierwszy BarCode za pomocą IronBarcode?

Rozpoczęcie pracy z IronBarcode wymaga minimalnej konfiguracji. Instalacja za pośrednictwem menedżera pakietów NuGet zapewnia płynną integrację z istniejącymi projektami .NET. Chcesz zobaczyć różnicę? Rozpocznij bezpłatny okres próbny i skorzystaj z profesjonalnego odczytu BarCodes lub twórz BarCodes w kilka minut.

Install-Package BarCode

IronBarcode a czytniki kodów kreskowych typu open source w .NET: Rysunek 4 – Instalacja

Po zainstalowaniu IronBarcode odczytanie kodu kreskowego wymaga zaledwie jednej linii kodu. Ta prostota odróżnia go od alternatywnych czytników BarCode typu open source, które często wymagają skomplikówanej konfiguracji:

using IronBarCode;
using System;
// Read a barcode with a single line
BarcodeResults results = BarcodeReader.Read("barcode-image.png");
// Process the results
foreach (BarcodeResult result in results)
{
    Console.WriteLine($"Barcode Type: {result.BarcodeType}");
    Console.WriteLine($"Barcode Value: {result.Text}");
}
using IronBarCode;
using System;
// Read a barcode with a single line
BarcodeResults results = BarcodeReader.Read("barcode-image.png");
// Process the results
foreach (BarcodeResult result in results)
{
    Console.WriteLine($"Barcode Type: {result.BarcodeType}");
    Console.WriteLine($"Barcode Value: {result.Text}");
}
Imports IronBarCode
Imports System

' Read a barcode with a single line
Dim results As BarcodeResults = BarcodeReader.Read("barcode-image.png")

' Process the results
For Each result As BarcodeResult In results
    Console.WriteLine($"Barcode Type: {result.BarcodeType}")
    Console.WriteLine($"Barcode Value: {result.Text}")
Next
$vbLabelText   $csharpLabel

Metoda BarCodeReader.Read() automatycznie rozpoznaje format kodu kreskowego bez konieczności podawania specyfikacji. Obsługuje standardowe formaty, w tym Code 128, Code 39, kody QR, Data Matrix, PDF417 i dziesiątki innych. Metoda zwraca kolekcję BarCodeResults, ponieważ obrazy mogą zawierać wiele kodów kreskowych, co jest częstym scenariuszem w przypadku etykiet wysyłkowych i arkuszy inwentaryzacyjnych.

Przykładowy obrazek

IronBarcode a czytniki kodów kreskowych typu open source w .NET: Rysunek 5 – Kod kreskowy Code128 zawiera tekst

Wynik

IronBarcode a czytniki kodów kreskowych typu open source w .NET: Rysunek 6 – Wynik na konsoli

Każdy obiekt BarcodeResult zawiera wyczerpujące informacje o wykrytym kodzie kreskowym. Właściwość Text zawiera zdekodowaną wartość ciągu znaków, natomiast BarcodeType identyfikuje konkretny format. Dodatkowe właściwości obejmują dane binarne umożliwiające dostęp do surowych danych oraz współrzędne pozycyjne służące do lokalizowania BARCODE-ów na obrazie źródłowym.

W aplikacjach produkcyjnych obsługa błędów zapewnia płynne zarządzanie awariami:

using IronBarCode;
using System;
try
{
    BarcodeResults results = BarcodeReader.Read("product-label.jpg");
    if (results != null && results.Count > 0)
    {
        foreach (BarcodeResult barcode in results)
        {
            // Extract and process barcode data
            string productCode = barcode.Text;
        }
    }
    else
    {
        Console.WriteLine("No barcodes detected in image");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Barcode reading error: {ex.Message}");
}
using IronBarCode;
using System;
try
{
    BarcodeResults results = BarcodeReader.Read("product-label.jpg");
    if (results != null && results.Count > 0)
    {
        foreach (BarcodeResult barcode in results)
        {
            // Extract and process barcode data
            string productCode = barcode.Text;
        }
    }
    else
    {
        Console.WriteLine("No barcodes detected in image");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Barcode reading error: {ex.Message}");
}
Imports IronBarCode
Imports System

Try
    Dim results As BarcodeResults = BarcodeReader.Read("product-label.jpg")
    If results IsNot Nothing AndAlso results.Count > 0 Then
        For Each barcode As BarcodeResult In results
            ' Extract and process barcode data
            Dim productCode As String = barcode.Text
        Next
    Else
        Console.WriteLine("No barcodes detected in image")
    End If
Catch ex As Exception
    Console.WriteLine($"Barcode reading error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

Jak postępować w przypadku uszkodzonych i złożonych BARCODE-ów?

W rzeczywistości skanowanie BARCODE-ów wiąże się z niedoskonałymi warunkami, które stanowią wyzwanie dla podstawowych czytników. Zaawansowane opcje odczytu kodów kreskowych IronBarcode skutecznie radzą sobie z tymi scenariuszami dzięki przetwarzaniu obrazu i inteligentnym algorytmom wykrywania — funkcjom, których zazwyczaj brakuje bibliotekom .NET do odczytu kodów kreskowych.

using IronBarCode;
// Configure advanced reading options
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions
{
    // Speed settings: Faster, Balanced, Detailed, ExtremeDetail
    // ExtremeDetail performs deep analysis for challenging images
    Speed = ReadingSpeed.ExtremeDetail,
    // Specify expected formats to improve performance
    // Use bitwise OR (|) to combine multiple formats
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    // Maximum number of barcodes to find (0 = unlimited)
    MaxParallelThreads = 4,
    // Crop region for faster processing of specific areas
    CropArea = null, // Or specify a Rectangle
    // Apply image processing filters to enhance readability
    ImageFilters = new ImageFilterCollection
    {
     new ContrastFilter(2.0f),               // Increases contrast
     new SharpenFilter()                     // Reduces blur
    },
};
// Apply options when reading
BarcodeResults results = BarcodeReader.Read("damaged-barcode.jpg", advancedOptions);
// Process the results
foreach (BarcodeResult result in results)
{
    Console.WriteLine($"Barcode Type: {result.BarcodeType}");
    Console.WriteLine($"Barcode Value: {result.Text}");
}
using IronBarCode;
// Configure advanced reading options
BarcodeReaderOptions advancedOptions = new BarcodeReaderOptions
{
    // Speed settings: Faster, Balanced, Detailed, ExtremeDetail
    // ExtremeDetail performs deep analysis for challenging images
    Speed = ReadingSpeed.ExtremeDetail,
    // Specify expected formats to improve performance
    // Use bitwise OR (|) to combine multiple formats
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    // Maximum number of barcodes to find (0 = unlimited)
    MaxParallelThreads = 4,
    // Crop region for faster processing of specific areas
    CropArea = null, // Or specify a Rectangle
    // Apply image processing filters to enhance readability
    ImageFilters = new ImageFilterCollection
    {
     new ContrastFilter(2.0f),               // Increases contrast
     new SharpenFilter()                     // Reduces blur
    },
};
// Apply options when reading
BarcodeResults results = BarcodeReader.Read("damaged-barcode.jpg", advancedOptions);
// Process the results
foreach (BarcodeResult result in results)
{
    Console.WriteLine($"Barcode Type: {result.BarcodeType}");
    Console.WriteLine($"Barcode Value: {result.Text}");
}
Imports IronBarCode

' Configure advanced reading options
Dim advancedOptions As New BarcodeReaderOptions With {
    ' Speed settings: Faster, Balanced, Detailed, ExtremeDetail
    ' ExtremeDetail performs deep analysis for challenging images
    .Speed = ReadingSpeed.ExtremeDetail,
    ' Specify expected formats to improve performance
    ' Use bitwise OR (|) to combine multiple formats
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
    ' Maximum number of barcodes to find (0 = unlimited)
    .MaxParallelThreads = 4,
    ' Crop region for faster processing of specific areas
    .CropArea = Nothing, ' Or specify a Rectangle
    ' Apply image processing filters to enhance readability
    .ImageFilters = New ImageFilterCollection From {
        New ContrastFilter(2.0F), ' Increases contrast
        New SharpenFilter() ' Reduces blur
    }
}

' Apply options when reading
Dim results As BarcodeResults = BarcodeReader.Read("damaged-barcode.jpg", advancedOptions)

' Process the results
For Each result As BarcodeResult In results
    Console.WriteLine($"Barcode Type: {result.BarcodeType}")
    Console.WriteLine($"Barcode Value: {result.Text}")
Next
$vbLabelText   $csharpLabel

Ustawienie Prędkość kontroluje głębokość analizy. ReadingSpeed.Faster działa w przypadku wyraźnych obrazów, natomiast ReadingSpeed.Detailed lub ReadingSpeed.ExtremeDetail wykonują szczegółową analizę w przypadku trudnych BARCODE-ów. Ta dogłębna analiza bada wiele transformacji obrazu, zwiększając wskaźniki powodzenia w przypadku uszkodzonych lub źle wydrukowanych BARCODE-ów.

Filtry obrazów automatycznie korygują typowe problemy. SharpenFilter redukuje rozmycie ruchowe w skanerach ręcznych. ContrastFilter poprawia wyblakłe wydruki lub obrazy o niskim kontraście. Filtry te są stosowane kolejno, stopniowo poprawiając jakość obrazu przed wykryciem BARCODE.

Przykładowe dane wejściowe

IronBarcode a czytniki kodów kreskowych typu open source w .NET: Rysunek 7 – Kod QR obrócony o 45 stopni jako dane wejściowe

W przypadku aplikacji magazynowych i logistycznych opcja AutoRotate okazuje się niezbędna. Pracownicy skanują BARCODES pod różnymi kątami, a paczki przychodzą w losowych pozycjach. Automatyczne wykrywanie obrotu eliminuje potrzebę precyzyjnego wyrównywania, zwiększając szybkość skanowania i zmniejszając frustrację użytkownika.

Przykład kodu

Praktyczne wdrożenie skanowania zapasów może wyglądać następująco:

using IronBarCode;
using System.Drawing;
public class InventoryScanner
{
    private readonly BarcodeReaderOptions _scanOptions;
    public InventoryScanner()
    {
        // Configure for warehouse conditions
        _scanOptions = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Balanced,
            AutoRotate = true,
            ExpectBarcodeTypes = BarcodeEncoding.Code128 | 
                                BarcodeEncoding.EAN13 | 
                                BarcodeEncoding.UPCA,
            ImageFilters = new ImageFilterCollection
            {
                new AdaptiveThresholdFilter(15),  // Handle varying lighting
                new SharpenFilter()
            }
        };
    }
    public string ScanProduct(string imagePath)
    {
        var results = BarcodeReader.Read(imagePath, _scanOptions);
        if (results.Count > 0)
        {
            return results.OrderByDescending(r => r)
                         .First()
                         .Text;
        }
        return null;
    }
}
using IronBarCode;
using System.Drawing;
public class InventoryScanner
{
    private readonly BarcodeReaderOptions _scanOptions;
    public InventoryScanner()
    {
        // Configure for warehouse conditions
        _scanOptions = new BarcodeReaderOptions
        {
            Speed = ReadingSpeed.Balanced,
            AutoRotate = true,
            ExpectBarcodeTypes = BarcodeEncoding.Code128 | 
                                BarcodeEncoding.EAN13 | 
                                BarcodeEncoding.UPCA,
            ImageFilters = new ImageFilterCollection
            {
                new AdaptiveThresholdFilter(15),  // Handle varying lighting
                new SharpenFilter()
            }
        };
    }
    public string ScanProduct(string imagePath)
    {
        var results = BarcodeReader.Read(imagePath, _scanOptions);
        if (results.Count > 0)
        {
            return results.OrderByDescending(r => r)
                         .First()
                         .Text;
        }
        return null;
    }
}
Imports IronBarCode
Imports System.Drawing

Public Class InventoryScanner
    Private ReadOnly _scanOptions As BarcodeReaderOptions

    Public Sub New()
        ' Configure for warehouse conditions
        _scanOptions = New BarcodeReaderOptions With {
            .Speed = ReadingSpeed.Balanced,
            .AutoRotate = True,
            .ExpectBarcodeTypes = BarcodeEncoding.Code128 Or
                                  BarcodeEncoding.EAN13 Or
                                  BarcodeEncoding.UPCA,
            .ImageFilters = New ImageFilterCollection From {
                New AdaptiveThresholdFilter(15),  ' Handle varying lighting
                New SharpenFilter()
            }
        }
    End Sub

    Public Function ScanProduct(imagePath As String) As String
        Dim results = BarcodeReader.Read(imagePath, _scanOptions)
        If results.Count > 0 Then
            Return results.OrderByDescending(Function(r) r) _
                          .First() _
                          .Text
        End If
        Return Nothing
    End Function
End Class
$vbLabelText   $csharpLabel

Ta klasa zawiera logikę skanowania zoptymalizowaną pod kątem środowisk magazynowych. AdaptiveThresholdFilter radzi sobie ze zmiennymi warunkami oświetleniowymi, które często występują w dużych obiektach. Dzięki określeniu oczekiwanych typów BARCODE-ów poprawia się szybkość przetwarzania bez utraty dokładności w przypadku odpowiednich formatów. Wytyczne Fundacji .NET zalecają ten wzorzec enkapsulacji dla komponentów wielokrotnego użytku.

Wynik

IronBarcode a czytniki kodów kreskowych typu open source w .NET: Rysunek 8 – Złożony kod QR

Jak efektywnie przetwarzać wiele kodów kreskowych?

Scenariusze przetwarzania dokumentów często obejmują wyodrębnianie BarCodes z plików PDF, wielostronicowych raportów lub zbiorów obrazów przetwarzanych partiami. IronBarcode radzi sobie z tymi zadaniami skutecznie dzięki specjalistycznym metodom i możliwościom przetwarzania równoległego, przewyższając możliwości darmowych bibliotek skanerów kodów kreskowych. Dodatkowe przykłady można znaleźć w samouczku dotyczącym wyodrębniania BarCodes z plików PDF.

using IronBarCode;
// Extract barcodes from PDF documents
BarcodeResults pdfResults = BarcodeReader.ReadPdf("shipping-manifest.pdf");
foreach (BarcodeResult barcode in pdfResults)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Text}");
}
using IronBarCode;
// Extract barcodes from PDF documents
BarcodeResults pdfResults = BarcodeReader.ReadPdf("shipping-manifest.pdf");
foreach (BarcodeResult barcode in pdfResults)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Text}");
}
Imports IronBarCode

' Extract barcodes from PDF documents
Dim pdfResults As BarcodeResults = BarcodeReader.ReadPdf("shipping-manifest.pdf")
For Each barcode As BarcodeResult In pdfResults
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Text}")
Next
$vbLabelText   $csharpLabel

Metoda ReadPdf przetwarza wszystkie strony automatycznie, identyfikując BARCODES niezależnie od ich położenia lub orientacji. Każdy wynik zawiera numer strony, co umożliwia odniesienie do dokumentów źródłowych. Ta funkcja eliminuje potrzebę stosowania oddzielnych bibliotek do przetwarzania plików PDF, upraszczając architekturę aplikacji.

W scenariuszach przetwarzania wsadowego obsługa wielowątkowości w IronBarcode znacznie poprawia przepustowość:

using IronBarCode;
// Process multiple documents simultaneously
string[] documents = new string[]
{
    "invoice1.pdf",
    "shipping-label.png", 
    "inventory-report.pdf",
    "product-catalog.tiff"
};
BarcodeReaderOptions batchOptions = new BarcodeReaderOptions
{
    Multithreaded = true,
    MaxParallelThreads = 4,
    Speed = ReadingSpeed.Balanced
};
// Process all documents in parallel
BarcodeResults allResults = BarcodeReader.Read(documents, batchOptions);
using IronBarCode;
// Process multiple documents simultaneously
string[] documents = new string[]
{
    "invoice1.pdf",
    "shipping-label.png", 
    "inventory-report.pdf",
    "product-catalog.tiff"
};
BarcodeReaderOptions batchOptions = new BarcodeReaderOptions
{
    Multithreaded = true,
    MaxParallelThreads = 4,
    Speed = ReadingSpeed.Balanced
};
// Process all documents in parallel
BarcodeResults allResults = BarcodeReader.Read(documents, batchOptions);
Imports IronBarCode

' Process multiple documents simultaneously
Dim documents As String() = New String() {
    "invoice1.pdf",
    "shipping-label.png",
    "inventory-report.pdf",
    "product-catalog.tiff"
}

Dim batchOptions As New BarcodeReaderOptions With {
    .Multithreaded = True,
    .MaxParallelThreads = 4,
    .Speed = ReadingSpeed.Balanced
}

' Process all documents in parallel
Dim allResults As BarcodeResults = BarcodeReader.Read(documents, batchOptions)
$vbLabelText   $csharpLabel

To podejście oparte na przetwarzaniu równoległym wykorzystuje wiele rdzeni procesora, co znacznie skraca całkowity czas przetwarzania. Właściwość MaxParallelThreads kontroluje wykorzystanie zasobów, zapobiegając przeciążeniu systemu podczas operacji na dużych partiach danych. Wyniki zachowują powiązanie z plikiem źródłowym poprzez właściwość Filename, umożliwiając prawidłowe przypisanie danych w systemach raportowania. Ta funkcja sprawia, że IronBarcode przewyższa alternatywne rozwiązania open source do odczytu kodów kreskowych w środowisku .NET w zakresie przetwarzania na skalę przedsiębiorstwa.

Wnioski

IronBarcode zmienia odczytywanie kodów kreskowych ze skomplikówanego wyzwania w prostą implementację. Chociaż alternatywne rozwiązania open source mogą początkowo wydawać się atrakcyjne, wszechstronne funkcje, profesjonalne wsparcie i gotowość do wdrożenia w środowisku produkcyjnym sprawiają, że IronBarcode jest najlepszym wyborem dla poważnych zastosowań. Od obsługi uszkodzonych BarCodes po przetwarzanie tysięcy dokumentów — IronBarcode zapewnia spójne wyniki przy minimalnym nakładzie kodu.

Chcesz wdrożyć profesjonalny system odczytu BarCodes w swojej aplikacji .NET? Rozpocznij bezpłatny okres próbny już dziś i przekonaj się, jaką różnicę wnosi IronBarcode w środowiskach produkcyjnych. W przypadku wdrożeń Enterprise zapoznaj się z naszymi opcjami licencyjnymi, aby znaleźć rozwiązanie idealnie dopasowane do potrzeb Twojej organizacji.

Często Zadawane Pytania

Jakie są zalety korzystania z IronBarcode w porównaniu z rozwiązaniami open-source?

IronBarcode oferuje korporacyjną wydajność skanowania kodów kreskowych w C#, zapewniając niezawodność, wysoką wydajność i profesjonalne wsparcie, których mogą brakować rozwiązaniom open-source.

Czy IronBarcode radzi sobie z wyzwaniami rzeczywistego skanowania kodów kreskowych?

Tak, IronBarcode jest zaprojektowany tak, aby z łatwością radzić sobie z wyzwaniami rzeczywistego skanowania kodów kreskowych, zapewniając solidną wydajność odpowiednią dla środowisk produkcyjnych.

Dlaczego otwarte czytniki kodów kreskowych mogą być mniej odpowiednie dla środowisk produkcyjnych?

Otwarte czytniki kodów kreskowych, takie jak ZXing.NET, mogą brakować niezawodności, wydajności i profesjonalnego wsparcia wymaganego dla środowisk produkcyjnych, co czyni je mniej odpowiednimi w porównaniu do rozwiązań korporacyjnych takich jak IronBarcode.

Czy z IronBarcode jest dostępne profesjonalne wsparcie?

Tak, IronBarcode zapewnia profesjonalne wsparcie, które jest niezbędne do utrzymania i rozwiązywania problemów związanych z funkcjami skanowania kodów kreskowych w krytycznych aplikacjach.

Co czyni IronBarcode solidną alternatywą dla skanowania kodów kreskowych w .NET?

IronBarcode jest solidną alternatywą ze względu na swoją wysoką wydajność, niezawodność i profesjonalne wsparcie, które są kluczowe dla obsługi wymagań rzeczywistych aplikacji.

Czy IronBarcode łatwo integruje się z aplikacjami .NET?

Tak, IronBarcode jest zaprojektowany do bezproblemowej integracji z aplikacjami .NET, zapewniając programistom prostą w użyciu możliwość implementacji funkcji odczytywania kodów kreskowych.

Jak IronBarcode zapewnia wysoką wydajność w skanowaniu kodów kreskowych?

IronBarcode zapewnia wysoką wydajność poprzez optymalizację swojej biblioteki pod kątem szybkości i dokładności, co czyni ją odpowiednią dla aplikacji korporacyjnych wymagających efektywnego skanowania kodów kreskowych.

Jakie rodzaje kodów kreskowych może odczytywać IronBarcode?

IronBarcode może odczytywać szeroką gamę formatów kodów kreskowych, zapewniając wszechstronne funkcje dla różnych aplikacji i branż.

Czy łatwo jest zacząć korzystanie z IronBarcode do skanowania kodów kreskowych w C#?

Tak, IronBarcode oferuje obszerną dokumentację i wsparcie, co ułatwia programistom rozpoczęcie korzystania ze skanowania kodów kreskowych w C#.

Dlaczego IronBarcode jest uważany za niezawodne rozwiązanie dla programistów .NET?

IronBarcode jest uważany za niezawodne rozwiązanie ze względu na ciągłą wydajność, profesjonalne wsparcie i zdolność do obsługi skomplikowanych zadań związanych z skanowaniem kodów kreskowych w środowiskach produkcyjnych.

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej

Zespol wsparcia Iron

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