- Eine Python-Bibliothek, die unsachgemäße Schwärzungen in PDF-Dokumenten automatisch erkennt und Fälle identifiziert, in denen Text lediglich mit schwarzen Rechtecken überdeckt wurde
- Entwickelt vom Free Law Project, um ein wiederkehrendes Problem zu lösen, das beim Sammeln von Millionen von PDFs entdeckt wurde
- Kann über die Kommandozeile oder aus Python-Code heraus ausgeführt werden und gibt die Ergebnisse als JSON oder Python-Objekte zurück
- Verwendet intern PyMuPDF, um Rechtecke, Text und Farbinformationen in PDFs zu analysieren und zu bestimmen, ob eine Schwärzung tatsächlich Text verbirgt
- Besonders nützlich als automatisches Prüfwerkzeug zum Schutz vor der Offenlegung personenbezogener Daten in Rechtsdokumenten oder öffentlich zugänglichen Materialien
Überblick
x-ray ist eine Python-Bibliothek zur Erkennung fehlerhafter Schwärzungen (redactions) in PDF-Dateien
- Wenn der Benutzer einen PDF-Pfad angibt, findet das Tool Bereiche, in denen die Schwärzung nicht korrekt durchgeführt wurde
- Das Ergebnis wird im JSON-Format pro Seite ausgegeben und enthält Koordinaten (
bbox) sowie den Text (text) des betreffenden Bereichs
Hintergrund der Entwicklung
- Das Free Law Project stieß beim Sammeln von Millionen von PDFs auf zahlreiche Dokumente mit nicht korrekt durchgeführten Schwärzungen
- Einige Nutzer verwendeten schwarze Rechtecke oder Hervorhebungen, um Text zu überdecken, anstatt ihn tatsächlich zu löschen
- In solchen Fällen wird der Originaltext unverändert offengelegt, sobald man den Text unter dem Rechteck auswählt
- Um die Häufigkeit dieses Problems zu erfassen, wurde das Tool
x-ray entwickelt
Verwendung
- Installation
- Installation mit
pip install x-ray oder uv add x-ray
- Ausführung über die Kommandozeile
- Mit
xray path/to/file.pdf wird das Tool ausgeführt und gibt ein JSON-Ergebnis aus
- Bei Eingabe einer URL wird die entfernte PDF heruntergeladen und anschließend geprüft
- Um mehrere URLs auf einmal zu prüfen, kann
xargs -n 1 xray < urls.txt verwendet werden
- Verwendung in Python-Code
xray.inspect("file.pdf") gibt das Ergebnis als Python-Objekt zurück
- Ist der Eingabewert ein String, wird er als lokale Datei behandelt; beginnt er mit
https://, als URL; bei bytes als PDF im Speicher
- Wird ein Dateipfad als Typ
bytes übergeben, funktioniert dies nicht
Funktionsweise
- Intern wird PyMuPDF zur Analyse der PDF verwendet
- Suche nach Rechtecken (rectangle) in der PDF
- Suche nach Zeichen (letter) an derselben Position
- Rendern des Rechtecks als Bild
- Ist das Rechteck mit einer einzigen Farbe gefüllt, wird es als fehlerhafte Schwärzung eingestuft
- Da die PDF-Struktur komplex ist, ist eine perfekte Erkennung schwierig, das Tool wird jedoch laufend verbessert
- Das Projekt wird durch Spenden und Sponsoring getragen
Beiträge und Veröffentlichung
- Über die Issues-Liste auf GitHub lassen sich nicht unterstützte Fälle oder Verbesserungswünsche prüfen
- Vor dem ersten Beitrag ist die Unterzeichnung eines Contributor License Agreement (CLA) erforderlich
- Die Veröffentlichung ist über GitHub Actions automatisiert; für eine manuelle Veröffentlichung wird der Befehl
poetry publish --build verwendet
Lizenz
- Veröffentlicht unter der BSD-Lizenz und damit frei in andere Projekte integrierbar
- Pull Requests und Funktionsvorschläge sind willkommen; Änderungen können direkt über die GitHub-Weboberfläche vorgenommen werden
Noch keine Kommentare.