SWAPQR← Rehber

Sanatsal QR kod çok yaklaşınca neden okunmaz

Herkes bir QR kodun küçük, uzak ya da loş olduğu için okunmayacağını bekler. Fotoğraflı kodların bir de tersi var: uzaktan kusursuz okunup telefonu üstüne getirdiğinizde okunmayabiliyorlar. Sebebi şu; bunu bulan ölçümün rakamlarıyla birlikte.

Tarayıcıda QR kod oluştur →Kareyi bir kez bas. Nereye gideceğine sonra karar ver.

Tarayıcı neyin koyu olduğuna nasıl karar verir

Okuyucu modülleri aramaya başlamadan önce fotoğrafı siyah-beyaza çevirmek zorunda. Tek bir genel eşik gerçek ışıkta yaşamaz — bir köşeye düşen gölge kodun yarısını karartır — bu yüzden çoğu çözücü eşiği yerel hesaplar. Barkod okumanın büyük kısmının hâlâ soyundan geldiği açık kaynaklı ZXing, görüntüyü 8×8 piksellik bloklara böler, her bloğun ortalamasını alır, komşu bloklara göre yumuşatır ve o 64 piksel için eşik olarak bunu kullanır. Bloğun eşiğinden koyu olan piksel koyu, kalanı açıktır. Normal bir QR kodda bunun bedeli yok denecek kadar azdır. Blok ne boyda olursa olsun modül dolu olduğu için bloğun ortalaması ya koyuya ya açığa yakındır ya da blok bir sınırı kestiğinde ikisinin arasında durur; karar her hâlükârda kolaydır. Şema sağlam, ucuz ve yaygın biçimde kopyalanmış; tam da bu yüzden önemli: basılı kodunuzun sahada karşılaşacağı çözücü pekâlâ bu şekilde eşikleyen biri olabilir.

Modüller dithering’den yapılınca ne değişiyor

Dithering’li kodda modül dolu değildir. Küçük bir zorlanmış çekirdek ve etrafında fotoğrafı taşıyan piksellerden oluşur. Ortalaması doğrudur; dokusu tekdüze değildir. Şimdi tarama mesafesini tek anlamlı birimle düşünün: modül başına düşen kamera pikseli. Telefonu, bir modül 5–8 piksele denk gelecek kadar uzak tutun; 8×8’lik blok modül sınırlarını kesiyor demektir. Yerel ortalama kabaca "bu modül ve komşuları" oluyor, eşik koyu ile açığın arasına oturuyor ve kod okunuyor. Telefonu yaklaştırın, bir modül 20 pikseli kaplasın; artık 8×8’lik blok tek bir modülün tamamen içine sığıyor. Bloğun ortalaması o modülün kendi yerel dokusu oluyor. Eşik modülü değil dithering’i takip ediyor — ve çözücü kodu değil beneği çözüyor. Baskıda hiçbir şey değişmedi; yalnızca her modülün kapladığı sensör pikseli sayısı ve onunla birlikte çözücünün bloğu ile modül arasındaki ilişki değişti. Arızanın boyutun ya da ışığın değil mesafenin bir özelliği olmasının sebebi bu.

Rakam

Bunu SWAPQR’ın fotoğraf modunu yazarken ölçtük: üç farklı içerik uzunluğu, altı görsel tipi, iki renk yönü, üç denge ayarı, yedi taklit tarama mesafesi; iki bağımsız kütüphane ile çözüldü. Sınır net çıkıyor. Her modülün yaklaşık %20’si zorlandığında — fotoğraf ağırlıklı ayar — ve yaklaşık %44’ü zorlandığında kodlar modül başına 5–8 pikselde okundu ve ZXing sınıfı okuyucular yakın çekimde, modül başına 10–28 pikselde kararsızlaştı. Yaklaşık %60 ve üstünde her mesafede okundu. Modül alanının kabaca yarısından fazlası dolu zorlandığı anda, modülün içine düşen her 8×8 blok çoğunlukla dolu piksellere denk geliyor ve etki kayboluyor. Altında kaybolmuyor — ton eğilimini ne kadar ayarlarsanız ayarlayın değişmiyor, çünkü yerel eşik zaten yerel ortalamayı çıkarıyor. Modülü hangi tona yatırırsanız yatırın, tamamen içine düşen bir blok o eğilimi taban olarak ölçüp eşikle siliyor. İşe yarayan tek kol modülün dolu olan payı; denge kontrolünün var olma sebebi bu.

Yeni çözücüler ve bunun neden işin sonu olmadığı

Yeni çözücüler bu işte daha iyi. Aynı taramada, farklı bir eşikleme yöntemi kullanan jsQR her ayarı her mesafede okudu; güncel telefonların içindeki tarayıcılar ondan da güçlü. Ama "çoğu telefon halleder" ile "her okuyucu okur" aynı şey değil ve basılı kod, karşısına hangi okuyucu çıkarsa onunla karşılaşıyor: eski bir telefon, bir kasa tarayıcısı, bir kiosk, ZXing türevi bir kütüphane gömen bir uygulama. Bu yüzden fotoğraf ağırlıklı denge takası konusunda dürüst — stüdyo modern telefon tarayıcılarının onu her mesafede okuduğunu, eski ve basit okuyucuların ise aşırı yakın çekimde zorlanabileceğini not düşüyor — ve dengede nerede durulacağı kararı kodu kimin, ne kadar uzaktan okutacağına bağlı. Bir de telefonun doğal olarak nereye gittiğine bağlı: kimse afişe kol mesafesinden telefon tutmaz, ama herkes kartvizite telefonu iyice yaklaştırır; fotoğraf ağırlıklı bir kodla basit bir okuyucunun karşılaşabileceği durum budur.

Ne yapmalı

Kod normal mesafeden okutulacak bir yere gidiyorsa — afiş, masa kartı, raf etiketi — fotoğraf ağırlıklı ayarlar sorun değil; o mesafede modül bir avuç kamera pikseli kaplar ve bloklar olması gerektiği gibi sınırları keser. İnsanların telefonu üstüne dayayacağı bir yere gidiyorsa — küçük etiket, kartvizit, ekran — dengeyi Kod’a doğru kaydırın ki her modülün yarısından fazlası dolu olsun ve yakın çekim etkisi her okuyucu sınıfı için kaybolsun. Her hâlükârda bir tane bastırın ve telefonla okuyun. Monitördeki ekran görüntüsünü değil: gerçek basılı parçayı, gerçek boyunda, insanların gerçekten kullanacağı mesafeden ve tercihen birden fazla telefonla. SWAPQR bu uyarıyı küçük puntoda değil stüdyonun içinde gösteriyor; çünkü sahada okunmayan bir kod, okunan sade bir koddan daha kötüdür ve partiden önce yakalarsanız çözüm yeniden baskı değil bir kaydırıcıdır.

Modülün zorlanan payıUzak / normal (modül başına 5–8 px)Yakın çekim (modül başına 10–28 px)
~%20 (fotoğraf ağırlıklı)OkunuyorZXing sınıfı okuyucular kararsız
~%44 (orta)OkunuyorZXing sınıfı okuyucular kararsız
~%60 ve üstü (kod ağırlıklı)OkunuyorOkunuyor
Her ayar, jsQR sınıfı ve güncel telefon tarayıcılarıOkunuyorAynı taramada okunuyor

Sık sorulan sorular

Telefonum fotoğraflı kodu her mesafeden okuyor. Uyarı neden?

Güncel telefon tarayıcıları daha güçlü eşikleme kullanıyor ve taramamızdaki her ayarı okudu. Uyarı, 8×8 bloklarda eşikleyen ve basılı kodun hâlâ karşılaşabileceği eski ya da basit okuyucular için.

Telefonu uzaklaştırmak neden düzeltiyor?

Uzakta her modül daha az kamera pikseli kaplar; böylece çözücünün 8×8 bloğu birkaç modülü keser ve ortalaması koyu ile açığın arasına oturur. Yakında blok tek bir modülün içine düşer ve modül yerine dithering dokusunu takip eder.

Ton eğilimini yükseltmek yakın çekimde yardımcı olur mu?

Hayır. Yerel eşik yerel ortalamayı çıkarır; bu yüzden modülün içindeki her tekdüze eğilim eşikle silinir. Sonucu yalnızca modülün dolu zorlanan payı değiştirir.

Kartvizit için hangi denge güvenli?

Kod’a doğru kaydırın ki her modülün kabaca yarısından fazlası dolu olsun. O noktada ölçümümüzde ZXing sınıfı okuyucular her mesafede okuyor ve resim hâlâ görünür, sadece daha soluk.

Kareyi bir kez bas. Nereye gideceğine sonra karar ver. SWAPQR statik QR kodları ücretsiz üretir; bütün stil seçenekleri dahil, hesap yok, filigran yok. Ücretli plan bir kodu dinamik yapar: basılı kare aynı kalırken hedefini değiştirirsin ve ne sıklıkla okutulduğunu güne ve cihaza göre görürsün.

Tarayıcıda QR kod oluştur
Dil: TR EN DE ES FR IT PT AR RU JA KO