qr-swastika-avoider v0.1.0 — QR kodlarında kazara oluşan gamalı haç desenlerinden kaçınma
(crates.io)- QR kodlarında tesadüfen oluşabilecek gamalı haç desenlerini algılayan ve isteğe bağlı olarak desensiz QR kodları üreten bir Rust crate’i
- QR standardındaki 8 maske deseninin tamamını render ederek desensiz adayları ayıklar, ardından ISO/IEC 18004 cezası en düşük olan maskeyi seçer
- Bulucuyu, zamanlamayı, hizalamayı, biçim ve sürüm modüllerini denetim dışında bırakıp çevresel kontrastı dikkate alarak, işlevsel öğelerin veya gözle görülmeyen şekillerin yanlış algılanmasını önler
- Varsayılan algılayıcının harici bağımlılığı yoktur ve
unsafekodu yasaklar; birden fazla QR kütüphanesini veVec<Vec<bool>>temsilini destekler - Algılama kapsamı, eksenlere hizalı 5×5 ve 7×7 kancalı haç biçimlerinin iki yönü ve iki renk polaritesiyle sınırlıdır; 45 derece/diyagonal biçimler ve keyfi döndürmeler desteklenmez
Kazara oluşan desenlerden neden kaçınmalı?
- qr-swastika-avoider, QR kodlarında rastgele ortaya çıkabilecek gamalı haç desenlerini algılar ve bunlardan kaçınır
- QR kodları, birbirinin yerine kullanılabilen 8 maske deseni arasından okunabilirlik puanı en iyi olanı seçer; ancak rahatsızlık verebilecek sembolleri ayrıca denetlemez
- Küçük ve ince desenlerin QR standardının değerlendirme sürecinde elenmesi zordur; bu yüzden nihai kodda tesadüfen kalabilirler
İşlevsel öğeleri ve kontrastı dikkate alan algılama
- Varsayılan algılayıcının harici bağımlılığı yoktur ve
#![forbid(unsafe_code)]uygular - İki metottan oluşan küçük bir
QrModulestrait’i üzerinden çeşitli QR temsil biçimleri denetlenebilir - Bulucu, zamanlama, hizalama, biçim ve sürüm modüllerini algılama kapsamı dışında bırakarak bulucu köşelerinin gamalı haç olarak yanlış algılanmasını önler
- Aynı renkli modüllerin içinde gömülü kalıp gerçekte görünmeyen desenler, çevresel kontrast temel alınarak yok sayılır; bu eşik ayarlanabilir
- Mevcut QR kodları
contains_swastikaile denetlenebilir; bir desen bulunursa yeniden oluşturulabilir veya kullanıcı uyarılabilir
Desteklenen QR temsilleri ve kütüphaneler
- Cargo özellikleriyle aşağıdaki adaptörleri sağlar
qrcodegen:qrcodegen::QrCodeiçinQrModulesqrcode:qrcode::QrCodeiçinQrModulesfast_qr:fast_qr::QRCodeiçinQrModules
- Ham modül matrisi olan
Vec<Vec<bool>>de ayrı bir adaptör olmadan desteklenir;truekoyu modül anlamına gelir
Desensiz QR kodu üretme
generateözelliğindekiencode_safe, içeriği ve hata düzeltme seviyesini alıp desensiz, taranabilir bir QR kodu döndürür; üretilemezse açık bir hata döndürür- Üretim sürecinde 8 maskenin tamamı render edilir ve yalnızca hedeflenen desenleri içermeyen adaylar tutulur
- Kalan adaylar arasından ISO/IEC 18004 cezası en düşük olan maske döndürülerek standardın okunabilirlik optimizasyonu korunur
- Dönen değerin
matrix()metodu ile modül matrisi alınabilir,mask()metodu ile seçilen maske görülebilir
Cargo özellik yapılandırması
- Varsayılan özellikler yalnızca bağımlılıksız algılayıcıyı içerir
qrcodegen,qrcode,fast_qrözellikleri ilgili kütüphaneler için adaptörler eklergenerateözelliğiqrcodegenbağımlılığını getirir veencode_safesağlar
Algılama kapsamı ve lisans
- Klasik eksen hizalı kancalı haç biçimlerinde 5×5 ve 7×7 boyutlarını, iki yönü ve açık/koyu iki renk polaritesini küçük bir tolerans içinde algılar
- 45 derece veya diyagonal desenler ile keyfi açılarda döndürülmüş biçimler algılama kapsamına dahil değildir
- MIT License ile dağıtılır
1 yorum
Lobste.rs görüşleri
Bu projenin dini svastika sembolünden kaçınırken, asıl Nazilerin kullandığı svastikadan kaçınmaması kafa karıştırıcı. Nazi sembolü 45 derece döndürülmüş bir biçimken, proje açıkça “45 derece, diyagonal motifler ve rastgele döndürme kapsam dışıdır” diyor
QR kodunda tesadüfen oluşan görüntü düşük çözünürlüklü olacağından, rastgele piksel deseni gibi değil de özellikle döndürülmemiş biçimin svastika olarak net biçimde algılanma olasılığı daha yüksektir. Buna odaklanmak mantıklı
Ayrıca “finder, timing, alignment, format ve version modülleri hariç tutularak finder köşelerinin svastika sanılması önlenir” deniyor ama bir insan QR kodunda rahatsız edici bir sembol gördüğünde, o pikselin veri mi yoksa timing pattern mi olduğuna göre tepkisi değişmez. Finder köşeleri zaten sadece kare; bunların özellikle analiz dışında bırakılmasının nedenini de anlamıyorum. Derine indikçe tutarsız geliyor; bunun yapay zekanın kabaca ürettiği bir çıktı olduğundan şüpheleniyorum
Böyle bir projenin var olması üzücü. QR kodun içinde rahatsız edici sembollerin tesadüfen belirebileceğini düşünmek aklıma bile gelmemişti
“Basit bir QR kod üretirken dev bir Nazi sembolünün rastgele oluşması gerçekten ne kadar sık olur?” diye bizzat hesapladım. QR kodlar tamamen rastgele değil ama burada bunu yok sayıyorum
5×5 ve 7×7 svastikaları bağımsız düşünürseniz, her birinde sağa-sola iki yön, iki kutup ve ters/düz biçimler olduğundan toplam 8 desen çıkıyor. Tüm desen uzayı 5×5 için 2^25=33 milyon, 7×7 için 2^49=562 trilyon olduğundan, svastika içermesi olasılığı sırasıyla 2.38e-7 ve 1.42e-14. QR kod içinde 289 adet 5×5 alan ve 225 adet 7×7 alan bulunduğundan, rastgele bir QR kod biçiminde en az bir svastika çıkma toplam olasılığı yaklaşık 0.00006, yani 14.500 tanede 1. 9×9 ve üstü de hesaplanabilir ama belirli piksel kombinasyonlarının olasılığı o kadar düşüktür ki sonuca anlamlı bir etkisi olmaz. Ne yazık ki kaynağa bakınca bu projenin vibe coding ile yapılmış gibi göründüğünü söyleyebilirim ama hesabı bizzat elimle yaptım
Bu kadar spesifik bir projenin arkasında nasıl bir hikâye ya da şaka olduğunu merak ediyorum
Öte yandan Microsoft photoDNA’nın algısal hash sistemi, eğitim verisini dolduran CSAM küçük görsel ızgaralarına düzgün karşılık veremediği için yalnızca elektronik tablo ve Minecraft yapım ızgarası ekran görüntüleriyle Discord kullanıcı hesaplarını askıya aldırabilen kusurlu yapay zekaların kullanıldığını görünce, daha genel amaçlı bir riskli desenlerden kaçınma aracı kulağa epey çekici geliyor
Geçmişteki sorunları yeni yollarla tekrarlamak yerine gerçek dünyadaki sorunları çözmemiz gerek. Dünyada böyle projeleri ilginç karşılayacak kadar aşırı hassas insan çok fazla
Amaç veri desenlerinde svastikadan kaçınmak olsa bile, web sayfasının kendisinde bu sembolü gösterdiği için bunun Almanya’da yasa dışı olup olmayacağını merak ediyorum
Almanya Federal Yüksek Mahkemesinin ilgili kararına göre üstü çizilmiş svastika kabul edilebilir; diğerleri de kodun filtreleyeceği desenlerin örneği olarak sunulduğundan, sorun çıkma ihtimali düşük görünüyor
https://en.wikipedia.org/wiki/Strafgesetzbuch_section_86a