PDF दस्तावेज़ों में गलत redaction का पता लगाने वाली Python लाइब्रेरी X-ray
(github.com/freelawproject)- PDF दस्तावेज़ों में अनुचित redaction को अपने-आप खोजने वाली Python लाइब्रेरी, जो ऐसे मामलों की पहचान करती है जहाँ टेक्स्ट को सिर्फ काले बॉक्स से ढका गया हो
- Free Law Project ने लाखों PDF इकट्ठा करते समय सामने आई बार-बार की समस्या को हल करने के लिए इसे विकसित किया
- इसे command line या Python code से चलाया जा सकता है, और परिणाम JSON या Python object के रूप में लौटते हैं
- अंदरूनी तौर पर PyMuPDF का उपयोग करके PDF के rectangle, text और color की जानकारी का विश्लेषण किया जाता है ताकि यह तय किया जा सके कि redaction वास्तव में टेक्स्ट छिपा रहा है या नहीं
- कानूनी दस्तावेज़ों या सार्वजनिक सामग्री में निजी जानकारी के खुलासे को रोकने के लिए यह एक काफ़ी उपयोगी automated verification tool है
अवलोकन
x-rayPDF फ़ाइलों में गलत 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 को
bytestype में देने पर यह काम नहीं करता
काम करने का तरीका
- अंदरूनी तौर पर PyMuPDF की मदद से PDF का विश्लेषण किया जाता है
- PDF में rectangle खोजे जाते हैं
- उसी स्थान पर मौजूद letters खोजे जाते हैं
- rectangle को image के रूप में render किया जाता है
- अगर 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 टिप्पणियां
Hacker News की राय
Free Law Project में काम करते हुए मैंने कई साल लंबे जटिल प्रोजेक्ट किए हैं, लेकिन यह X-ray प्रोजेक्ट सबसे ज़्यादा चर्चा में रहा
CourtListener के लाखों दस्तावेज़ों का विश्लेषण करने के लिए X-ray बनाया गया था, और मकसद लोगों को इस समस्या के बारे में जागरूक करना था
S3 batch job से लाखों दस्तावेज़ कुछ ही मिनटों में analyze कर लिए, लेकिन नतीजों को व्यवस्थित करना और रिपोर्ट करना वाला असल मुश्किल हिस्सा अभी भी बाकी है
यह जानने की उत्सुकता है कि क्या X-ray भी ऐसे font metric leakage का इस्तेमाल करता है
उदाहरण के लिए, oioioi और oooiii की चौड़ाई font के अनुसार अलग होती है
मैंने आज जारी की गई फ़ाइलों में से लगभग 10% ही देखी हैं, लेकिन उदाहरण के लिए
EFTA00037069.pdfमें/Prevpointer है, यानी पिछला version PDF के अंदर शामिल हैयह मामूली बदलाव है, लेकिन संभावना है कि दूसरी फ़ाइलों में भी ऐसा हो
qpdf --show-object=trailerकमांड से इसे सीधे verify किया जा सकता हैमुझे लगता है कि ऐसी बेतरतीब editing सिर्फ गलती नहीं, जानबूझकर भी हो सकती है
original पहले से ही पूरी तरह flattened document था
जितना ज़्यादा सोचता हूँ, उतना लगता है कि font की kerning information redaction की बड़ी कमजोरी हो सकती है
काले बॉक्स के आसपास के text की position से भी छिपे हुए शब्द की लंबाई और आकार का अनुमान लगाया जा सकता है
अगर rendering algorithm पता हो, तो brute-force से असली text निकाला भी जा सकता है
सोच रहा हूँ क्या किसी ने इस समस्या पर रिसर्च की है
यानी एक ही शब्द का spacing हर दस्तावेज़ में अलग हो
यह एक तरह का side-channel attack है, और इस समस्या से मिलता-जुलता है
अगर वह छोटा हो और संदर्भ के हिसाब से “yes” या “no” तक सीमित हो, तो अनुमान लगाना आसान है, लेकिन नाम या लंबे वाक्य बहुत कठिन होते हैं
अफ़सोस की बात है कि PDF में अब भी डिजिटल दस्तावेज़ के रूप में बुनियादी खामियाँ बहुत हैं, फिर भी इसका इतना व्यापक इस्तेमाल जारी है
एक सीधा सवाल है: ऐसे दस्तावेज़ सार्वजनिक करते समय redaction का मकसद आखिर होता क्या है
यह भी समझ नहीं आया कि anonymity क्यों बनाए रखनी चाहिए
(बाद में संपादन) जब सोचा कि इसमें निर्दोष लोग भी शामिल हो सकते हैं, तब बात समझ में आई
प्रतिष्ठा को नुकसान से बचाने या राजनीतिक कारणों से छिपाना मना है
लेकिन चिंता यह है कि वास्तविक redaction अक्सर इन मानकों का पालन नहीं करती
उदाहरण के लिए, GPS coordinates सार्वजनिक होने से bombing का जोखिम पैदा हो सकता है
उनके अनुसार जवाबदेही तय करना ज़्यादा महत्वपूर्ण है
लेकिन यह मामला इतना महत्वपूर्ण है कि इसे सार्वजनिक करना अपरिहार्य है
redacted PDF जारी करते समय काला rectangle बनाकर उसे image के रूप में rasterize करना ही बुनियादी प्रक्रिया लगती है 🤷
सिर्फ काला बॉक्स चढ़ा देने से data गायब नहीं हो जाता
compliance की दुनिया में मैं ऐसी गलतफहमियाँ बार-बार देखता हूँ
अगर Adobe Pro को ठीक से इस्तेमाल किया जाए, तो PDF की सामग्री को स्थायी रूप से हटाया (redact) जा सकता है
यह मामला बस PDF editor को ठीक से न संभाल पाने वाली शौकिया गलती है
यह उन प्रक्रियाओं को नज़रअंदाज़ करने का नतीजा है जिनका हज़ारों वकील और legal clerks दशकों से इस्तेमाल करते आए हैं
पहले कागज़ पर काली लाइन खींचकर प्रिंटेड कॉपी को final version माना जाता था, शायद उसी दौर वाली सोच से यह काम किया गया
text selection रुक जाने पर उन्हें लगा होगा कि सामग्री छिप गई है
या फिर शायद जानबूझकर ऐसा किया गया हो ताकि बाद में गलती जैसा दिखाया जा सके
इसलिए बहुत से लोग इसे साधारण गलती नहीं, बल्कि malicious compliance मानते हैं
हैरानी की बात है कि browser के PDF viewer में भी redacted जानकारी दिख जाती है
Brave(Linux) में इस दस्तावेज़ को खोलकर, paragraph 90 की पहली पंक्ति copy करें तो छिपा हुआ text वैसा का वैसा paste हो जाता है
यह देखना दिलचस्प है कि ediscovery (इलेक्ट्रॉनिक साक्ष्य प्रकटीकरण) जैसी अवधारणा अब आम लोगों तक भी पहुँच रही है
टेक इंडस्ट्री के लोग यह जानकर चौंक जाएंगे कि non-tech क्षेत्रों के लोग कितने तकनीकी रूप से अनभिज्ञ हो सकते हैं
इससे वे दिन याद आते हैं जब IT staff को कंपनी का सर्वशक्तिमान देवता समझा जाता था