1 पॉइंट द्वारा GN⁺ 4 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह एक Rust crate है जो QR कोड में संयोग से बन सकने वाले स्वस्तिक पैटर्न का पता लगाता है और वैकल्पिक रूप से ऐसे QR कोड बनाता है जिनमें यह पैटर्न न हो
  • यह QR मानक के 8 mask patterns को रेंडर करके बिना पैटर्न वाले उम्मीदवार चुनता है, फिर ISO/IEC 18004 penalty सबसे कम वाले mask को चुनता है
  • finder·timing·alignment·format·version modules को जाँच से बाहर रखकर और आसपास के contrast को ध्यान में रखकर यह functional elements या दिखाई न देने वाले आकारों को गलत पहचानने से बचाता है
  • डिफ़ॉल्ट detector में कोई external dependency नहीं है और unsafe code निषिद्ध है, तथा यह कई QR libraries और Vec<Vec<bool>> representation को support करता है
  • detection scope axis-aligned 5×5·7×7 hooked cross shapes की दोनों दिशाओं और दोनों color polarities तक सीमित है; 45-degree·diagonal shapes और arbitrary rotation समर्थित नहीं हैं

अनजाने पैटर्न से बचना क्यों ज़रूरी है

  • qr-swastika-avoider QR कोड में यादृच्छिक रूप से दिखाई दे सकने वाले स्वस्तिक पैटर्न का पता लगाता है और उनसे बचाव करता है
  • QR कोड आपस में बदले जा सकने वाले 8 mask patterns में से readability score सबसे अच्छा वाला चुनते हैं, लेकिन असहजता पैदा करने वाले symbols की जाँच नहीं करते
  • छोटे और पतले पैटर्न QR मानक की evaluation प्रक्रिया में छँट पाना कठिन होते हैं, इसलिए वे संयोग से अंतिम कोड में रह सकते हैं

functional elements और contrast को ध्यान में रखकर detection

  • डिफ़ॉल्ट detector में कोई external dependency नहीं है और #![forbid(unsafe_code)] लागू है
  • दो methods वाले छोटे QrModules trait के ज़रिए विभिन्न QR representation formats की जाँच की जा सकती है
  • finder·timing·alignment·format·version modules को detection target से बाहर रखकर finder के corners को स्वस्तिक समझने की गलती से बचा जाता है
  • एक ही रंग के modules में दबा हुआ, वास्तव में दिखाई न देने वाला पैटर्न आसपास के contrast के आधार पर अनदेखा किया जाता है, और यह मानदंड समायोज्य है
  • मौजूदा QR कोड को contains_swastika से जाँचा जा सकता है, और पैटर्न मिलने पर उसे फिर से generate किया जा सकता है या user को warning दी जा सकती है

समर्थित QR representations और libraries

  • Cargo features के रूप में निम्न adapters दिए गए हैं
    • qrcodegen: qrcodegen::QrCode के लिए QrModules
    • qrcode: qrcode::QrCode के लिए QrModules
    • fast_qr: fast_qr::QRCode के लिए QrModules
  • raw module matrix Vec<Vec<bool>> भी अलग adapter के बिना समर्थित है, और true का अर्थ dark module है

पैटर्न-रहित QR कोड बनाना

  • generate feature का encode_safe content और error correction level लेकर पैटर्न-रहित, scan होने योग्य QR code लौटाता है; यदि बनाना संभव न हो तो यह स्पष्ट error लौटाता है
  • generation प्रक्रिया में सभी 8 masks को रेंडर किया जाता है, फिर केवल वे उम्मीदवार रखे जाते हैं जिनमें target pattern नहीं होता
  • बचे हुए उम्मीदवारों में से ISO/IEC 18004 penalty सबसे कम वाला mask लौटाया जाता है ताकि मानक की readability optimization बनी रहे
  • return value के matrix() से module matrix लिया जा सकता है और mask() से चुना गया mask देखा जा सकता है

Cargo feature configuration

  • डिफ़ॉल्ट features में dependency-free detector ही शामिल है
  • qrcodegen, qrcode, fast_qr features संबंधित libraries के लिए adapters जोड़ते हैं
  • generate feature qrcodegen को dependency के रूप में लाता है और encode_safe प्रदान करता है

detection scope और लाइसेंस

  • पारंपरिक axis-aligned hooked cross shape में 5×5 और 7×7 आकार, दोनों दिशाएँ, और हल्के व गहरे दोनों color polarities को छोटे tolerance के भीतर detect किया जाता है
  • 45-degree या diagonal patterns और arbitrary angle पर rotate किए गए आकार detection scope में शामिल नहीं हैं
  • यह MIT License के तहत वितरित किया जाता है

1 टिप्पणियां

 
GN⁺ 4 시간 전
Lobste.rs पर राय
  • यह बात उलझाने वाली है कि यह प्रोजेक्ट धार्मिक स्वस्तिक से तो बचता है, लेकिन नाज़ियों द्वारा इस्तेमाल किए गए स्वस्तिक से नहीं बचता। नाज़ी प्रतीक 45 डिग्री घुमाया हुआ रूप है, जबकि प्रोजेक्ट साफ़ कहता है कि “45 डिग्री/तिरछे motifs और arbitrary rotations scope से बाहर हैं”

    • बिना घुमाया हुआ स्वस्तिक भी उतना ही नाज़ी प्रतीक माना जाता है। अगर आपको ऐसा नहीं लगता, तो बिना घुमाया हुआ स्वस्तिक किसी साफ़ दिखने वाली जगह temporary tattoo की तरह लगाकर सड़क पर निकलकर देख लें।
      QR code में संयोग से बनने वाली image low-resolution होती है, इसलिए उलटे बिना घुमाया हुआ रूप random pixel pattern नहीं, बल्कि स्वस्तिक के रूप में ज़्यादा साफ़ पहचाने जाने की संभावना रखता है। इस पर ध्यान देना समझदारी है
    • मुझे भी यही बात खटकी। मुझे हैरानी है कि detection algorithm क्या rows और columns scan करने वाले rolling checksum जैसा है, यानी मूल रूप से केवल rectangular patterns ही handle करता है।
      साथ ही यह कहा गया है कि “finder, timing, alignment, format और version modules को exclude किया जाता है ताकि finder corners को स्वस्तिक समझने की गलती न हो”, लेकिन जब कोई व्यक्ति QR code में कोई आपत्तिजनक symbol देखता है, तो उसकी प्रतिक्रिया इस पर निर्भर नहीं करेगी कि वह pixel data है या timing pattern। finder corner तो बस square होता है; उसे analysis से exclude करने की ज़रूरत क्यों है, यह भी समझ नहीं आता। जितना गहराई में जाएँ, बात उतनी ही असंगत लगती है, इसलिए शक होता है कि यह AI से जल्दबाज़ी में generate किया गया output है
  • दुख की बात है कि ऐसा project मौजूद है। मैंने कभी सोचा भी नहीं था कि QR code के अंदर कोई आपत्तिजनक symbol संयोग से दिखाई दे सकता है

  • मैंने खुद calculate किया कि “एक साधारण QR code बनाते समय संयोग से कोई बड़ा नाज़ी symbol आखिर कितनी बार बनता होगा?” QR code पूरी तरह random नहीं होता, लेकिन यहाँ मैंने उसे ignore किया।
    5×5 और 7×7 स्वस्तिक को स्वतंत्र रूप से देखें तो प्रत्येक में left/right दो दिशाएँ, दो polarities, और inverted/normal forms हैं, यानी कुल 8 patterns बनते हैं। कुल patterns 5×5 में 2^25=3.3 करोड़ और 7×7 में 2^49=562 लाख करोड़ हैं, इसलिए स्वस्तिक शामिल होने की probability क्रमशः 2.38e-7 और 1.42e-14 है। QR code के अंदर 5×5 regions 289 और 7×7 regions 225 होते हैं, इसलिए random QR-code-जैसे रूप में कम-से-कम एक स्वस्तिक निकलने की कुल probability लगभग 0.00006, यानी 14,500 में 1 है। 9×9 या उससे बड़े भी calculate किए जा सकते हैं, लेकिन किसी खास pixel combination की probability इतनी कम है कि result पर meaningful असर नहीं पड़ता। अफसोस, source देखने पर लगता है कि यह project vibe coding से बना है, लेकिन calculation मैंने खुद हाथ से की

    • अगर किसी QR code में ऐसा pattern आ जाए जिसे prominent जगह इस्तेमाल करना हो, तो बस कुछ pixels रंग देने पर भी code चलता रहेगा। अगर code केवल एक व्यक्ति देखेगा या उसके सच में scan होने की संभावना बहुत कम है, तो चिंता की कोई वजह नहीं; और ज़्यादातर लोग समझेंगे कि QR codes में ऐसे patterns संयोग से बन सकते हैं
  • इतना specific project है, तो इसके पीछे कोई कहानी या joke है क्या, यह जानने की उत्सुकता होती है।
    हालांकि Microsoft photoDNA के perceptual hash में इतनी खामियाँ हैं कि training data में भरे CSAM thumbnail grids से ठीक से deal नहीं कर पाया और सिर्फ spreadsheets और Minecraft crafting grid screenshots की वजह से Discord user accounts suspend करवा दिए; ऐसे flawed AI के इस्तेमाल को देखते हुए, ज्यादा general-purpose dangerous-pattern avoidance tool काफी आकर्षक लगता है

  • अतीत की समस्या को नए तरीके से दोहराने के बजाय वास्तविक समस्याएँ हल करनी चाहिए। दुनिया में बहुत से जरूरत से ज़्यादा sensitive लोग हैं जिन्हें ऐसा project interesting लगेगा

  • भले ही मकसद data patterns में स्वस्तिक से बचना हो, website खुद symbol दिखाती है, इसलिए क्या यह Germany में illegal हो सकता है, यह जानने की उत्सुकता है

    • अगर information देने के उद्देश्य से है, तो केवल display करना अपने-आप में illegal नहीं है। उदाहरण के लिए, World War II archive footage इस्तेमाल करने वाली documentaries में स्वस्तिक censor करना ज़रूरी नहीं होता, लेकिन disclaimer रखना safer हो सकता है
    • प्रतिबंध मूल रूप से context पर निर्भर करता है: https://bundesgerichtshof.de/SharedDocs/Pressemitteilungen/…
      German Federal Court of Justice के उस decision के अनुसार, काटकर हटाया गया स्वस्तिक allowed है; और बाकी भी code द्वारा filter किए जाने वाले patterns के samples के रूप में दिखाए गए हैं, इसलिए समस्या होने की संभावना कम लगती है
    • मैं lawyer नहीं हूँ, लेकिन छोटा जवाब यह है कि यह illegal नहीं है; लंबा जवाब यह है कि context पर निर्भर करता है। इस page का context ठीक लगता है
      https://en.wikipedia.org/wiki/Strafgesetzbuch_section_86a