IRONSOFTWAREHOME
다른 구성 요소와 비교

Google ML Kit 바코드 스캔 vs IronBarcode: .NET 개발자가 알아야 할 사항

Curtis Chau
Curtis Chau
Updated: 2026년 4월 26일

Google ML Kit의 바코드 스캔 기능은 안드로이드에서 정말 인상적입니다. 이 기술은 Google Lens에 동력을 공급하고, 손상되거나 부분적으로 가려진 코드를 처리하며, 네트워크 호출 없이 기기 내에서 작동하고, 다양한 1D ​​및 2D 형식을 지원합니다. .NET 개발자들이 바코드 라이브러리 비교 과정에서 이러한 사실을 접하게 된다면, 그 내용은 정확합니다. 비교 기사에서 흔히 간과되는 점은 ML Kit에 .NET SDK, NuGet 패키지, C# API가 없다는 것입니다. 이 글은 ML Kit을 목록에서 발견하고 " .NET 프로젝트에서 ML Kit 사용"이 실제로 무엇을 의미하는지, 그리고 관리 코드 환경에서는 어떻게 구현되는지 이해하고자 하는 개발자를 위한 것입니다.

Google ML Kit 바코드 스캔이란 무엇인가요?

Google ML Kit 바코드 스캐닝은 네이티브 모바일 라이브러리입니다. 그것은 극복해야 할 제약 사항이 아닙니다. 제품 디자인입니다. ML 키트는 두 가지 버전으로 출시됩니다.

  • Android: Google Maven을 통해 com.google.mlkit:barcode-scanning (Kotlin/Java)로 배포됩니다. 대상 장치에 Google Play Services가 필요합니다. 카메라 프레임, 파일 URI, 비트맵에서 생성된 InputImage 객체를 처리합니다.
  • iOS: CocoaPods를 통해 GoogleMLKit/BarcodeScanning로 배포됩니다. Swift 또는 Objective-C를 사용합니다.

여기에는 dotnet add package google-mlkit-barcode가 없습니다. 여기에는 using Google.MLKit.BarcodeScanning;가 없습니다. 구글은 ML Kit for .NET 바인딩을 제공하지 않습니다.

커뮤니티가 유지 관리하는 Xamarin 및 MAUI 바인딩(예: BarcodeScanning.Native.Maui 또는 Xamarin.GooglePlayServices.MLKit.BarcodeScanning)은 여러 시점에 존재했지만 공통된 문제가 있습니다: ML Kit는 Android와 iOS SDK를 자주 업데이트하며, 개인이나 소규모 팀이 유지하는 바인딩 프로젝트는 배포 주기가 늦거나 기본 API가 변경되면 깨질 수 있습니다. Google .NET NuGet 패키지가 공식적으로 출시되지 않았습니다.

ML Kit의 장점

바코드 비교에 ML Kit이 나타나는 이유를 이해하는 것은 유용한 맥락을 제공합니다. 안드로이드 네이티브 버전에서:

  • 기기 내 추론: 서버 왕복이 필요 없습니다. ML Kit의 모델은 Google Play 서비스를 사용하여 로컬에서 실행되므로 지연 시간이 짧고 스캔 시 네트워크에 종속되지 않습니다.
  • 손상 허용 범위: 머신러닝 모델은 많은 임계값 기반 디코더보다 손상되었거나 부분적으로 가려졌거나 해상도가 낮은 바코드를 더 잘 처리합니다. 이는 실제 코드를 스캔하는 소비자 대상 앱에 있어 진정한 차별화 요소입니다.
  • Google Lens 연동: ML Kit의 스캐너는 Google Lens의 바코드 감지에 사용되는 것과 동일한 기술 스택을 사용합니다. 그것은 매우 좋은 품질 신호입니다.
  • 모바일 지원 포맷 범위: QR 코드, EAN-13, EAN-8, Code 128, Code 39, Code 93, Codabar, ITF, PDF417, Data Matrix, 아즈텍 및 UPC-A/UPC-E를 모두 기본적으로 지원합니다.
  • 설정이 필요 없습니다: 단 세 줄의 Kotlin 코드 조각으로 임계값을 조정하거나 디코더 전략을 선택할 필요 없이 작동하는 스캐너를 생성할 수 있습니다.

이것들은 분명한 강점입니다. .NET 개발자에게 문제는 ML Kit 자체가 나쁘다는 것이 아니라, 상당한 노력을 기울이지 않고는 ML Kit을 사용할 수 없다는 점입니다.

.NET 개발의 현실

.NET 개발자가 바코드를 스캔해야 할 때, ML Kit을 사용하는 실제 경로는 다음과 같습니다.

비동기/대기 C# API가 없습니다. ML Kit는 Android의 Task API를 addOnSuccessListeneraddOnFailureListener 콜백과 함께 사용합니다. 이것은 .NET의 Task<t>await에 매핑되지 않습니다. 모든 바인딩 레이어는 콜백 기반 Android 비동기 방식과 .NET의 TPL(Target Platform Language) 간에 적응해야 하는데, 이는 간단하지 않은 변환 작업이며 커뮤니티 바인딩에서는 일관성 없이 처리되고 있습니다.

.NET 종속성 주입 통합이 없습니다. BarcodeScanning.getClient(options)는 Android BarcodeScanner 객체를 반환하는 정적 팩토리 호출입니다. 등록할 .NET 인터페이스가 없으며, IServiceCollection.AddBarcodeScanner()도 없고, ASP.NET Core 미들웨어나 Azure Functions에 주입할 방법도 없습니다.

ASP.NET Core 또는 Azure Functions는 지원하지 않습니다. ML Kit는 Android 또는 iOS 런타임 컨텍스트가 필요합니다. 이 애플리케이션은 Linux의 웹 API 프로세스, Azure Function, Windows Server 또는 Docker 컨테이너에서 실행될 수 없습니다. 서버 측 바코드 처리(이미지를 입력받아 바코드 데이터를 반환하는 REST 엔드포인트, 문서 처리 파이프라인, 배치 작업 등)를 사용하는 경우, 바인딩 가능 여부와 관계없이 ML Kit는 아키텍처적으로 호환되지 않습니다.

카메라 또는 프레임 입력만 가능 — 파일, PDF 불가. ML Kit의 InputImageBitmap, ByteBuffer, 또는 Android 파일 시스템의 파일 URI로 생성될 수 있습니다. PDF 문서를 처리하거나, 페이지를 반복하거나, 여러 페이지로 구성된 TIFF 파일을 처리하는 개념이 없습니다. 서버 측 문서 처리는 본 제품의 범위에서 완전히 제외됩니다.

Google Play Services 종속성(독립 모델). 독립형 ML 모델 변형(com.google.android.gms:play-services-mlkit-barcode-scanning)은 Google Play Services를 통해 실행됩니다. Play Services가 없는 디바이스 — 맞춤형 Android 빌드, 특정 Enterprise 디바이스, Amazon Fire 태블릿 — 는 해당 변형을 사용할 수 없습니다. 번들 모델 옵션(com.google.mlkit:barcode-scanning)은 Play Services 없이 작동하지만 APK 크기에 약 2.4 MB의 용량을 추가합니다.

Android ML Kit 코드를 .NET 으로 포팅하기

ML Kit 바코드 스캔 기능을 사용하는 기존 Android 앱을 .NET MAUI 또는 .NET 9으로 포팅하려는 경우, 다음은 변환 방법입니다. 이 코틀린 코드는 ML Kit의 콜백 패턴을 사용합니다. 이 C# 코드는 IronBarcode의 동기 API를 사용합니다.

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

구조적인 차이는 구문적인 차이 이상입니다. ML Kit 버전은 스캐너 객체를 설정하고 InputImage를 생성하며 scanner.process()을 호출하고 성공 및 실패 콜백을 등록합니다. 결과가 필요하기 전에 진행하기 위해서는 콜백 실행을 나머지 로직과 조정해야 합니다 — 일반적으로 Java의 CountDownLatch 또는 Kotlin의 코루틴을 통해 가능합니다.

IronBarcode의 BarcodeReader.Read()은 결과 컬렉션을 동기적으로 반환합니다. 즉시 반복합니다. 콜백 등록도 없고, 스레드 동기화도 없고, 관리해야 할 별도의 스캐너 객체도 없습니다.

안드로이드 코드를 포팅하는 팀의 경우, 멀티 바코드 시나리오에 대한 패턴 변환은 다음과 같습니다.

// .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 플래그는 ML Kit의 setBarcodeFormats()와 동일합니다. 이 설정을 통해 검색 범위를 좁히고 성능을 향상시킬 수 있지만, ML Kit와 달리 설정하지 않아도 읽기 작업이 중단되지는 않습니다.IronBarcode지원되는 모든 형식을 시도합니다.

포맷 적용 범위 비교

두 도구 모두 주류 2D 및 1D 형식을 지원합니다. 겹치는 부분이 상당합니다.

형식ML 키트(안드로이드)IronBarcode
QR 코드
EAN-13
EAN-8
UPC-A
UPC-E
코드 128
코드 39
코드 93
코다바
ITF
PDF417
데이터 매트릭스
아즈텍
코드 11아니요
MSI 플레시아니요
파마코드아니요
인터리브드 2/5ITF를 통해
RSS-14 / GS1 데이터바아니요
마이크로 QR아니요
맥시코드아니요

IronBarcode는 읽기 및 생성 모두에 걸쳐 50개 이상의 심볼로지를 지원합니다. ML Kit의 형식 목록은 Google에서 모델과 함께 제공하는 형식으로 고정되어 있으며, 사용자 지정 심볼을 추가할 수 없습니다.

##IronBarcode추가하는 기능은 무엇인가요?

IronBarcode 바코드 읽기를 넘어 전체 바코드 워크플로를 다룹니다.

생성. ML Kit에는 바코드 생성 API가 전혀 없습니다. 바코드를 읽기만 할 뿐, 생성하지는 않습니다.IronBarcode지원되는 모든 형식을 PNG, JPEG, SVG, HTML 또는 바이너리 데이터로 생성합니다.

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

QR 코드 맞춤 설정. QRCodeWriter는 로고 삽입, 색상 변경 및 오류 수정 수준을 지원합니다. ML Kit는 QR 코드를 생성하지 않기 때문에 이러한 기능에 해당하는 것이 없습니다.

// 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 처리. BarcodeReader.Read("document.pdf")은 PDF의 모든 페이지에서 바코드를 네이티브로 읽습니다. 이미지 추출 단계도 없고, 별도의 PDF 라이브러리를 사용한 페이지별 반복 작업도 필요 없습니다. PDF 파일을 직접 처리합니다.

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

**서버 측 및 클라우드 환경 모두에서 사용 가능합니다.**IronBarcode Windows, Linux, macOS, Docker,Azure Functions및 AWS Lambda에서 실행됩니다. 구글 플레이 서비스, 카메라, 모바일 런타임이 필요하지 않습니다.

이진 출력. .ToPngBinaryData()byte[]을 직접 반환합니다 — 디스크에 쓰지 않고 HTTP 응답으로 바코드 이미지를 반환하는 API에 유용합니다.

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

기능 비교

기능구글 ML 키트 바코드IronBarcode
.NET /C# API없음 ( NuGet 패키지 없음)네 — using IronBarCode;
NuGet 패키지NoneBarCode
바코드 판독예 (안드로이드/iOS만 해당)예 (모든 플랫폼)
바코드 생성아니요예 (50개 이상의 형식)
QR 코드 생성아니요
QR 로고 삽입아니요
PDF 입력 지원아니요예 (원어민)
파일 입력 (PNG/JPEG)예 (InputImage URI를 통해)
카메라/프레임 입력예 (주요 사용 사례)이미지 파일을 통해
서버 측 처리아니요
ASP.NET Core 지원아니요
Azure Functions아니요
Docker/리눅스아니요
Windows 앱 지원아니요 (안드로이드/iOS만 해당)
구글 플레이 서비스 부서예 (해제된 모델)아니요
Firebase 종속성아니오 (2020년 이후 독립 실행형)아니요
C# API의 비동기/await 기능아니요동기식
하나의 이미지에 여러 개의 바코드
커뮤니티 .NET 바인딩커뮤니티에서 유지 관리됨, 공식적이지 않음해당 없음 (네이티브 .NET)
가격무료 (온 디바이스 API)749달러부터 영구적으로

API 개념 매핑

공식적인 .NET ML Kit API가 없기 때문에 이 매핑은 개념적인 것으로, 각 ML Kit 작업의 의도와 그에 상응하는IronBarcode기능을 보여줍니다.

ML 키트(Kotlin/Java 컨셉)IronBarcode(.NET C#)
BarcodeScannerOptions.Builder()new BarcodeReaderOptions { }
.setBarcodeFormats(FORMAT_QR_CODE)ExpectBarcodeTypes = BarcodeEncoding.QRCode
BarcodeScanning.getClient(options)정적 - 스캐너 객체가 필요하지 않음
InputImage.fromFilePath(context, uri)파일 경로 문자열을 BarcodeReader.Read()에 전달
InputImage.fromBitmap(bitmap, rotation)BarcodeReader.Read(stream) 또는 바이트 배열 오버로드
scanner.process(inputImage)BarcodeReader.Read(path, options)
.addOnSuccessListener { barcodes -> }Read()의 반환 값 — 직접 반복
.addOnFailureListener { e -> }표준적인 시도/포획
barcode.rawValuebarcode.Value
barcode.formatbarcode.Format
barcode.boundingBox결과 객체의 영역 데이터
Barcode.FORMAT_QR_CODEBarcodeEncoding.QRCode
Barcode.FORMAT_CODE_128BarcodeEncoding.Code128
생성 API 없음BarcodeWriter.CreateBarcode()
생성 API 없음QRCodeWriter.CreateQrCode()
Speed / 모델 선택ReadingSpeed.Balanced / .Faster / .Detailed

##IronBarcode고려해야 할 시점은 언제일까요?

Android 앱을 .NET MAUI 또는 .NET 9로 포팅하는 경우, Android 앱에서 바코드 스캔에 ML Kit을 사용하고 .NET 버전으로 동일한 기능을 구현하려는 경우IronBarcode가장 적합한 선택입니다. 개념 번역은 간단합니다. 파일을 읽고, 결과를 얻고, 값을 반복 처리하는 것입니다.

서버 측 바코드 처리. 바코드를 스캔하는 HTTP 엔드포인트, 업로드된 이미지를 처리하는 백그라운드 작업, PDF에서 코드를 추출하는 문서 워크플로 등 모든 시나리오를 포함합니다. ML Kit는 이러한 활동에 참여할 수 없습니다.

윈도우 데스크톱 애플리케이션. 윈도우 기반 WinForms, WPF 또는 .NET MAUI . ML Kit는 윈도우에서 전혀 실행되지 않습니다.

Google Play Services가 없는 환경. Android 배포에 Google Play Services가 없는 디바이스가 포함되어 있는 경우 — Enterprise 하드웨어, 맞춤 AOSP 빌드, Amazon Fire 디바이스 — 해제된 ML Kit 모델이 사용 불가능하고, 더 큰 번들 모델만 남아 있습니다.IronBarcode에는 그러한 종속성이 없습니다.

바코드 생성과 판독을 동시에 지원합니다. 예를 들어 배송 라벨을 인쇄하고 스캔 결과를 검증하는 등 바코드를 생성하고 판독해야 하는 경우,IronBarcode동일한 라이브러리에서 두 가지 기능을 모두 제공합니다. ML Kit는 데이터 생성이나 서버 측 읽기 기능을 제공하지 않습니다.

Azure 또는 AWS 배포. Azure Functions, Linux 기반 Azure App Service, AWS Lambda는 모두 ML Kit을 호스팅할 수 없습니다.IronBarcode이 모든 것을 대상으로 합니다.

라이선스 및 가격

Google ML Kit 바코드 스캔의 온 디바이스 API는 Android 및 iOS 앱에 무료입니다. 스캔당 요금이 없고 상업적 라이선스가 필요하지 않습니다. 해당 가격 모델은 Maven 및 CocoaPods을 통해 배포되는 네이티브 모바일 라이브러리의 의도된 컨텍스트에 적합합니다.

IronBarcode 는 영구 라이선스가 제공되는 상 for .NET 라이브러리입니다.

  • Lite: 749달러 — 개발자 1명, 프로젝트 위치 1곳
  • Plus: $1,499 — 최대 3명의 개발자
  • Professional: 2,999달러 — 개발자 최대 10명
  • 무제한: 5,999달러 — 개발자 무제한

무료 체험이 가능합니다. 시험용 워터마크는 바코드를 생성했습니다. 이미 문서를 처리하기 위한 서버 인프라를 운영 중인 팀의 경우, 라이선스 비용은 비공식 ML Kit 바인딩을 유지하기 위해 필요한 엔지니어링 노력의 일부분에 불과합니다.

결론

Google ML Kit 바코드 스캐닝은 안드로이드 및 iOS 기기에서 바코드를 빠르고 정확하게 스캔하는, 설계된 목적에 정확히 부합하는 잘 만들어진 라이브러리입니다.IronBarcode와의 비교는 어떤 라이브러리가 더 나은지에 대한 것이 아니라, 필요한 상황에서 어떤 라이브러리가 존재하는지에 대한 것입니다.

Kotlin으로 Android 앱을 작성하고 카메라로 스캔하는 경우 ML Kit는 훌륭한 선택입니다. 하지만 C#으로 .NET 용 앱을 작성하는 경우(웹 API, 문서 처리 서비스, Windows 애플리케이션, 클라우드 함수 또는 크로스 플랫폼 MAUI 앱 등) Google ML Kit는 적합한 기능을 제공하지 않습니다. NuGet 패키지도 없고, C# API도 없으며, 관리 코드에서 이를 사용할 수 있는 Google에서 지원하는 경로도 없습니다.IronBarcode는 .NET 지원하는 모든 플랫폼에서 바코드 읽기 및 생성을 모두 지원하는 네이티브 .NET 라이브러리입니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.