IRONSOFTWAREHOME

C#'de QR Kod Checksum'larını Nasıl Doğrular ve Hata Toleransını Uygularsınız

Curtis Chau
Curtis Chau
Updated: 6 Mart 2026

Elde edilen girdileri işleyen QR kod boru hatları, basılı etiketler, kamera çekimleri veya taranmış belgeler, decode edilemeyecek kadar zarar görmüş sembollerle ve checksums testini geçtikten sonra iş doğrulamasında kalan sonuçlarla karşılaşacaktır.

Reed-Solomon hata düzeltmesi, decode sırasında fiziksel hasarları otomatik olarak düzeltir. Bir sembol kurtarılamadığında, sonuç koleksiyonu kısmi olma yerine boştur. Uygulama seviyesindeki doğrulama ayrı bir işlemdir ve decode edilen değerin boş olmadığını, beklenen formata uyduğunu veya geçerli bir URI içerdiğini kontrol etmeyi içerir.

Bu nasıl yapılır kılavuzu, QR kodu hatalarının denetimlerini nasıl doğrulayacağınızı ve IronQR kütüphanesi ile hata toleransı denetimlerini nasıl uygulayacağınızı açıklar.

Hızlı Başlangıç: QR Kod Checksum'larını Doğrula

Bir QR kod okuyun ve çözümlemenin başarılı olup olmadığını kontrol edin: boş olmayan bir sonuç, Reed-Solomon checksums testinin geçtiği anlamına gelir.

  1. 1Install IronQR with NuGet Package Manager

    PM > Install-Package IronQR

  2. 2Bu kod parçacığını kopyalayın ve çalıştırın.

    using IronQr;
    using IronSoftware.Drawing;
    
    var reader = new QrReader();
    IEnumerable<QrResult> results = reader.Read(new QrImageInput("label.png"));
    
    if (!results.Any())
    {
        Console.WriteLine("No QR code detected or decoding failed.");
        return;
    }
    
    Console.WriteLine(results.First().Value);
    C#
  3. 3Canlı ortamınızda test için dağıtım yapın

    Ücretsiz deneme ile bugün projenizde IronQR kullanmaya başlayın
    arrow pointer

QR Kod Checksum'larını Doğrulama

QR kodları, kodlanmış verinin hasarını tespit edip onarmak için Reed-Solomon hata düzeltme kullanır. Düzeltme seviyesi (Düşük %7, Orta %15, Çeyrek %25 veya Yüksek %30) kaybedilen ve hala geri kazanılabilen codewordların yüzdesini belirler.

Okuma tarafında, checksum doğrulaması çözümleme sırasında dahili olarak çalışır. QrResult sınıfı bir güven özelliği sunmaz; eğer koleksiyonda bir sonuç varsa, checksum geçmiştir. Decoding başarısız olursa, koleksiyon boştur.

Giriş

Orta hata düzeltme ile üretilen, taşınma sırasında elleçlenmiş veya hafif çizilmiş olabilecek bir etiketi temsil eden, https://ironsoftware.com/ kodlanmış bir QR kod ürünü etiketi.

Checksum doğrulama için giriş olarak kullanılan, https://ironsoftware.com'u kodlayan QR kod
using IronQr;
using IronSoftware.Drawing;

var reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(new QrImageInput(AnyBitmap.FromFile("damaged-label.png")));

// Reed-Solomon decoding is pass/fail — presence in results means valid checksum
if (!results.Any())
{
    // Decoding failed entirely — damage exceeded the error correction capacity
    Console.WriteLine("QR code could not be decoded. Consider re-scanning or using a higher error correction level at generation time.");
    return;
}

foreach (QrResult result in results)
{
    // Decoded successfully — validate the content matches expected format
    if (string.IsNullOrWhiteSpace(result.Value))
    {
        Console.WriteLine("QR decoded but produced an empty value.");
        continue;
    }

    Console.WriteLine($"Valid QR: {result.Value}");
}
C#

Çıktı

Konsolda, Reed-Solomon kod çözümlemesinin başarıyla tamamlandığını ve yükün eksiksiz olarak geri kazanıldığını doğrulayarak, çözümlenen değer https://ironsoftware.com/ gösterilir.

Terminal çıktısı, Çözülen QR Kod: https://ironsoftware.com'u gösteriyor

Fiziksel hasara karşı daha büyük bir direnç için, daha yüksek hata düzeltme seviyesine sahip QR kodları oluşturun. Yüksek seviye, daha büyük bir sembol maliyetiyle%30'luk veri kaybını geri kazanır.


Format Farkındalığını QR Kod Okuma Sürecine Dahil Etme

IronQR üç QR kodlama formatını destekler: standart QR, Micro QR ve Dikdörtgen Micro QR. Tarayıcı, okuma sırasında formatı otomatik olarak algılar. Taramadan sonra, QrResult.QrType alanı algılanan formatı bir enum değeri olarak sağlar.

PDF'ler için, QrImageInput yerine QrPdfInput kullanın. Tarama modu hız ve doğruluk arasında denge oluşturur: Auto, makine öğrenimi algılamayı klasik tarama ile birleştirir, OnlyDetectionModel daha hızlı işleme için yalnızca ML modelini kullanır ve OnlyBasicScan tamamen ön işlenmiş yüksek kaliteli görüntülerde ML'i atlar.

Giriş

Format farkındalığını iki yaygın giriş türünde okuma gösteren sol PNG (ürün etiketi) ve sağ JPEG (kamera çekimi).

Format duyarlı okuma için giriş olarak kullanılan product-label.png QR kodu

Ürün Etiketi (PNG)

Kamera yakalamasını simüle eden camera-capture.jpg JPEG QR kodu

Kamera Çekimi (JPEG)

using IronQr;
using IronSoftware.Drawing;
using IronQr.Enum;

// Read from an image file with ML + classic scan (default)
var reader = new QrReader();
IEnumerable<QrResult> results = reader.Read(new QrImageInput(AnyBitmap.FromFile("product-label.png")));

foreach (QrResult result in results)
{
    // Inspect the detected QR format
    Console.WriteLine($"Format: {result.QrType}");   // QRCode, MicroQRCode, or RMQRCode
    Console.WriteLine($"Value:  {result.Value}");

    // Url is non-null only if Value is a valid URI
    if (result.Url != null)
    {
        Console.WriteLine($"URI:    {result.Url.AbsoluteUri}");
    }

    // Corner coordinates for positional context
    Console.WriteLine($"Corners: {result.Points.Length} points detected");
}

// Read from a bitmap with ML-only mode for faster throughput
var bitmap = AnyBitmap.FromFile("camera-capture.jpg");
var fastResults = reader.Read(new QrImageInput(bitmap, QrScanMode.OnlyDetectionModel));
C#

Çıktı

Konsol, dedektif formatı, çözülmüş değer, çözülmüş URI ve ürün etiketi için köşe sayısını ardından kamera çekimi için hızlı tarama sonuç sayısını gösterir.

Terminal çıktısı Format: QRCode, Değer: https://ironsoftware.com/product, URI ve Köşeler: 4 nokta tespit edildi

Uygulamanın belirli bir format gerektirdiği durumlarda, QrType alanı yararlıdır. Örneğin, yalnızca standart QR kodları üreten bir depo sistemi, beklenmedik Micro QR veya Dikdörtgen Micro QR algılamalarını filtreleyebilir, bu da gürültü veya ilgisiz etiketleri gösterebilir. Her formatın kendine özgü kapasite özellikleri vardır: standart QR, 7.089 sayısal karaktere kadar destekler, Micro QR 35'e kadar ve Dikdörtgen Micro QR, sınırlı etiket alanı için dikdörtgen bir form faktörü sağlar.


QR Kod Sonuçlarına Boş Kontrolleri Uygulama

QR kod bulunmazsa, QrReader.Read boş bir koleksiyon döndürür; asla null döndürmez. Ancak, bireysel sonuç özellikleri hala doğrulama gerektirir. Örneğin, Value boş olabilir ve çözümlenen dize geçerli bir URI değilse, Url null döndürür.

Sağlam bir doğrulama deseni, başka bir sisteme veri geçirmeden önce üç yönü kontrol eder: koleksiyon sayısı, değer bütünlüğü ve tür veya URI geçerliliği.

Giriş

Hiçbir QR kod içermeyen boş beyaz bir görüntü, bazı sayfaların makineyle okunabilir bir etiket taşımadığı bir karma toplu işlemde belge sayfasını temsil eder.

Boş beyaz görüntü, null kontrol gösterimi için giriş olarak kullanıldı.
using IronQr;
using IronQr.Enum;
using IronSoftware.Drawing;
using System.Collections.Generic;
using System.Linq;

public static class QrValidator
{
    public static List<QrResult> GetValidResults(
        string imagePath,
        QrEncoding? expectedFormat = null)
    {
        var reader = new QrReader();
        IEnumerable<QrResult> results = reader.Read(new QrImageInput(AnyBitmap.FromFile(imagePath)));

        // Guard: no QR codes detected
        if (!results.Any())
            return new List<QrResult>();

        return results
            .Where(r => !string.IsNullOrWhiteSpace(r.Value))
            .Where(r => expectedFormat == null || r.QrType == expectedFormat)
            .ToList();
    }
}

// Usage — only accept standard QR codes with non-empty values
var validated = QrValidator.GetValidResults(
    "shipping-manifest.png",
    expectedFormat: QrEncoding.QRCode);

if (validated.Count == 0)
{
    Console.WriteLine("No valid QR codes found for processing.");
    return;
}

foreach (var qr in validated)
{
    // Safe for downstream: value is non-empty, format is verified
    SendToInventoryApi(qr.Value, qr.Url?.AbsoluteUri);
}
C#

Çıktı

Konsol, doğrulayıcının boş-sonuç yanıtını gösteriyor: İşlenecek geçerli QR kod bulunamadı çünkü koleksiyon boş ve veri aşağı akış işlemine geçmiyor.

Terminal çıktısı: İşlemek için geçerli QR kod bulunamadı gösterir.

Doğrulayıcı boş bir liste (asla null değil) döndürerek çağrı noktasında null kontrolü ihtiyacını ortadan kaldırır. İsteğe bağlı expectedFormat parametresi, bir format kapısı görevi görerek çağrıyı yapan koda yalnızca beklenen format türüne uygun sonuçlar ulaşmasını sağlar. Url özelliği, hem URI hem de URI olmayan yükleri güvenli bir şekilde işlemek için null-koşulsal operatörü kullanır.

Asenkron iş akışları için, ReadAsync üzerinde aynı doğrulama kalıplarını uygulayın: çağrıyı bekleyin ve sonuçlanan koleksiyon üzerinde aynı kontrolleri kullanın.


Daha Fazla Okuma

Üretime hazır olduğunda lisans seçeneklerini görüntüleyin.

Tam ChecksumFaultToleranceTest konsol uygulaması projesini indirmek için buraya tıklayın.

Sıkça Sorulan Sorular

C#'de QR kod denetim toplamlarının doğrulanmasının amacı nedir?

C#'de QR kod denetim toplamlarını doğrulamak, QR kodunda kodlanmış verilerin doğru ve iletim veya tarama sırasında bozulmadığını kontrol ederek veri bütünlüğünü sağlar. IronQR, güvenilir denetim toplamı doğrulaması sağlayarak bu süreçte yardımcı olabilir.

IronQR, QR kodu biçim tespitini nasıl yönetir?

IronQR, çeşitli QR kodu formatlarını tespit etmek için güçlü yetenekler sağlayarak geniş bir QR kodu standartları ile uyumluluğu garanti eder. Bu özellik, geliştiricilerin C# uygulamalarında QR kodlarını etkili bir şekilde yönetmelerine yardımcı olur.

Reed-Solomon hata düzeltme, QR kod doğrulamasında hangi rolü oynar?

Reed-Solomon hata düzeltme, QR kodlarında tarama sırasında oluşan hataları düzeltmek için kullanılan bir yöntemdir. IronQR, bu tekniği kullanarak hata toleransını artırarak, bazı bozulma veya hasar seviyelerine rağmen QR kodlarını doğru bir şekilde okuyup doğrulayabilir.

IronQR, QR kodları ile çalışırken null güvenli desenleri uygulayabilir mi?

Evet, IronQR, null referans hatalarını önlemeye yardımcı olan null güvenli desenleri uygulayabilir. Bu, uygulamanızın QR kodlarını daha güvenilir ve verimli bir şekilde işleyebilmesini sağlar.

QR kodu işlemde hata toleransının önemi nedir?

Hata toleransı kritik önem taşır çünkü QR kodu işleme sistemlerinin hataları ve tutarsızlıkları başarısız olmadan yönetmesine izin verir. IronQR'nin hata toleransı yetenekleri, kısmen hasarlı veya gizlenmiş QR kodlarının bile doğru bir şekilde okunabilmesini sağlar.

C#'de QR kod doğrulaması için IronQR kullanmanın faydaları nelerdir?

IronQR, yüksek doğruluk, birden fazla QR kodu formatı için destek ve yerleşik hata düzeltme mekanizmaları dahil olmak üzere C#'de QR kod doğrulaması için çeşitli avantajlar sağlar ve geliştiricilerin QR kodları ile çalışması için ideal bir seçimdir.

IronQR, QR kodu okuma doğruluğunu nasıl artırır?

IronQR, QR kodlarını tespit etme ve çözme konusundaki gelişmiş algoritmaları kullanarak okuma doğruluğunu artırır ve tarama sırasında veri bozulmalarını işlemek için Reed-Solomon gibi hata düzeltme yöntemlerini uygular.

What is the role of the `QrResult` class in IronQR?

The `QrResult` class in IronQR represents decoded results from QR code reading. It provides properties like the decoded value, detected QR type, and optionally, a URI if the value is a valid URL.

How does IronQR handle physical damage to QR codes?

IronQR uses Reed-Solomon error correction to automatically correct minor damages in QR codes during decoding, making it more resilient to physical damage and ensuring data integrity.

Can IronQR validate QR codes asynchronously?

Yes, IronQR supports asynchronous workflows. You can use `ReadAsync` to perform non-blocking QR code reading while applying similar validation patterns on the results.

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

Başlamaya Hazır mısınız?

Nuget Downloads 74,386Sürüm:2026.9yeni yayınlandı

Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez
PDF için C# NuGet Kütüphanesi
NuGet ile yükleyin

Sürüm: 2026.9

PM > Install-Package IronQR
nuget.org/packages/IronQR/
  1. Çözüm Gezgini'nde Referanslar'a sağ tıklayın, NuGet Paketlerini Yönet
  2. Gözat'ı seçin ve "IronQR" arayın
  3. Paketi seçin ve yükleyin
C# PDF DLL
DLL İndir

Sürüm: 2026.9

  1. IronQR'yi ~/Libs gibi Çözüm dizininde bir konuma indirin ve çıkartın
  2. Visual Studio Çözüm Gezgini'nde, Referanslar'a sağ tıklayın. Gözat'ı seçin, "IronQR.dll"

$999 'den başlayan lisanslar

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