3 पॉइंट द्वारा GN⁺ 2025-12-24 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • PDF दस्तावेज़ों में अनुचित redaction को अपने-आप खोजने वाली Python लाइब्रेरी, जो ऐसे मामलों की पहचान करती है जहाँ टेक्स्ट को सिर्फ काले बॉक्स से ढका गया हो
  • Free Law Project ने लाखों PDF इकट्ठा करते समय सामने आई बार-बार की समस्या को हल करने के लिए इसे विकसित किया
  • इसे command line या Python code से चलाया जा सकता है, और परिणाम JSON या Python object के रूप में लौटते हैं
  • अंदरूनी तौर पर PyMuPDF का उपयोग करके PDF के rectangle, text और color की जानकारी का विश्लेषण किया जाता है ताकि यह तय किया जा सके कि redaction वास्तव में टेक्स्ट छिपा रहा है या नहीं
  • कानूनी दस्तावेज़ों या सार्वजनिक सामग्री में निजी जानकारी के खुलासे को रोकने के लिए यह एक काफ़ी उपयोगी automated verification tool है

अवलोकन

  • x-ray PDF फ़ाइलों में गलत redaction का पता लगाने वाली Python लाइब्रेरी है
    • उपयोगकर्ता PDF path देता है, तो यह उन हिस्सों को खोजती है जहाँ redaction सही तरह से नहीं हुआ
    • परिणाम page-wise JSON के रूप में निकलते हैं, जिनमें coordinates (bbox) और उस क्षेत्र का text (text) शामिल होता है

विकास पृष्ठभूमि

  • Free Law Project ने लाखों PDF इकट्ठा करते समय गलत तरीके से redaction किए गए दस्तावेज़ बड़ी संख्या में पाए
    • कुछ उपयोगकर्ता टेक्स्ट हटाने के बजाय उसे काले rectangle या highlight से ढकने का तरीका इस्तेमाल करते थे
    • ऐसे मामलों में rectangle के नीचे का टेक्स्ट select करने पर मूल सामग्री वैसे की वैसे दिखाई देती है
  • इस समस्या की आवृत्ति समझने के लिए x-ray टूल बनाया गया

उपयोग का तरीका

  • इंस्टॉल
    • pip install x-ray या uv add x-ray कमांड से इंस्टॉल किया जा सकता है
  • Command line पर चलाना
    • xray path/to/file.pdf के रूप में चलाने पर JSON परिणाम मिलता है
    • URL देने पर remote PDF डाउनलोड करके उसकी जाँच की जाती है
    • कई URL एक साथ जाँचने के लिए xargs -n 1 xray < urls.txt का उपयोग करें
  • Python code में उपयोग
    • xray.inspect("file.pdf") कॉल करने पर परिणाम Python object के रूप में मिलता है
    • input string हो तो local file, https:// से शुरू हो तो URL, और bytes हो तो memory में मौजूद PDF माना जाता है
    • फ़ाइल path को bytes type में देने पर यह काम नहीं करता

काम करने का तरीका

  • अंदरूनी तौर पर PyMuPDF की मदद से PDF का विश्लेषण किया जाता है
    1. PDF में rectangle खोजे जाते हैं
    2. उसी स्थान पर मौजूद letters खोजे जाते हैं
    3. rectangle को image के रूप में render किया जाता है
    4. अगर rectangle एक ही रंग से भरा हो, तो उसे गलत redaction माना जाता है
  • PDF की संरचना जटिल होने के कारण पूरी तरह सटीक detection मुश्किल है, लेकिन इसमें लगातार सुधार किया जा रहा है
  • प्रोजेक्ट donation और sponsorship से संचालित होता है

योगदान और रिलीज़

  • GitHub के issues list में unsupported cases या improvement requests देखे जा सकते हैं
  • पहली बार योगदान देने से पहले Contributor License Agreement (CLA) पर हस्ताक्षर करना ज़रूरी है
  • रिलीज़ प्रक्रिया GitHub Actions के ज़रिए automated है, और manual release के लिए poetry publish --build कमांड उपयोग होती है

लाइसेंस

  • यह BSD लाइसेंस के तहत उपलब्ध है, इसलिए इसे दूसरे प्रोजेक्ट्स में स्वतंत्र रूप से integrate किया जा सकता है
  • Pull Request और feature suggestions का स्वागत है, और GitHub web interface से सीधे संपादन भी किया जा सकता है

1 टिप्पणियां

 
GN⁺ 2025-12-24
Hacker News की राय
  • Free Law Project में काम करते हुए मैंने कई साल लंबे जटिल प्रोजेक्ट किए हैं, लेकिन यह X-ray प्रोजेक्ट सबसे ज़्यादा चर्चा में रहा
    CourtListener के लाखों दस्तावेज़ों का विश्लेषण करने के लिए X-ray बनाया गया था, और मकसद लोगों को इस समस्या के बारे में जागरूक करना था
    S3 batch job से लाखों दस्तावेज़ कुछ ही मिनटों में analyze कर लिए, लेकिन नतीजों को व्यवस्थित करना और रिपोर्ट करना वाला असल मुश्किल हिस्सा अभी भी बाकी है

    • Argelius Labs की PDF सुरक्षा रिसर्च के अनुसार, काले बॉक्स से ढके हिस्से की लंबाई से भी शब्द की लंबाई का अनुमान लगाने वाला glyph spacing attack संभव है
      यह जानने की उत्सुकता है कि क्या X-ray भी ऐसे font metric leakage का इस्तेमाल करता है
    • अगर font का kerning और pixel-स्तर पर reproduction संभव हो, तो शब्दों का काफी सटीक अनुमान लगाया जा सकता है
      उदाहरण के लिए, oioioi और oooiii की चौड़ाई font के अनुसार अलग होती है
  • मैंने आज जारी की गई फ़ाइलों में से लगभग 10% ही देखी हैं, लेकिन उदाहरण के लिए EFTA00037069.pdf में /Prev pointer है, यानी पिछला version PDF के अंदर शामिल है
    यह मामूली बदलाव है, लेकिन संभावना है कि दूसरी फ़ाइलों में भी ऐसा हो
    qpdf --show-object=trailer कमांड से इसे सीधे verify किया जा सकता है
    मुझे लगता है कि ऐसी बेतरतीब editing सिर्फ गलती नहीं, जानबूझकर भी हो सकती है

    • मैंने खुद check किया, और उस फ़ाइल की revision history बस इतनी थी कि हर पेज पर नंबर जोड़े गए थे
      original पहले से ही पूरी तरह flattened document था
    • यह हैरानी की बात नहीं कि यह काम करने वाले लोग बुनियादी guidelines तक नहीं जानते
    • असल में अक्सर किसी को भी बुलाकर redaction का काम दे दिया जाता है, इसलिए अनुभव की कमी ही समस्या हो सकती है
  • जितना ज़्यादा सोचता हूँ, उतना लगता है कि font की kerning information redaction की बड़ी कमजोरी हो सकती है
    काले बॉक्स के आसपास के text की position से भी छिपे हुए शब्द की लंबाई और आकार का अनुमान लगाया जा सकता है
    अगर rendering algorithm पता हो, तो brute-force से असली text निकाला भी जा सकता है
    सोच रहा हूँ क्या किसी ने इस समस्या पर रिसर्च की है

    • अच्छा होगा अगर ऐसा font हो जो kerning को अपने-आप randomize कर दे
      यानी एक ही शब्द का spacing हर दस्तावेज़ में अलग हो
    • हाल में encrypted chat sessions of LLMs से packet size और timing analysis के जरिए जानकारी निकालने के उदाहरण भी सामने आए हैं
      यह एक तरह का side-channel attack है, और इस समस्या से मिलता-जुलता है
    • यह redaction की लंबाई और उसकी predictability पर निर्भर करता है
      अगर वह छोटा हो और संदर्भ के हिसाब से “yes” या “no” तक सीमित हो, तो अनुमान लगाना आसान है, लेकिन नाम या लंबे वाक्य बहुत कठिन होते हैं
  • अफ़सोस की बात है कि PDF में अब भी डिजिटल दस्तावेज़ के रूप में बुनियादी खामियाँ बहुत हैं, फिर भी इसका इतना व्यापक इस्तेमाल जारी है

  • एक सीधा सवाल है: ऐसे दस्तावेज़ सार्वजनिक करते समय redaction का मकसद आखिर होता क्या है
    यह भी समझ नहीं आया कि anonymity क्यों बनाए रखनी चाहिए
    (बाद में संपादन) जब सोचा कि इसमें निर्दोष लोग भी शामिल हो सकते हैं, तब बात समझ में आई

    • कानूनी रूप से केवल पीड़ितों की पहचान, चल रही जांच, बाल यौन शोषण सामग्री, और राष्ट्रीय सुरक्षा से जुड़ी जानकारी ही छिपाई जा सकती है
      प्रतिष्ठा को नुकसान से बचाने या राजनीतिक कारणों से छिपाना मना है
      लेकिन चिंता यह है कि वास्तविक redaction अक्सर इन मानकों का पालन नहीं करती
    • WikiLeaks का रुख यह था कि केवल वही जानकारी छिपाई जाए जो किसी व्यक्ति को शारीरिक नुकसान पहुँचा सकती हो
      उदाहरण के लिए, GPS coordinates सार्वजनिक होने से bombing का जोखिम पैदा हो सकता है
    • पीड़ितों ने कहा है कि अगर redaction का मकसद अपराधियों की रक्षा करना है, तो वे इसे नहीं चाहते
      उनके अनुसार जवाबदेही तय करना ज़्यादा महत्वपूर्ण है
    • इसका उद्देश्य पीड़ितों, गवाहों और informants की पहचान की रक्षा करना है
    • लंबी जांच से जुड़ी फ़ाइलों में झूठी सूचनाएँ और गलत रिपोर्टें बहुत होती हैं, इसलिए निर्दोष लोगों की privacy की रक्षा ज़रूरी है
      लेकिन यह मामला इतना महत्वपूर्ण है कि इसे सार्वजनिक करना अपरिहार्य है
  • redacted PDF जारी करते समय काला rectangle बनाकर उसे image के रूप में rasterize करना ही बुनियादी प्रक्रिया लगती है 🤷

    • मैं anti-screenshot से जुड़ा business चलाता हूँ, और ऐसी redaction failures सच में बहुत आम हैं
      सिर्फ काला बॉक्स चढ़ा देने से data गायब नहीं हो जाता
      compliance की दुनिया में मैं ऐसी गलतफहमियाँ बार-बार देखता हूँ
    • लेकिन कुछ मामलों में दस्तावेज़ का searchable होना ज़रूरी होता है, इसलिए image conversion हमेशा संभव नहीं होती
  • अगर Adobe Pro को ठीक से इस्तेमाल किया जाए, तो PDF की सामग्री को स्थायी रूप से हटाया (redact) जा सकता है
    यह मामला बस PDF editor को ठीक से न संभाल पाने वाली शौकिया गलती है
    यह उन प्रक्रियाओं को नज़रअंदाज़ करने का नतीजा है जिनका हज़ारों वकील और legal clerks दशकों से इस्तेमाल करते आए हैं
    पहले कागज़ पर काली लाइन खींचकर प्रिंटेड कॉपी को final version माना जाता था, शायद उसी दौर वाली सोच से यह काम किया गया

    • संभव है उन्होंने PDF को कागज़ की तरह समझकर सिर्फ काला बॉक्स ढक दिया और काम खत्म मान लिया
      text selection रुक जाने पर उन्हें लगा होगा कि सामग्री छिप गई है
      या फिर शायद जानबूझकर ऐसा किया गया हो ताकि बाद में गलती जैसा दिखाया जा सके
    • अमेरिकी संघीय सरकार के वकीलों और जांचकर्ताओं को redaction की कड़ी training दी जाती है
      इसलिए बहुत से लोग इसे साधारण गलती नहीं, बल्कि malicious compliance मानते हैं
  • हैरानी की बात है कि browser के PDF viewer में भी redacted जानकारी दिख जाती है
    Brave(Linux) में इस दस्तावेज़ को खोलकर, paragraph 90 की पहली पंक्ति copy करें तो छिपा हुआ text वैसा का वैसा paste हो जाता है

    • इस तरह की गलत redaction वही प्रतिनिधि मामला है जिसे X-ray detect कर सकता है
  • यह देखना दिलचस्प है कि ediscovery (इलेक्ट्रॉनिक साक्ष्य प्रकटीकरण) जैसी अवधारणा अब आम लोगों तक भी पहुँच रही है

  • टेक इंडस्ट्री के लोग यह जानकर चौंक जाएंगे कि non-tech क्षेत्रों के लोग कितने तकनीकी रूप से अनभिज्ञ हो सकते हैं
    इससे वे दिन याद आते हैं जब IT staff को कंपनी का सर्वशक्तिमान देवता समझा जाता था