Comparação entre a leitura de código de barras do Google ML Kit e a biblioteca de código de barras em C# IronBarcode.
A capacidade de leitura de código de barras do Google ML Kit no Android é realmente impressionante. Ele alimenta o Google Lens, lida com códigos danificados e parcialmente ocultos, funciona no dispositivo sem necessidade de chamada de rede e suporta uma ampla gama de formatos 1D e 2D. Quando os desenvolvedores .NET se deparam com isso em uma comparação de bibliotecas de código de barras, esses fatos são precisos. O que os artigos de comparação frequentemente omitem é que o ML Kit não possui SDK para .NET , pacote NuGet ou API para C#. Este artigo destina-se a desenvolvedores que encontraram o ML Kit em uma lista e precisam entender o que "usar o ML Kit em um projeto .NET " realmente significa na prática — e como é o equivalente em código gerenciado.
O que é a leitura de código de barras do Google ML Kit?
O Código de barras do Google ML Kit Scanning é uma biblioteca nativa para dispositivos móveis. Essa não é uma limitação que possa ser contornada; Trata-se do design do produto. O ML Kit é enviado em duas versões:
- Android: Distribuído via Google Maven como
com.google.mlkit:barcode-scanning(Kotlin/Java). Requer os Serviços do Google Play no dispositivo de destino. Processa objetosInputImageconstruídos a partir de quadros da câmera, URIs de arquivos ou bitmaps. - iOS: Distribuído via CocoaPods como
GoogleMLKit/BarcodeScanning, com dependência do Firebase. Utiliza Swift ou Objective-C.
Não existe dotnet add package google-mlkit-barcode. Não existe using Google.MLKit.BarcodeScanning;. O Google não publica uma biblioteca .NET para o ML Kit.
Já existiram, em vários momentos, integrações Xamarin mantidas pela comunidade, mas elas apresentam um problema constante: o ML Kit atualiza seus SDKs para Android e iOS com frequência, e os projetos de integração mantidos por indivíduos ou pequenas equipes tendem a ficar desatualizados ou a parar de funcionar completamente quando a API subjacente é alterada. Até 2026, não existe nenhum pacote NuGet .NET pronto para produção e com manutenção ativa que encapsule o leitor de código de barras do ML Kit.
O que o ML Kit faz bem
Entender por que o ML Kit aparece em comparações de códigos de barras é um contexto útil. Não Android nativo:
- Inferência no dispositivo: Sem comunicação com o servidor. O modelo do ML Kit é executado localmente usando o Google Play Services, o que significa baixa latência e nenhuma dependência de rede no momento da análise.
- Tolerância a danos: O modelo de aprendizado de máquina lida com códigos de barras danificados, parcialmente obscurecidos ou de baixa resolução melhor do que muitos decodificadores baseados em limiares. Isso representa um diferencial real para aplicativos voltados ao consumidor que analisam códigos do mundo real.
- Integração com o Google Lens: o scanner do ML Kit utiliza a mesma tecnologia que alimenta a detecção de código de barras do Google Lens. Isso é um sinal de alta qualidade.
- Ampla variedade de formatos em dispositivos móveis: Código QR, EAN-13, EAN-8, Code 128, Code 39, Code 93, Codabar, ITF, PDF417, Data Matrix, asteca e UPC-A/UPC-E são todos suportados nativamente.
- Configuração zero: Um pequeno trecho de código Kotlin de três linhas pode produzir um scanner funcional sem a necessidade de ajustar limites ou escolher uma estratégia de decodificação.
Essas são qualidades legítimas. A questão para os desenvolvedores .NET não é que o ML Kit seja ruim — é que o ML Kit não está disponível para eles sem um trabalho significativo.
A realidade do desenvolvimento .NET
Quando um desenvolvedor .NET precisa ler códigos de barras, o caminho do ML Kit na prática se parece com isto:
Sem API async/await em C#. O ML Kit usa a API Task do Android com callbacks addOnSuccessListener e addOnFailureListener. Estes não correspondem aos códigos Task<t> e await do .NET. Qualquer camada de vinculação precisa se adaptar entre o comportamento assíncrono baseado em callbacks do Android e a TPL do .NET — uma tradução complexa que as vinculações da comunidade fazem de forma inconsistente.
Sem integração de injeção de dependência .NET. @@--CÓDIGO-63973--@@ é uma chamada de fábrica estática que retorna um objeto Android BarcodeScanner. Não existe interface .NET para registrar, nenhum IServiceCollection.AddBarcodeScanner(), nenhuma maneira de injetá-lo no middleware do ASP.NET Core ou no Azure Functions.
Não há suporte para ASP.NET Core ou Azure Functions. O ML Kit requer o contexto de execução do Android ou iOS. Não pode ser executado em um processo de API da Web no Linux, em uma Função do Azure, no Windows Server ou em um contêiner Docker. Se o seu caso de uso for o processamento de código de barras no servidor — um endpoint REST que aceita uma imagem e retorna dados de código de barras, um pipeline de processamento de documentos, um trabalho em lote — o ML Kit é arquiteturalmente incompatível, independentemente da disponibilidade de qualquer integração.
Entrada somente por câmera ou quadro — sem arquivo, sem PDF. O InputImage do ML Kit pode ser construído a partir de um Bitmap, um ByteBuffer ou um URI de arquivo no sistema de arquivos do Android. Não existe o conceito de processar um documento PDF, iterar páginas ou lidar com um TIFF de várias páginas. O processamento de documentos no servidor está completamente fora do escopo do produto.
Dependência do Google Play Services. O modelo de aprendizado de máquina no dispositivo é executado por meio do Google Play Services. Dispositivos sem os Serviços do Google Play — versões personalizadas do Android, determinados dispositivos Enterprise e tablets Amazon Fire — não podem usar a configuração padrão do ML Kit. A opção de modelo "agrupado" (com.google.mlkit:barcode-scanning-bundled) resolve esse problema, mas aumenta significativamente o tamanho do APK.
Adaptando o código do Android ML Kit para .NET
Se você já possui um aplicativo Android com leitura de código de barras ML Kit e está migrando-o para .NET MAUI ou .NET 9, aqui está a tradução. O código Kotlin utiliza o padrão de retorno de chamada (callback) do ML Kit; O código C# utiliza a API síncrona do 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
A diferença estrutural vai além da sintaxe. A versão do ML Kit configura um objeto scanner, constrói um InputImage, chama scanner.process() e registra retornos de chamada de sucesso e falha. Se você precisar do resultado antes de prosseguir, terá que coordenar a execução do callback com o restante da sua lógica — normalmente por meio de um CountDownLatch em Java ou corrotinas em Kotlin.
O método BarcodeReader.Read() doIronBarcoderetorna uma coleção de resultados de forma síncrona. Você executa o processo imediatamente. Não há registro de callback, nenhuma sincronização de threads, nenhum objeto scanner separado para gerenciar.
Para equipes que estão migrando código Android, a tradução de padrões para cenários com múltiplos códigos de barras é a seguinte:
// .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
A flag ExpectedBarcodeTypes é o equivalente à flag setBarcodeFormats() do ML Kit. Configurar essa opção restringe a busca e melhora o desempenho, mas, diferentemente do ML Kit, deixá-la desativada não interrompe a leitura — oIronBarcodetentará todos os formatos suportados.
Comparação de Cobertura de Formatos
Ambas as ferramentas abrangem os formatos 2D e 1D mais comuns. A sobreposição é substancial.
| Formato | Kit de ML (Android) | IronBarcode |
|---|---|---|
| Código QR | Sim | Sim |
| EAN-13 | Sim | Sim |
| EAN-8 | Sim | Sim |
| UPC-A | Sim | Sim |
| UPC-E | Sim | Sim |
| Código 128 | Sim | Sim |
| Código 39 | Sim | Sim |
| Código 93 | Sim | Sim |
| Codabar | Sim | Sim |
| ITF | Sim | Sim |
| PDF417 | Sim | Sim |
| Matriz de dados | Sim | Sim |
| asteca | Sim | Sim |
| Código 11 | Não | Sim |
| MSI Plessey | Não | Sim |
| Código farmacêutico | Não | Sim |
| Intercalado 2 de 5 | Via ITF | Sim |
| Barra de dados RSS-14 / GS1 | Não | Sim |
| Micro QR | Não | Sim |
| MaxiCode | Não | Sim |
OIronBarcodesuporta mais de 50 tipos de codificação, tanto para leitura quanto para geração. A lista de formatos do ML Kit é fixa e corresponde ao que o Google fornece com o modelo — não é possível adicionar simbologias personalizadas.
O que oIronBarcodeadiciona
Além da leitura, oIronBarcodeabrange todo o fluxo de trabalho de código de barras:
Geração. O ML Kit não possui nenhuma API de geração — ele lê códigos de barras, não os cria. OIronBarcodegera dados em qualquer formato suportado, como PNG, JPEG, SVG, HTML ou dados binários.
// Generate a Código 128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// Generate a Código 128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
' Generate a Código 128 barcode to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
Personalização de código QR. O QRCodeWriter suporta a incorporação de logotipos, alterações de cores e níveis de correção de erros — recursos que não têm equivalente no ML Kit, pois o ML Kit não gera nada.
// 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")
Processamento de PDF. BarcodeReader.Read("document.pdf") lê códigos de barras de todas as páginas de um PDF nativamente. Sem etapa de extração de imagem, sem loop página por página com uma biblioteca PDF separada — ele lida com PDFs diretamente.
// 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
Servidor e nuvem. OIronBarcodefunciona em Windows, Linux, macOS, Docker, Funções do Azure e AWS Lambda. Não há necessidade de usar os Serviços do Google Play, nem de câmera, nem de ambiente de execução móvel.
Saída binária. .ToPngBinaryData() retorna um byte[] diretamente — útil para APIs que retornam imagens de código de barras como respostas HTTP sem gravar em disco.
// 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()
Comparação de recursos
| Recurso | Código de barras do Google ML Kit | IronBarcode |
|---|---|---|
| API .NET / C# | Nenhum (nenhum pacote NuGet ) | Sim — using IronBarCode; |
| Pacote NuGet | Nenhum | @@--CÓDIGO-63968--@@ |
| Leitura de código de barras | Sim (somente para Android/iOS) | Sim (todas as plataformas) |
| Geração de código de barras | Não | Sim (mais de 50 formatos) |
| Geração de código QR | Não | Sim |
| Incorporação de logotipo QR | Não | Sim |
| Suporte para entrada de PDF | Não | Sim (nativo) |
| Entrada de arquivo (PNG/JPEG) | Sim (via URI InputImage) | Sim |
| Entrada de câmera/quadro | Sim (caso de uso principal) | Por meio de arquivo de imagem |
| Processamento do lado do servidor | Não | Sim |
| Suporte ao ASP.NET Core | Não | Sim |
| Funções do Azure | Não | Sim |
| Docker / Linux | Não | Sim |
| Suporte a aplicativos do Windows | Não (somente Android/iOS) | Sim |
| Google Play Services dep. | Sim (modelo padrão) | Não |
| Dependência do Firebase (iOS) | Sim | Não |
| API Async/await em C# | Não | Síncrono (adequado ao modelo .NET ) |
| Vários códigos de barras em uma única imagem | Sim | Sim |
| Vinculação .NET da comunidade | Não oficial, instável | N/A (nativo .NET) |
| Preços | Gratuito (como parte do Google Play) | A partir de $749 perpétuo |
Mapeamento conceitual de API
Como não existe uma API oficial do .NET ML Kit, este mapeamento é conceitual — ele mostra a intenção de cada operação do ML Kit e o equivalente noIronBarcode.
| Kit de ML (conceito Kotlin/Java) | IronBarcode(.NET C#) |
|---|---|
| @@--CÓDIGO-63969--@@ | @@--CÓDIGO-63970--@@ |
| @@--CÓDIGO-63971--@@ | @@--CÓDIGO-63972--@@ |
| @@--CÓDIGO-63973--@@ | Estático — nenhum objeto scanner necessário |
| @@--CÓDIGO-63974--@@ | String do caminho do arquivo passada para BarcodeReader.Read() |
| @@--CÓDIGO-63976--@@ | BarcodeReader.Read(stream) ou sobrecarga de matriz de bytes |
| @@--CÓDIGO-63978--@@ | @@--CÓDIGO-63979--@@ |
| @@--CÓDIGO-63980--@@ | Valor de retorno de Read() — iterar diretamente |
| @@--CÓDIGO-63982--@@ | Tentativa/recepção padrão |
| @@--CÓDIGO-63983--@@ | @@--CÓDIGO-63984--@@ |
| @@--CÓDIGO-63985--@@ | @@--CÓDIGO-63986--@@ |
| @@--CÓDIGO-63987--@@ | barcode.BarcodeImage (dados da região) |
| @@--CÓDIGO-63989--@@ | @@--CÓDIGO-63990--@@ |
| @@--CÓDIGO-63991--@@ | @@--CÓDIGO-63992--@@ |
| Nenhuma API de geração | @@--CÓDIGO-63993--@@ |
| Nenhuma API de geração | @@--CÓDIGO-63994--@@ |
Speed / seleção de modelo |
@@--CÓDIGO-63996--@@ / @@--CÓDIGO-63997--@@ / @@--CÓDIGO-63998--@@ |
Quando considerar o IronBarcode
Migrar um aplicativo Android para .NET MAUI ou .NET 9. Se o seu aplicativo Android usa o ML Kit para leitura de código de barras e você está criando um equivalente em .NET , oIronBarcodeé a solução ideal. A tradução do conceito é simples: ler um arquivo, obter um resultado e iterar sobre os valores.
Processamento de código de barras no servidor. Qualquer cenário que envolva um endpoint HTTP que escaneie códigos de barras, uma tarefa em segundo plano que processe imagens carregadas ou um fluxo de trabalho de documentos que extraia códigos de PDFs. O ML Kit não pode participar de nenhuma dessas iniciativas.
Aplicações de desktop do Windows. WinForms, WPF ou .NET MAUI no Windows. O ML Kit não funciona de jeito nenhum no Windows.
Ambientes sem os Serviços do Google Play. Se a sua implementação do Android incluir dispositivos que não possuem os Serviços do Google Play — hardware Enterprise , versões personalizadas do AOSP, dispositivos Amazon Fire — o modelo padrão do ML Kit não estará disponível.IronBarcodenão possui essa dependência.
Geração e leitura simultâneas. Se você precisa gerar e ler códigos de barras — imprimir etiquetas de envio e verificar leituras, por exemplo — oIronBarcoderealiza ambas as tarefas na mesma biblioteca. O ML Kit não lida nem com a geração nem com a leitura no lado do servidor.
Implantação no Azure ou na AWS. Azure Functions, Azure App Service no Linux, AWS Lambda — nenhuma dessas opções pode hospedar o ML Kit. AIronBarcodetem como alvo todos eles.
Licenciamento e Preços
O Código de barras do Google ML Kit Scanning é gratuito para aplicativos Android e iOS. Não há cobrança por leitura e nenhuma licença comercial é necessária. Esse modelo de preços faz sentido no contexto pretendido — uma biblioteca nativa para dispositivos móveis integrada aos Serviços do Google Play.
IronBarcode é uma biblioteca comercial .NET com licenças perpétuas:
- Lite: US$ 749 — 1 desenvolvedor, 1 local de projeto
- Plus: US$ 1.499 — até 3 desenvolvedores
- Professional: US$ 2.999 — até 10 desenvolvedores
- Ilimitado: US$ 5.999 — desenvolvedores ilimitados
Está disponível um período de teste gratuito sem limite de tempo; Os códigos de barras gerados pelas marcas d'água de teste. Para equipes que já pagam por infraestrutura de servidor para processar documentos, o custo da licença normalmente representa uma pequena fração do esforço de engenharia necessário para manter uma integração não oficial com o ML Kit.
Conclusão
O Código de barras do Google ML Kit Scanning é uma biblioteca bem projetada que faz exatamente o que foi criada para fazer: ler códigos de barras de forma rápida e precisa em dispositivos Android e iOS. A comparação com oIronBarcodenão se concentra tanto em qual biblioteca é melhor, mas sim em qual biblioteca existe no contexto em que você precisa dela.
Se você estiver programando em Kotlin para Android e digitalizando documentos com uma câmera, o ML Kit é uma excelente opção. Se estiver programando em C# para .NET — seja para uma API web, um serviço de processamento de documentos, um aplicativo Windows, uma função na nuvem ou um aplicativo MAUI multiplataforma — o Google ML Kit não oferece nada para você. Não existe pacote NuGet , API C# ou um caminho com suporte do Google para usá-lo em código gerenciado.IronBarcodeé uma biblioteca nativa do .NET que abrange tanto a leitura quanto a geração de código em todas as plataformas suportadas pelo .NET .
Perguntas frequentes
O que é a leitura de código de barras do Google ML Kit?
O Google ML Kit Barcode Scanning é uma biblioteca .NET para gerar e ler códigos de barras em aplicações C#. É uma das várias alternativas que os desenvolvedores avaliam ao selecionar uma solução de código de barras para projetos .NET.
Quais são as principais diferenças entre a leitura de código de barras do Google ML Kit e o IronBarcode?
O IronBarcode utiliza uma API estática e sem estado, que não requer gerenciamento de instâncias, enquanto o Google ML Kit Barcode Scanning normalmente exige a criação e configuração de uma instância antes do uso. O IronBarcode também oferece suporte nativo a PDF, detecção automática de formato e licenciamento com chave única em todos os ambientes.
O IronBarcode é mais fácil de licenciar do que o Google ML Kit Barcode Scanning?
O IronBarcode utiliza uma única chave de licença que abrange tanto o ambiente de desenvolvimento quanto o de produção. Isso simplifica os pipelines de CI/CD e as configurações do Docker em comparação com sistemas de licenciamento que separam as chaves do SDK das chaves de tempo de execução.
O IronBarcode é compatível com todos os formatos de código de barras suportados pelo Google ML Kit Barcode Scanning?
O IronBarcode suporta mais de 30 simbologias de código de barras, incluindo QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 e muitas outras. A detecção automática de formato significa que não é necessária a enumeração explícita de formatos.
O IronBarcode suporta leitura nativa de códigos de barras em PDF?
Sim. O IronBarcode lê códigos de barras diretamente de arquivos PDF usando BarcodeReader.Read("document.pdf") sem a necessidade de uma biblioteca de renderização de PDF separada. Os resultados por página incluem número da página, formato do código de barras, valor e nível de confiança.
Como o IronBarcode lida com o processamento em lote em comparação com a leitura de código de barras do Google ML Kit?
Os métodos estáticos do IronBarcode são sem estado e naturalmente seguros para threads, permitindo o uso direto de Parallel.ForEach sem gerenciamento de instâncias por thread. Não há limite de throughput em nenhum plano de preços.
Quais versões do .NET o IronBarcode suporta?
O IronBarcode é compatível com o .NET Framework 4.6.2+, .NET Core 3.1 e .NET 5, 6, 7, 8 e 9 em um único pacote NuGet. As plataformas suportadas incluem Windows x64/x86, Linux x64 e macOS x64/ARM.
Como faço para instalar o IronBarcode em um projeto .NET?
Instale o IronBarcode via NuGet: execute 'Install-Package IronBarCode' no Console do Gerenciador de Pacotes ou 'dotnet add package IronBarCode' na CLI. Não são necessários instaladores de SDK ou arquivos de tempo de execução adicionais.
Posso avaliar o IronBarcode antes de comprar, ao contrário do Google ML Kit?
Sim. O modo de avaliação do IronBarcode retorna os valores completos dos códigos de barras decodificados — apenas as imagens de saída geradas recebem uma marca d'água. Você pode testar a precisão de leitura em seus próprios documentos antes de efetuar a compra.
Qual é a diferença de preço entre o Google ML Kit Barcode Scanning e o IronBarcode?
O IronBarcode tem um preço inicial de US$ 749 para uma licença perpétua de desenvolvedor único, que abrange desenvolvimento e produção. Detalhes sobre preços e opções de volume estão disponíveis na página de licenciamento do IronBarcode. Não há necessidade de uma licença de tempo de execução separada.
É simples migrar da leitura de código de barras do Google ML Kit para o IronBarcode?
A migração da leitura de código de barras do Google ML Kit para o IronBarcode envolve principalmente a substituição de chamadas de API baseadas em instâncias por métodos estáticos do IronBarcode, a remoção de código repetitivo de licenciamento e a atualização dos nomes das propriedades de resultado. A maioria das migrações consiste em reduzir o código em vez de adicioná-lo.
O IronBarcode gera códigos QR com logotipos?
Sim. O método `QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` incorpora uma imagem da marca em um código QR nativamente, com correção de erros configurável. Códigos QR coloridos também são suportados através do método `ChangeBarCodeColor()`.

