3 points par GN⁺ 2025-12-24 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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
    1. Recherche des rectangles dans le PDF
    2. Recherche des lettres à la même position
    3. Rendu du rectangle sous forme d’image
    4. 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.

Aucun commentaire pour le moment.