IRONSOFTWAREHOME
DIĞER BILEŞENLERLE KARŞILAŞTIRIN

Google ML Kit Barkod Scanning ve IronBarcode: .NET Geliştiricilerinin Bilmesi Gerekenler

Curtis Chau
Curtis Chau
Updated: 26 Nisan 2026

Google ML Kit'in Android'deki barkod taraması gerçekten etkileyicidir. Google Lens'i çalıştırır, hasarlı ve kısmen kapatılmış kodları işler, hiçbir ağ çağrısı olmaksızın cihaz üzerinde çalışır ve geniş bir 1D ve 2D format yelpazesini destekler. .NET geliştiricileri bir barkod kütüphanesi karşılaştırmasında bunu karşılaştığında, bu gerçekler doğrudur. Karşılaştırma makaleleri genellikle ML Kit'in bir .NET SDK'sı, bir NuGet paketi ve bir C# API'si olmadığı gerçeğini içermez. Bu makale, bir listede ML Kit bulan ve aslında bir .NET projesinde ML Kit kullanmayı ve yönetilen-kod eşdeğerinin nasıl göründüğünü anlaması gereken geliştiriciler içindir.

Google ML Kit Barkod Scanning Nedir

Google ML Kit Barcode Scanning, yerel bir mobil kütüphanedir. Bu çalışılmak zorunda olan bir sınırlama değildir; ürünün tasarımıdır. ML Kit iki türde piyasaya sürülür:

  • Android: Google Maven üzerinden com.google.mlkit:barcode-scanning (Kotlin/Java) olarak dağıtılır. Hedef cihazda Google Play Hizmetleri gerektirir. Kamera çerçevelerinden, dosya URI'larından veya bitmaplerden oluşturulan InputImage nesnelerini işler.
  • iOS: CocoaPods üzerinden GoogleMLKit/BarcodeScanning olarak dağıtılır. Swift veya Objective-C kullanır.

dotnet add package google-mlkit-barcode yok. using Google.MLKit.BarcodeScanning; yok. Google, ML Kit için bir .NET bağlama yayınlamıyor.

Topluluk tarafından desteklenen Xamarin ve MAUI bağlamaları (örneğin, BarcodeScanning.Native.Maui veya Xamarin.GooglePlayServices.MLKit.BarcodeScanning) çeşitli noktalarda var olmuştur, ancak hepsi ortak bir zorlukla karşılaşır: ML Kit, Android ve iOS SDK'larını sık sık günceller ve bireyler veya küçük ekipler tarafından sürdürülen bağlama projeleri geride kalabilir veya API değiştiğinde çalışmayabilir. ML Kit barkod tarayıcısı için ilk taraf Google .NET NuGet paketi yoktur.

ML Kit'in İyi Yaptıkları

ML Kit'in barkod karşılaştırmalarına neden dahil olduğunu anlamak faydalı bir bağlamdır. Yerel Android üzerinde:

  • Cihaz üzerinde çıkarım: Sunucu turu gerektirmez. ML Kit'in modeli Google Play Hizmetlerini kullanarak yerel olarak çalışır, bu da düşük gecikme ve tarama esnasında ağ bağımlılığı olmadığını ifade eder.
  • Hasar toleransı: ML modeli, birçok eşik tabanlı kod çözücüden daha iyi bir şekilde hasar görmüş, kısmen görmeyen veya düşük çözünürlüklü barkodları işler. Bu, gerçek dünyadaki kodları tarayan tüketiciye yönelik uygulamalar için gerçek bir ayırt edicidir.
  • Google Lens entegrasyonu: ML Kit'in tarayıcısı, Google Lens barkod algılamasını yöneten aynı yığın. Bu güçlü bir kalite sinyalidir.
  • Mobilde format genişliği: QR Kodu, EAN-13, EAN-8, Code 128, Code 39, Code 93, Codabar, ITF, PDF417, Data Matrix,Aztekve UPC-A/UPC-E hepsi yerel olarak desteklenmektedir.
  • Sıfır yapılandırma: Üç satırlık Kotlin kodu, eşikleri ayarlama veya bir kod çözme stratejisi seçme gerektirmeden çalışır bir tarayıcı üretebilir.

Bunlar meşru güçlü yanlardır. .NET geliştiricileri için sorun ML Kit'in kötü olması değil — ML Kit'in onlara önemli bir çaba göstermeden sunulmasıdır.

.NET Geliştirme Gerçekliği

Bir .NET geliştirici barkodları taramak istediğinde, ML Kit yolu pratikte böyle görünür:

Async/await C# API'si yok. ML Kit, Android'in Task API'sini addOnSuccessListener ve addOnFailureListener geri çağrıları ile kullanır. Bunlar, .NET'in Task<t> ve await'iyle eşleşmez. Herhangi bir bağlama katmanı, geri çağrı tabanlı Android eş zamansız ve .NET'in TPL'si arasında uyum sağlamak zorundadır — bu, topluluk bağlamalarının tutarsız bir şekilde ele aldığı zor bir tercümedir.

.NET bağımlılık enjeksiyonu entegrasyonu yok. BarcodeScanning.getClient(options), bir Android BarcodeScanner nesnesi döndüren statik bir fabrika çağrısıdır. Kayıt edilecek bir .NET arayüzü yok, IServiceCollection.AddBarcodeScanner() yok, bunu ASP.NET Core ara katmanına veya Azure Functions'a enjekte etmenin bir yolu yok.

ASP.NET Core veya Azure İşlev desteği yok. ML Kit, Android veya iOS çalışma zamanı bağlamı gerektirir. Linux üzerindeki bir web API işleminde, bir Azure İşlevinde, Windows Server veya bir Docker konteynerinde çalışamaz. Kullanım amacınız sunucu tarafı barkod işleme ise — bir görüntü kabul eden ve barkod verilerini döndüren bir REST uç noktası, bir belge işleme hattı, bir toplu iş — ML Kit, herhangi bir bağlamanın mevcut olmasına bakılmaksızın mimari olarak uyumsuzdur.

Kamera veya çerçeve girişi yalnızca — dosya yok, PDF yok. ML Kit'in InputImage, bir Bitmap, bir ByteBuffer veya Android dosya sisteminde bir dosya URI'si üzerinden oluşturulabilir. Bir PDF belgesini işleme, sayfaları yineleme veya çok sayfalı bir TIFF ile uğraşma kavramı yoktur. Sunucu tarafı belge işleme tamamen ürünün kapsamı dışındadır.

Google Play Hizmetleri bağımlılığı (paketsiz model). Paketlenmemiş ML modeli varyantı (com.google.android.gms:play-services-mlkit-barcode-scanning), Google Play Hizmetleri aracılığıyla çalışır. Play Hizmetleri olmayan cihazlar — özel Android yapıları, bazı kurumsal cihazlar, Amazon Fire tabletler — o varyantı kullanamaz. Paketlenmiş model seçeneği (com.google.mlkit:barcode-scanning), Play Hizmetleri olmadan çalışır ancak APK boyutuna yaklaşık 2,4 MB ekler.

Android ML Kit Kodunu .NET'e Taşımak

Mevcut bir Android uygulamanızda ML Kit barkod taraması varsa ve bunu .NET MAUI veya .NET 9'a taşıyorsanız, burada çeviri yapılır. Kotlin kodu ML Kit'in geri çağrı modelini kullanır; C# kodu IronBarcode'un eşzamanlı API'sini kullanır.

// 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 ?: "") }
Text
// .NET C#: IronBarcode
// NuGet: dotnet add package BarCode
using IronBarCode;

var results = BarcodeReader.Read("captured-image.jpg");
foreach (var barcode in results)
{
    Console.WriteLine($"{barcode.Format}: {barcode.Value}");
}

Yapısal fark, sözdiziminden daha fazladır. ML Kit sürümü bir tarayıcı nesnesi kurar, bir InputImage oluşturur, scanner.process() çağırır ve başarı ve başarısızlık geri çağrılarını kaydeder. İlerlemeden önce sonucu almanız gerekiyorsa, geri çağrı yürütmenin geri kalan mantığınızla koordine edilmesi gerekir - genellikle Java'da CountDownLatch veya Kotlin'de korutinler aracılığıyla.

IronBarcode'un BarcodeReader.Read() sonucu senkron olarak bir koleksiyon döndürür. Hemen yineleme yaparsınız. Geri çağrı kaydetme, iş parçacığı senkronizasyonu, yönetilecek ayrı bir tarayıcı nesnesi yoktur.

Android kodunu taşıyan ekipler için, çoklu barkod senaryoları için desen çevirisi şöyle görünür:

// .NET C#:IronBarcode— reading multiple barcodes with options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};

var results = BarcodeReader.Read("image.jpg", options);
foreach (var barcode in results)
{
    Console.WriteLine($"Format: {barcode.Format}, Value: {barcode.Value}");
}
C#

ExpectBarcodeTypes bayrağı, ML Kit'in setBarcodeFormats() eşdeğeridir. Bunu ayarlamak aramayı daraltır ve performansı artırır, ancak ML Kit'ten farklı olarak, ayarlanmamış olarak bırakmak okumanın bozulmasına neden olmaz —IronBarcode tüm desteklenen formatları deneyecektir.

##BiçimKapsama Karşılaştırması

Her iki araç da ana akım 2D ve 1D formatları kapsar. Kapsama çakışması önemlidir.

BiçimML Kit (Android)IronBarcode
QR KoduEvetEvet
EAN-13EvetEvet
EAN-8EvetEvet
UPC-AEvetEvet
UPC-EEvetEvet
Code 128EvetEvet
Code 39EvetEvet
Code 93EvetEvet
CodabarEvetEvet
ITFEvetEvet
PDF417EvetEvet
Data MatrixEvetEvet
AztekEvetEvet
Code 11HayırEvet
MSI PlesseyHayırEvet
PharmacodeHayırEvet
Interleaved 2 of 5Via ITFEvet
RSS-14 / GS1 DatabarHayırEvet
Mikro QRHayırEvet
MaxiCodeHayırEvet

IronBarcode, okuma ve üretim için 50'den fazla sembolojiyi destekler. ML Kit'in format listesi, Google'ın modelle birlikte gönderdiği şeylerle sınırlıdır — özel sembolojiler ekleyemezsiniz.

IronBarcode'un Ekledikleri

Okumanın ötesinde, IronBarcode, tam bir barkod iş akışını kapsar:

Üretim. ML Kit'in hiçbir üretim API'si yoktur — barkodları okuyup yaratmaz. IronBarcode, desteklenen herhangi bir formatı PNG, JPEG, SVG, HTML veya ikili verilere dönüştürür.

// Generate aCode 128barcode to file
BarcodeWriter.CreateBarcode("SHIP-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");
C#

QR kodu özelleştirme. QRCodeWriter logo yerleştirme, renk değişiklikleri ve hata düzeltme seviyelerini destekler — ML Kit, hiçbir şey üretmediğinden, bu özelliklerin ML Kit eşdeğeri yoktur.

// 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");

PDF işleme. BarcodeReader.Read("document.pdf"), bir PDF'in her sayfasından yerel olarak barkod okur. Hiçbir görüntü çıkarma adımı, ayrı bir PDF kütüphanesi ile sayfa bazlı bir döngü yok — PDF'leri doğrudan işler.

// 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}");
}

Sunucu tarafı ve bulut. IronBarcode, Windows, Linux, macOS, Docker, Azure İşlevleri ve AWS Lambda'da çalışır. Google Play Hizmetleri gereksinimi, kamera, mobil çalışma zamanı yoktur.

İkili çıktı. .ToPngBinaryData(), doğrudan bir byte[] döndürür — diske yazmadan HTTP yanıtları olarak barkod görüntüleri döndüren API'ler için faydalıdır.

// Generate barcode and return as byte array (e.g., in a web API)
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("ORDER-8821", BarcodeEncoding.QRCode)
    .ToPngBinaryData();

Özellik Karşılaştırması

ÖzellikGoogle ML Kit BarkodIronBarcode
.NET / C# APIYok (NuGet paketi yok)Evet — using IronBarCode;
NuGet paketiNoneBarCode
Barkod okumaEvet (sadece Android/iOS)Evet (tüm platformlar)
Barkod oluşturmaHayırEvet (50+ format)
QR kod üretimiHayırEvet
QR logo yerleştirmeHayırEvet
PDF girişi desteğiHayırEvet (yerel)
Dosya girişi (PNG/JPEG)Evet (InputImage URI üzerinden)Evet
Kamera / çerçeve girişiEvet (birincil kullanım durumu)Görüntü dosyası üzerinden
Sunucu tarafı işlemeHayırEvet
ASP.NET Çekirdek desteğiHayırEvet
Azure FunctionsHayırEvet
Docker / LinuxHayırEvet
Windows uygulama desteğiHayır (sadece Android/iOS)Evet
Google Play Hizmetleri bağımlılığıEvet (dağılmamış model)Hayır
Firebase bağımlılığıHayır (2020'den beri bağımsız)Hayır
Asenkron/await C# APIHayırSenkron
Bir görüntüde çoklu barkodEvetEvet
Topluluk .NET bağıTopluluk tarafından sürdürülen, ilk taraf değilUygulanamaz (yerel .NET)
FiyatlandırmaÜcretsiz (cihaz üzerinde API)$999'dan .oneqislmeşuhperüd

API Kavram Haritası

Resmi bir .NET ML Kit API olmadığı için, bu haritalama kavramsaldır — her ML Kit işleminin amacını ve IronBarcode eşdeğerini gösterir.

ML Kit (Kotlin/Java kavramı)IronBarcode (.NET C#)
BarcodeScannerOptions.Builder()new BarcodeReaderOptions { }
.setBarcodeFormats(FORMAT_QR_CODE)ExpectBarcodeTypes = BarcodeEncoding.QRCode
BarcodeScanning.getClient(options)Statik — tarayıcı nesnesi gerekli değil
InputImage.fromFilePath(context, uri)Dosya yolu dizesi BarcodeReader.Read()'a geçti
InputImage.fromBitmap(bitmap, rotation)BarcodeReader.Read(stream) veya bayt dizisi aşırı yüklemesi
scanner.process(inputImage)BarcodeReader.Read(path, options)
.addOnSuccessListener { barcodes -> }Read() dönüş değeri — doğrudan yineleme yapın
.addOnFailureListener { e -> }Standart try/catch
barcode.rawValuebarcode.Value
barcode.formatbarcode.Format
barcode.boundingBoxSonuç nesnesi üzerindeki bölge verileri
Barcode.FORMAT_QR_CODEBarcodeEncoding.QRCode
Barcode.FORMAT_CODE_128BarcodeEncoding.Code128
Üretim API'si yokBarcodeWriter.CreateBarcode()
Üretim API'si yokQRCodeWriter.CreateQrCode()
Speed / model seçimiReadingSpeed.Balanced / .Faster / .Detailed

Ne Zaman IronBarcode Düşünülmeli

Bir Android uygulamasını .NET MAUI veya .NET 9'a taşımak. Eğer Android uygulamanızda ML Kit barkod taramayı kullanıyorsa ve bir .NET eşdeğeri oluşturuyorsanız,IronBarcode doğal hedeftir. Kavram çeviri basittir — bir dosyayı okuyun, bir sonuç alın, değerleri yineleyin.

Sunucu tarafı barkod işleme. Bar kodları tarayan bir HTTP uç noktayı içeren herhangi bir senaryo, yüklenen görüntüleri işleyen bir arka plan işi veya PDF'lerden kod çıkaran bir belge iş akışı. ML Kit'in hiçbiri mümkündür.

Windows masaüstü uygulamaları. WinForms, WPF veya Windows üzerinde .NET MAUI. ML Kit Windows'ta hiç çalışmaz.

Google Play Hizmetleri olmayan ortamlar. Android dağıtımınıza Google Play Hizmetleri olmayan cihazlar dahiliyorsa —kurumsal donanım, özel AOSP yapıları, Amazon Fire cihazları— dağılmamış ML Kit modeli kullanılabilir değildir ve yalnızca daha büyük demet varyantı kalır. IronBarcode'un böyle bir bağımlılığı yoktur.

Okuma ile birlikte üretim. Hem barkod üretmeniz hem de okumanız gerekiyorsa — örneğin, gönderi etiketlerini yazdırman ve taramaları doğrulamanız gerekiyorsa —IronBarcode ikisini de aynı kütüphanede ele alır. ML Kit ne üretimi ne de sunucu tarafı okuma yapmaz.

Azure veya AWS dağıtımı. Azure İşlevleri, Linux üzerinde Azure Uygulama Hizmeti, AWS Lambda — hiçbiri ML Kit barındıramaz.IronBarcode hepsini hedefler.

Lisanslama ve Fiyatlandırma

Google ML Kit Barcode Scanning'in cihaz üzerindeki API'si Android ve iOS uygulamaları için ücretsizdir. Tarama başına ücret yoktur ve ticari lisans gerekmez. Bu fiyatlandırma modeli, amacına uygun bağlam — Maven ve CocoaPods aracılığıyla dağıtılan yerel bir mobil kitaplık.

IronBarcode, süresiz lisanslar sunan ticari bir .NET kütüphanesidir:

  • Lite: $999 — 1 geliştirici, 1 proje konumu
  • Plus: $1,499 — 3 geliştiriciye kadar
  • Professional: $2,399 — 10 geliştiriciye kadar
  • Unlimited: $4,799 — sınırsız geliştirici

Ücretsiz deneme mevcuttur; deneme, oluşturulan barkodları su damgası ile işaretler. Halihazırda belgeleri işlemek için sunucu altyapısını çalıştıran ekipler için lisans maliyeti, genellikle resmi olmayan bir ML Kit bağlamasını sürdürmek için gereken mühendislik çabasının küçük bir kısmıdır.

Sonuç

Google ML Kit Barkod Tarama, tam olarak ne yapması için tasarlandığıdır: Android ve iOS cihazlarda barkodları hızlı ve doğru bir şekilde tarayan iyi bir mühendislikle yapılmış bir kütüphanedir.IronBarcode ile karşılaştırma, daha çok hangi kütüphanenin ihtiyaç duyduğunuz bağlamda var olduğu daha azdır ki, hangi kütüphanenin daha iyi olduğu daha azdır.

Kotlin yazıyor ve bir kameradan Android için tarıyor iseniz, ML Kit mükemmel bir seçenektir. .NET için C# yazıyorsanız — ister web API'si, ister bir belge işleme hizmeti, bir Windows uygulaması, bir bulut işlevi veya platformlar arası bir MAUI uygulaması olsun — Google ML Kit sizin için hiçbir teklif yoktur. "NuGet paketi yok, C# API'si yok ve yönetilen kodda kullanıma yönelik Google destekli bir yol yok." IronBarcode, .NET Destekleyen her platformda okuma ve üretim yapan yerel bir .NET kütüphanesidir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez