- Bibliothèque Python qui détecte automatiquement les masquages inadéquats dans les documents PDF, en identifiant les cas où le texte est simplement recouvert par un rectangle noir
- Développée par Free Law Project pour résoudre un problème récurrent découvert lors de la collecte de millions de PDF
- Peut être exécutée en ligne de commande ou depuis du code Python, avec des résultats renvoyés sous forme de JSON ou d’objets Python
- Utilise en interne PyMuPDF pour analyser les rectangles, le texte et les couleurs d’un PDF afin de déterminer si le masquage cache réellement le texte
- Outil de vérification automatique à forte valeur pour empêcher l’exposition de données personnelles dans des documents juridiques ou des publications publiques
Aperçu
x-ray est une bibliothèque Python qui détecte les redactions incorrectes dans les fichiers PDF
- Lorsque l’utilisateur fournit le chemin d’un PDF, elle repère les zones où le masquage n’a pas été correctement appliqué
- Les résultats sont renvoyés en JSON, page par page, avec les coordonnées (
bbox) et le texte (text) de chaque zone
Contexte de développement
- Free Law Project a découvert de nombreux documents dont le masquage était mal effectué lors de la collecte de millions de PDF
- Certains utilisateurs, au lieu de supprimer le texte, utilisaient simplement des rectangles noirs ou des surlignages pour le recouvrir
- Dans ce cas, il suffit de sélectionner le texte sous le rectangle pour voir apparaître le contenu original
- L’outil
x-ray a été créé pour mesurer la fréquence de ce problème
Utilisation
- Installation
- Installation possible avec
pip install x-ray ou uv add x-ray
- Exécution en ligne de commande
- Exécuter
xray path/to/file.pdf pour obtenir un résultat en JSON
- Si une URL est fournie, le PDF distant est téléchargé puis analysé
- Pour analyser plusieurs URL en une seule fois, utiliser
xargs -n 1 xray < urls.txt
- Utilisation dans du code Python
- L’appel à
xray.inspect("file.pdf") renvoie le résultat sous forme d’objet Python
- Si l’entrée est une chaîne, elle est traitée comme un fichier local ; si elle commence par
https://, comme une URL ; si c’est un bytes, comme un PDF en mémoire
- Le passage d’un chemin de fichier en type
bytes ne fonctionne pas
Principe de fonctionnement
- Le PDF est analysé en interne avec PyMuPDF
- Recherche des rectangles dans le PDF
- Recherche des lettres à la même position
- Rendu du rectangle sous forme d’image
- Si le rectangle est rempli d’une seule couleur, il est considéré comme un masquage incorrect
- La structure des PDF étant complexe, une détection parfaite est difficile, mais le projet continue de s’améliorer
- Le projet est maintenu grâce aux dons et au soutien
Contribution et publication
- La liste des issues sur GitHub permet de consulter les cas non pris en charge ou les demandes d’amélioration
- Avant une première contribution, il faut signer un Contributor License Agreement (CLA)
- La publication est automatisée via GitHub Actions ; pour une publication manuelle, utiliser la commande
poetry publish --build
Licence
- Publié sous licence BSD, le projet peut être librement intégré à d’autres projets
- Les Pull Requests et propositions de fonctionnalités sont les bienvenues, et des modifications peuvent être faites directement via l’interface web de GitHub
Aucun commentaire pour le moment.