1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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 unsafe kodu yasaklar; birden fazla QR kütüphanesini ve Vec<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 QrModules trait’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_swastika ile 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::QrCode için QrModules
    • qrcode: qrcode::QrCode için QrModules
    • fast_qr: fast_qr::QRCode için QrModules
  • Ham modül matrisi olan Vec<Vec<bool>> de ayrı bir adaptör olmadan desteklenir; true koyu modül anlamına gelir

Desensiz QR kodu üretme

  • generate özelliğindeki encode_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 ekler
  • generate özelliği qrcodegen bağımlılığını getirir ve encode_safe sağ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

 
GN⁺ 4 시간 전
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

    • Döndürülmemiş svastika da aynı şekilde Nazi sembolü olarak algılanır. Aksini düşünüyorsanız, döndürülmemiş bir svastikayı görünür bir yere geçici dövme olarak yapıştırıp sokağa çıkmayı deneyin
      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ı
    • Benim de dikkatimi çeken nokta buydu. Algılama algoritmasının satır ve sütunları tarayan bir rolling checksum gibi, yapısal olarak yalnızca dikdörtgensel desenleri işleyen bir yapıda olup olmadığını merak ediyorum
      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

    • Göz önünde kullanılacak bir QR kodda böyle bir desen çıkarsa, birkaç pikseli boyasanız bile kod çalışmaya devam eder. Yalnızca bir kişinin göreceği ya da gerçekten taranma ihtimali neredeyse olmayan bir koddaysa bunu dert etmeye gerek yok; çoğu insan da QR kodlarda tesadüfen böyle desenler oluşabileceğini anlayacaktır
  • 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

    • Bilgilendirme amacı varsa, yalnızca göstermenin kendisi yasa dışı değildir. Örneğin II. Dünya Savaşı arşiv görüntülerini kullanan belgesellerde svastikanın sansürlenmesi gerekmez ama bir sorumluluk reddi notu eklemek daha güvenli olabilir
    • Yasak olup olmaması temelde bağlama göre değişir: https://bundesgerichtshof.de/SharedDocs/Pressemitteilungen/…
      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
    • Avukat değilim ama kısa cevapla yasa dışı değil; uzun cevapla bağlama bağlı. Bu sayfadaki bağlam sorunlu görünmüyor
      https://en.wikipedia.org/wiki/Strafgesetzbuch_section_86a