Skanowanie kodów kreskowych Google ML Kit vs IronBarcode: Porównanie bibliotek kodów kreskowych C#
Skanowanie BarCode'ów w Google ML Kit na Androidzie robi naprawdę duże wrażenie. Obsługuje Google Lens, radzi sobie z uszkodzonymi i częściowo zasłoniętymi kodami, działa na urządzeniu bez połączenia z siecią i obsługuje szeroki zakres formatów 1D i 2D. Gdy programiści .NET natrafiają na to w porównaniu bibliotek BarCode, informacje te są zgodne z prawdą. Artykuły porównawcze często pomijają fakt, że ML Kit nie posiada zestawu SDK dla platformy .NET, pakietu NuGet ani interfejsu API w języku C#. Ten artykuł jest przeznaczony dla programistów, którzy znaleźli ML Kit na liście i muszą zrozumieć, co w praktyce oznacza "używanie ML Kit w projekcie .NET" — oraz jak wygląda jego odpowiednik w kodzie zarządzanym.
Czym jest skanowanie kodów kreskowych w Google ML Kit
Google ML Kit BarCode Scanning to natywna biblioteka mobilna. Nie jest to ograniczenie, które należy obejść; to projekt produktu. ML Kit jest dostępny w dwóch wersjach:
- Android: Dystrybucja za pośrednictwem Google Maven jako
com.google.mlkit:barcode-scanning(Kotlin/Java). Wymaga usług Google Play na urządzeniu docelowym. Przetwarza obiektyInputImageutworzone na podstawie klatek z kamery, adresów URI plików lub map bitowych. - iOS: Dystrybuowany za pośrednictwem CocoaPods jako
GoogleMLKit/BarcodeScanning, z zależnością od Firebase. Wykorzystuje Swift lub Objective-C.
Nie ma dotnet add package google-mlkit-barcode. Nie ma using Google.MLKit.BarcodeScanning;. Google nie udostępnia powiązania .NET dla ML Kit.
W różnych momentach istniały powiązania Xamarin utrzymywane przez społeczność, ale mają one stały problem: ML Kit często aktualizuje swoje zestawy SDK dla systemów Android i iOS, a projekty powiązań utrzymywane przez osoby prywatne lub małe zespoły mają tendencję do pozostawania w tyle lub całkowitego przestawania działać, gdy zmienia się podstawowy interfejs API. W 2026 r. nie istnieje aktywnie utrzymywany, gotowy do użycia w środowisku produkcyjnym pakiet .NET NuGet, który zawiera skaner BarCode ML Kit.
W czym ML Kit sprawdza się najlepiej
Zrozumienie, dłączego ML Kit pojawia się w porównaniach kodów kreskowych, stanowi przydatny kontekst. Na natywnym systemie Android:
- Wnioskowanie na urządzeniu: brak komunikacji z serwerem. Model ML Kit działa lokalnie przy użyciu Google Play Services, co oznacza niskie opóźnienia i brak zależności od sieci w czasie skanowania.
- Tolerancja uszkodzeń: Model ML radzi sobie z uszkodzonymi, częściowo zasłoniętymi lub niskiej rozdzielczości BARCODE-ami lepiej niż wiele dekoderów opartych na progach. Jest to prawdziwy czynnik wyróżniający aplikacje przeznaczone dla konsumentów, skanujące kody w świecie rzeczywistym.
- Integracja z Google Lens: skaner ML Kit to ten sam zestaw, który obsługuje wykrywanie BarCode w Google Lens. To wyraźny znak wysokiej jakości.
- Zakres formatów na urządzeniach mobilnych: natywnie obsługiwane są kody QR, EAN-13, EAN-8, Code 128, Code 39, Code 93, Codabar, ITF, PDF417, Data Matrix, Aztec oraz UPC-A/UPC-E.
- Zero konfiguracji: Trzywierszowy fragment kodu w języku Kotlin pozwala stworzyć działający skaner bez konieczności dostosowywania progów lub wybierania strategii dekodowania.
To są prawdziwe atuty. Problem dla programistów .NET nie polega na tym, że ML Kit jest zły — chodzi o to, że nie jest on dla nich dostępny bez znacznego nakładu pracy.
Rzeczywistość programowania w środowisku .NET
Gdy programista .NET musi skanować BARCODES, ścieżka ML Kit wygląda w praktyce następująco:
Brak async/await API C#. ML Kit wykorzystuje API Androida Task z wywołaniami zwrotnymi addOnSuccessListener i addOnFailureListener. Nie odpowiadają one elementom Task<t> i await w .NET. Każda warstwa powiązania musi dostosowywać się między asynchronicznością Androida opartą na wywołaniach zwrotnych a TPL w .NET — jest to niebanalne tłumaczenie, z którym powiązania społecznościowe radzą sobie w sposób niejednolity.
Brak integracji wstrzykiwania zależności .NET. BarcodeScanning.getClient(options) to statyczne wywołanie fabryki, które zwraca obiekt Android BarcodeScanner. Nie ma interfejsu .NET Core do rejestracji, nie ma IServiceCollection.AddBarcodeScanner(), nie ma możliwości wstrzyknięcia go do oprogramowania pośredniczącego ASP.NET Core lub Azure Functions.
Brak obsługi ASP.NET Core lub Azure Function. ML Kit wymaga środowiska uruchomieniowego Android lub iOS. Nie może działać w procesie API sieci Web w systemie Linux, w funkcji Azure, na serwerze Windows Server ani w kontenerze Docker. Jeśli Twoim przypadkiem użycia jest przetwarzanie BarCode po stronie serwera — punkt końcowy REST, który przyjmuje obraz i zwraca dane BarCode, potok przetwarzania dokumentów, zadanie wsadowe — ML Kit jest architektonicznie niekompatybilny, niezależnie od dostępności jakichkolwiek powiązań.
Tylko dane z kamery lub klatki — bez pliku, bez PDF. InputImage w ML Kit można utworzyć z Bitmap, ByteBuffer lub adresu URI pliku w systemie plików Android. Nie ma tu mowy o przetwarzaniu dokumentów PDF, iteracji stron ani obsłudze wielostronicowych plików TIFF. Przetwarzanie dokumentów po stronie serwera całkowicie wykracza poza zakres produktu.
Zależność od usług Google Play. Model ML działający na urządzeniu jest uruchamiany za pośrednictwem usług Google Play. Urządzenia bez usług Google Play — niestandardowe wersje Androida, niektóre urządzenia Enterprise, tablety Amazon Fire — nie mogą korzystać z domyślnej konfiguracji ML Kit. Opcja modelu "bundled" (com.google.mlkit:barcode-scanning-bundled) pozwala obejść ten problem, ale znacznie zwiększa rozmiar pliku APK.
Portowanie kodu Android ML Kit na platformę .NET
Jeśli posiadasz istniejącą aplikację na Androida z funkcją skanowania BarCode ML Kit i przenosisz ją na platformę .NET MAUI lub .NET 9, oto tłumaczenie. Kod w języku Kotlin wykorzystuje wzorzec wywołania zwrotnego ML Kit; Kod w języku C# wykorzystuje synchroniczne API biblioteki IronBarcode.
// Android Kotlin: ML Kit
val options = BarcodeScannerOptions.Builder()
.setBarcodeFormats(Barcode.FORMAT_QR_CODE, Barcode.FORMAT_CODE_128)
.build()
val scanner = BarcodeScanning.getClient(options)
val inputImage = InputImage.fromFilePath(context, uri)
scanner.process(inputImage)
.addOnSuccessListener { barcodes ->
for (barcode in barcodes) {
val rawValue = barcode.rawValue
val format = barcode.format
}
}
.addOnFailureListener { e -> Log.e("MLKit", e.message ?: "") }
// .NET C#: IronBarcode
// NuGet: dotnet add package IronBarcode
using IronBarCode;
var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}
// .NET C#: IronBarcode
// NuGet: dotnet add package IronBarcode
using IronBarCode;
var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}
Imports IronBarCode
Dim results = BarcodeReader.Read("captured-image.jpg")
For Each barcode In results
Console.WriteLine($"{barcode.Format}: {barcode.Value}")
Next
Różnica strukturalna wykracza poza samą składnię. Wersja ML Kit konfiguruje obiekt skanera, tworzy InputImage, wywołuje scanner.process() oraz rejestruje wywołania zwrotne sukcesu i niepowodzenia. Jeśli potrzebujesz wyniku przed kontynuowaniem, musisz skoordynować wykonanie wywołania zwrotnego z resztą logiki — zazwyczaj poprzez CountDownLatch w Javie lub korutyn w Kotlinie.
Funkcja BarcodeReader.Read() biblioteki IronBarcode zwraca zbiór wyników synchronicznie. Natychmiast to powtórz. Nie ma rejestracji wywołań zwrotnych, synchronizacji wątków ani oddzielnego obiektu skanera do zarządzania.
Dla zespołów przenoszących kod z Androida wzorcowe tłumaczenie dla scenariuszy z wieloma BarCode'ami wygląda następująco:
// .NET C#: IronBarcode — reading multiple barcodes with options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectedBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}
// .NET C#: IronBarcode — reading multiple barcodes with options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectedBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}
Imports IronBarCode
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.ExpectedBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}
Dim results = BarcodeReader.Read("image.jpg", options)
For Each barcode In results
Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}")
Next
Flaga ExpectedBarcodeTypes jest odpowiednikiem flagi setBarcodeFormats() w ML Kit. Ustawienie tego parametru zawęża zakres wyszukiwania i poprawia wydajność, ale w przeciwieństwie do ML Kit, pozostawienie go bez ustawienia nie zakłóca odczytu — IronBarcode spróbuje wszystkich obsługiwanych formatów.
Porównanie zakresu formatów
Oba narzędzia obsługują popularne formaty 2D i 1D. Zbieżność jest znaczna.
| Format | ML Kit (Android) | IronBarcode |
|---|---|---|
| Kod QR | Tak | Tak |
| EAN-13 | Tak | Tak |
| EAN-8 | Tak | Tak |
| UPC-A | Tak | Tak |
| UPC-E | Tak | Tak |
| Kod 128 | Tak | Tak |
| Kod 39 | Tak | Tak |
| Kod 93 | Tak | Tak |
| Codabar | Tak | Tak |
| ITF | Tak | Tak |
| PDF417 | Tak | Tak |
| Data Matrix | Tak | Tak |
| Aztec | Tak | Tak |
| Kod 11 | Nie | Tak |
| MSI Plessey | Nie | Tak |
| Pharmacode | Nie | Tak |
| Wstawione 2 z 5 | Za pośrednictwem ITF | Tak |
| RSS-14 / GS1 Databar | Nie | Tak |
| Micro QR | Nie | Tak |
| MaxiCode | Nie | Tak |
IronBarcode obsługuje ponad 50 typów kodowania zarówno podczas odczytu, jak i generowania. Lista formatów ML Kit jest ustalona przez Google i dostarczana wraz z modelem — nie można dodawać własnych symboli.
Co oferuje IronBarcode
Oprócz odczytu, IronBarcode obsługuje cały proces pracy z kodami kreskowymi:
Generowanie. ML Kit nie posiada żadnego API do generowania — odczytuje BARCODES, ale ich nie tworzy. IronBarcode generuje dowolny obsługiwany format do plików PNG, JPEG, SVG, HTML lub danych binarnych.
// Generate a Kod 128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// Generate a Kod 128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
' Generate a Kod 128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
Dostosowywanie kodów QR. QRCodeWriter obsługuje osadzanie logo, zmiany kolorów i poziomy korekcji błędów — funkcje, które nie mają odpowiednika w ML Kit, ponieważ ML Kit niczego nie generuje.
// QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(System.Drawing.Color.DarkBlue)
.SaveAsPng("product-qr.png");
// QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(System.Drawing.Color.DarkBlue)
.SaveAsPng("product-qr.png");
' QR code with embedded logo and custom color
QRCodeWriter.CreateQrCode("https://example.com/product/4821", 500) _
.AddBrandLogo("company-logo.png") _
.ChangeBarCodeColor(System.Drawing.Color.DarkBlue) _
.SaveAsPng("product-qr.png")
Przetwarzanie plików PDF. BarcodeReader.Read("document.pdf") natywnie odczytuje BARCODE z każdej strony pliku PDF. Bez etapu wyodrębniania obrazów, bez pętli strona po stronie z oddzielną biblioteką PDF — obsługuje pliki PDF bezpośrednio.
// Read all barcodes from every page of a PDF
var results = BarcodeReader.Read("invoice-batch.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}");
}
// Read all barcodes from every page of a PDF
var results = BarcodeReader.Read("invoice-batch.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}");
}
Imports System
' Read all barcodes from every page of a PDF
Dim results = BarcodeReader.Read("invoice-batch.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Value}")
Next
Po stronie serwera i w chmurze. IronBarcode działa na systemach Windows, Linux, macOS, Docker, Azure Functions i AWS Lambda. Nie ma wymagań dotyczących usług Google Play, aparatu ani środowiska uruchomieniowego dla urządzeń mobilnych.
Wynik binarny. .ToPngBinaryData() zwraca bezpośrednio byte[] — przydatne w przypadku interfejsów API, które zwracają obrazy BARCODE jako odpowiedzi HTTP bez zapisywania na dysku.
// Generate barcode and return as byte array (e.g., in a web API)
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode)
.ToPngBinaryData();
// Generate barcode and return as byte array (e.g., in a web API)
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode)
.ToPngBinaryData();
' Generate barcode and return as byte array (e.g., in a web API)
Dim barcodeBytes As Byte() = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode) _
.ToPngBinaryData()
Porównanie funkcji
| Funkcja | Google ML Kit BarCode | IronBarcode |
|---|---|---|
| .NET / C# API | Brak (brak pakietu NuGet) | Tak — using IronBarCode; |
| Pakiet NuGet | None | IronBarcode |
| Odczytywanie BarCode | Tak (tylko Android/iOS) | Tak (wszystkie platformy) |
| Generowanie BarCode'ów | Nie | Tak (ponad 50 formatów) |
| Generowanie kodów QR | Nie | Tak |
| Osadzanie logo QR | Nie | Tak |
| Obsługa plików PDF | Nie | Tak (język ojczysty) |
| Plik wejściowy (PNG/JPEG) | Tak (poprzez adres URI obrazu wejściowego) | Tak |
| Wejście z kamery / klatki | Tak (główny przypadek użycia) | Za pośrednictwem pliku graficznego |
| Przetwarzanie po stronie serwera | Nie | Tak |
| Obsługa ASP.NET Core | Nie | Tak |
| Azure Functions | Nie | Tak |
| Docker / Linux | Nie | Tak |
| Obsługa aplikacji Windows | Nie (tylko Android/iOS) | Tak |
| Usługi Google Play dep. | Tak (model standardowy) | Nie |
| Zależność od Firebase (iOS) | Tak | Nie |
| Async/await C# API | Nie | Synchroniczne (pasuje do modelu .NET) |
| Wiele BarCode na jednym obrazie | Tak | Tak |
| Powiązanie społeczności .NET | Nieoficjalne, niestabilne | N/A (rodzimy .NET) |
| Ceny | Bezpłatna (w ramach Google Play) | Od 749 USD (licencja wieczysta) |
Mapowanie koncepcji API
Ponieważ nie ma oficjalnego interfejsu API .NET ML Kit, to mapowanie ma charakter koncepcyjny — pokazuje cel każdej operacji ML Kit oraz jej odpowiednik w IronBarcode.
| ML Kit (koncepcja Kotlin/Java) | IronBarcode (.NET C#) |
|---|---|
BarcodeScannerOptions.Builder() |
new BarcodeReaderOptions { } |
.setBarcodeFormats(FORMAT_QR_CODE) |
ExpectedBarcodeTypes = BarcodeEncoding.QRCode |
BarcodeScanning.getClient(options) |
Statyczne — nie jest potrzebny obiekt skanera |
InputImage.fromFilePath(context, uri) |
Ciąg znaków ścieżki pliku przekazany do BarcodeReader.Read() |
InputImage.fromBitmap(bitmap, rotation) |
BarcodeReader.Read(stream) lub przeciążenie tablicy bajtów |
scanner.process(inputImage) |
BarcodeReader.Read(path, options) |
.addOnSuccessListener { barcodes -> } |
Wartość zwracana przez Read() — iteracja bezpośrednia |
.addOnFailureListener { e -> } |
Standardowy try/catch |
barcode.rawValue |
barcode.Value |
barcode.format |
barcode.Format |
barcode.boundingBox |
barcode.BarcodeImage (dane regionalne) |
Barcode.FORMAT_QR_CODE |
BarcodeEncoding.QRCode |
Barcode.FORMAT_CODE_128 |
BarcodeEncoding.Code128 |
| Brak API generowania | BarcodeWriter.CreateBarcode() |
| Brak API generowania | QRCodeWriter.CreateQrCode() |
Speed / wybór modelu |
ReadingSpeed.Balanced / .Faster / .Detailed |
Kiedy warto rozważyć IronBarcode
Portowanie aplikacji na Androida do .NET MAUI lub .NET 9. Jeśli Twoja aplikacja na Androida wykorzystuje ML Kit do skanowania kodów kreskowych, a Ty tworzysz jej odpowiednik w .NET, naturalnym wyborem jest IronBarcode. Koncepcja tłumaczenia jest prosta — odczytaj plik, uzyskaj wynik, iteruj wartości.
Przetwarzanie kodów kreskowych po stronie serwera. Każdy scenariusz obejmujący punkt końcowy HTTP skanujący kody kreskowe, zadanie w tle przetwarzające przesłane obrazy lub przepływ pracy z dokumentami, który wyodrębnia kody z plików PDF. ML Kit nie może brać udziału w żadnym z tych projektów.
Aplikacje desktopowe dla systemu Windows. WinForms, WPF lub .NET MAUI w systemie Windows. ML Kit w ogóle nie działa w systemie Windows.
Środowiska bez usług Google Play. Jeśli wdrożenie systemu Android obejmuje urządzenia, które nie mają usług Google Play — sprzęt Enterprise, niestandardowe kompilacje AOSP, urządzenia Amazon Fire — standardowy model ML Kit jest niedostępny. IronBarcode nie ma takich zależności.
Generowanie i odczyt. Jeśli potrzebujesz zarówno generować, jak i odczytywać kody kreskowe — na przykład drukować etykiety wysyłkowe i weryfikować skanowanie — IronBarcode obsługuje obie te funkcje w bibliotece IronBarcode. ML Kit nie obsługuje ani generowania, ani odczytu po stronie serwera.
Wdrożenie w Azure lub AWS. Azure Functions, Azure App Service na systemie Linux, AWS Lambda — żadna z tych platform nie obsługuje ML Kit. IronBarcode jest przeznaczony dla wszystkich z nich.
Licencjonowanie i ceny
Skanowanie BarCode w Google ML Kit jest bezpłatne dla aplikacji na Androida i iOS. Nie ma opłat za skanowanie i nie jest wymagańa licencja komercyjna. Ten model cenowy ma sens w zamierzonym kontekście — natywnej bibliotece mobilnej dołączonej do Google Play Services.
IronBarcode to komercyjna biblioteka .NET z licencjami wieczystymi:
- Lite: 749 USD — 1 programista, 1 lokalizacja projektu
- Plus: 1499 USD — do 3 programistów
- Professional: 2999 USD — do 10 programistów
- Unlimited: 5999 USD — nieograniczona liczba programistów
Dostępna jest bezpłatna wersja próbna bez ograniczeń czasowych; Wersja próbna zawiera znaki wodne w postaci BARCODE-ów. Dla zespołów, które już płacą za infrastrukturę serwerową do przetwarzania dokumentów, koszt licencji stanowi zazwyczaj niewielką część nakładu inżynieryjnego wymagańego do utrzymania nieoficjalnego powiązania ML Kit.
Wnioski
Google ML Kit Barcode Scanning to dobrze zaprojektowana biblioteka, która robi dokładnie to, do czego została stworzona: szybko i dokładnie skanuje kody kreskowe na urządzeniach z systemem Android i iOS. Porównanie z IronBarcode nie dotyczy tego, która biblioteka jest lepsza, ale raczej tego, która z nich jest dostępna w kontekście, w którym jej potrzebujesz.
Jeśli piszesz w języku Kotlin dla systemu Android i skanujesz za pomocą aparatu, ML Kit jest doskonałym wyborem. Jeśli piszesz w języku C# dla platformy .NET — niezależnie od tego, czy chodzi o interfejs API sieci Web, usługę przetwarzania dokumentów, aplikację dla systemu Windows, funkcję w chmurze czy wielopłatformową aplikację MAUI — Google ML Kit nie ma dla Ciebie żadnej oferty. Nie ma pakietu NuGet, nie ma API C# i nie ma obsługiwanej przez Google ścieżki do użycia go w kodzie zarządzanym. IronBarcode to natywna biblioteka .NET, która obsługuje zarówno odczyt, jak i generowanie na każdej platformie obsługiwanej przez .NET.
Często Zadawane Pytania
Czym jest Google ML Kit Barcode Scanning?
Google ML Kit Barcode Scanning to biblioteka .NET do generowania i odczytywania kodów kreskowych w aplikacjach C#. Jest jedną z kilku alternatyw, które programiści oceniają, wybierając rozwiązanie dla kodów kreskowych w projektach .NET.
Jakie są główne różnice między Google ML Kit Barcode Scanning a IronBarcode?
IronBarcode używa statycznego, bezstanowego API, które nie wymaga zarządzania instancją, podczas gdy Google ML Kit Barcode Scanning zazwyczaj wymaga stworzenia instancji i konfiguracji przed użyciem. IronBarcode oferuje również natywne wsparcie dla PDF, automatyczne wykrywanie formatu i licencjonowanie za pomocą jednego klucza we wszystkich środowiskach.
Czy IronBarcode jest łatwiejszy do licencjonowania niż Google ML Kit Barcode Scanning?
IronBarcode wykorzystuje pojedynczy klucz licencyjny obejmujący zarówno wdrożenia deweloperskie, jak i produkcyjne. Upraszcza to procesy CI/CD oraz konfiguracje Docker w porównaniu z systemami licencyjnymi, które oddzielają klucze SDK od kluczy środowiska uruchomieniowego.
Czy IronBarcode obsługuje wszystkie formaty kodów kreskowych, które obsługuje Google ML Kit Barcode Scanning?
IronBarcode obsługuje ponad 30 symboli kodów kreskowych, w tym QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 i wiele innych. Automatyczne wykrywanie formatu oznacza, że nie jest wymagane jawne wyliczanie formatów.
Czy IronBarcode obsługuje natywne odczytywanie kodów kreskowych z plików PDF?
Tak. IronBarcode odczytuje kody kreskowe bezpośrednio z plików PDF za pomocą BarcodeReader.Read("document.pdf") bez konieczności korzystania z oddzielnej biblioteki do renderowania plików PDF. Wyniki dla każdej strony obejmują numer strony, format kodu kreskowego, wartość oraz wskaźnik pewności.
Jak IronBarcode radzi sobie z przetwarzaniem wsadowym w porównaniu do Google ML Kit Barcode Scanning?
Metody statyczne IronBarcode są bezstanowe i z natury bezpieczne dla wątków, co umożliwia bezpośrednie użycie Parallel.ForEach bez zarządzania instancjami dla poszczególnych wątków. Nie ma ograniczeń przepustowości w żadnym przedziale cenowym.
Jakie wersje .NET obsługuje IronBarcode?
IronBarcode obsługuje .NET Framework 4.6.2+, .NET Core 3.1 oraz .NET 5, 6, 7, 8 i 9 w jednym pakiecie NuGet. Obsługiwane platformy to Windows x64/x86, Linux x64 oraz macOS x64/ARM.
Jak zainstalować IronBarcode w projekcie .NET?
Zainstaluj IronBarcode za pomocą NuGet: uruchom polecenie „Install-Package IronBarCode” w konsoli menedżera pakietów lub „dotnet add package IronBarCode” w interfejsie CLI. Nie są wymagane żadne dodatkowe instalatory SDK ani pliki uruchomieniowe.
Czy mogę ocenić IronBarcode przed zakupem, w przeciwieństwie do Google ML Kit?
Tak. Tryb próbny IronBarcode zwraca pełne, zdekodowane wartości BarCode — tylko wygenerowane obrazy wyjściowe są opatrzone znakiem wodnym. Przed podjęciem decyzji o zakupie można sprawdzić dokładność odczytu na własnych dokumentach.
Jaka jest różnica cenowa między Google ML Kit Barcode Scanning a IronBarcode?
Cena IronBarcode zaczyna się od 749 USD za Licencję wieczystą dla jednego programisty, obejmującą etapy rozwoju i produkcji. Szczegóły dotyczące cen i opcji zakupu hurtowego są dostępne na stronie licencyjnej IronBarcode. Nie ma wymogu posiadania oddzielnej licencji na środowisko uruchomieniowe.
Czy łatwo jest migrować z Google ML Kit Barcode Scanning do IronBarcode?
Migracja z Google ML Kit Barcode Scanning do IronBarcode polega głównie na zastąpieniu wywołań API instancji metodami statycznymi IronBarcode, usunięciu boilerplate'u licencjonowania i aktualizacji nazw właściwości wyników. Większość migracji polega na redukcji kodu, a nie jego dodawaniu.
Czy IronBarcode generuje kody QR z logo?
Tak. Funkcja QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") osadza obraz marki w kodzie QR w sposób natywny z konfigurowalną korekcją błędów. Kolorowe kody QR są również obsługiwane za pomocą funkcji ChangeBarCodeColor().

