- Library Python untuk secara otomatis menemukan penyensoran yang tidak tepat pada dokumen PDF, dengan mengidentifikasi kasus ketika teks hanya ditutupi persegi panjang hitam
- Dikembangkan oleh Free Law Project untuk mengatasi masalah berulang yang ditemukan saat mengumpulkan jutaan PDF
- Dapat dijalankan dari baris perintah atau kode Python, dan mengembalikan hasil dalam bentuk JSON atau objek Python
- Secara internal menggunakan PyMuPDF untuk menganalisis persegi panjang, teks, dan informasi warna pada PDF guna menentukan apakah penyensoran benar-benar menyembunyikan teks
- Sangat bernilai sebagai alat verifikasi otomatis untuk mencegah kebocoran informasi pribadi pada dokumen hukum atau materi publik
Gambaran umum
x-ray adalah library Python untuk mendeteksi redaction yang salah di dalam file PDF
- Saat pengguna memasukkan path PDF, alat ini menemukan area yang penyensorannya tidak dilakukan dengan benar
- Hasilnya dikeluarkan dalam format JSON per halaman, mencakup koordinat (
bbox) dan teks (text) pada area tersebut
Latar belakang pengembangan
- Free Law Project menemukan banyak dokumen dengan penyensoran yang tidak dilakukan dengan benar saat mengumpulkan jutaan PDF
- Sebagian pengguna menutupi teks dengan persegi panjang hitam atau highlight tanpa benar-benar menghapus teksnya
- Dalam kasus ini, saat teks di bawah persegi panjang dipilih, isi aslinya tetap terlihat
- Untuk memahami seberapa sering masalah ini terjadi, alat
x-ray dibuat
Cara penggunaan
- Instalasi
- Dapat diinstal dengan perintah
pip install x-ray atau uv add x-ray
- Menjalankan dari baris perintah
- Jalankan dalam bentuk
xray path/to/file.pdf untuk menghasilkan keluaran JSON
- Jika URL dimasukkan, PDF jarak jauh akan diunduh lalu diperiksa
- Untuk memeriksa beberapa URL sekaligus, gunakan
xargs -n 1 xray < urls.txt
- Penggunaan dalam kode Python
- Memanggil
xray.inspect("file.pdf") akan mengembalikan hasil sebagai objek Python
- Jika nilai masukan berupa string, diperlakukan sebagai file lokal; jika diawali
https://, diperlakukan sebagai URL; jika bytes, diperlakukan sebagai PDF di memori
- Jika path file diberikan sebagai tipe
bytes, itu tidak akan berfungsi
Cara kerja
- Secara internal menganalisis PDF menggunakan PyMuPDF
- Mencari rectangle di dalam PDF
- Mencari letter pada posisi yang sama
- Merender persegi panjang sebagai gambar
- Jika persegi panjang terisi satu warna, maka dianggap sebagai penyensoran yang salah
- Karena struktur PDF kompleks, deteksi yang sempurna sulit dilakukan, tetapi perbaikan terus berlanjut
- Proyek ini dipelihara melalui donasi dan sponsor
Kontribusi dan rilis
- Daftar issues di GitHub dapat digunakan untuk memeriksa kasus yang belum didukung atau permintaan perbaikan
- Sebelum kontribusi pertama, perlu menandatangani Contributor License Agreement (CLA)
- Rilis diotomatisasi melalui GitHub Actions, dan untuk rilis manual gunakan perintah
poetry publish --build
Lisensi
- Dirilis dengan lisensi BSD, sehingga dapat diintegrasikan secara bebas ke proyek lain
- Pull Request dan usulan fitur disambut, dan perubahan juga dapat dilakukan langsung melalui antarmuka web GitHub
Belum ada komentar.