3 poin oleh GN⁺ 2025-12-24 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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
    1. Mencari rectangle di dalam PDF
    2. Mencari letter pada posisi yang sama
    3. Merender persegi panjang sebagai gambar
    4. 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.

Belum ada komentar.