Pindai dokumen tanpa mengunggahnya

Paspor, kontrak, slip gaji, surat keterangan medis. Dokumen yang paling perlu dipindai justru yang paling tidak pantas diserahkan ke server milik orang asing. ScanPDF dibuat agar Anda tidak perlu menyerahkannya sama sekali.

Apa yang dilakukan konverter online pada umumnya

Situs "foto ke PDF" pada umumnya hanyalah formulir web di depan sebuah server. File Anda diunggah, dikonversi di tempat yang tidak bisa Anda lihat, lalu ditawarkan kembali sebagai unduhan. Di suatu bagian dalam ketentuan layanannya ada janji untuk menghapusnya setelah satu jam atau satu hari.

Janji itu mungkin saja ditepati. Namun itu janji, bukan mekanisme, dan tidak mencakup hal-hal yang tidak pernah diberitahukan kepada Anda: berapa banyak mesin yang dilewati file itu, apa saja yang dicatat di log, subprosesor mana yang menyimpan cadangannya, atau apa yang terbongkar bila kelak terjadi kebocoran data. Untuk dokumen identitas atau kontrak yang sudah ditandatangani, penilaian risiko yang jujur adalah: begitu unggahan selesai, apa yang terjadi selanjutnya tidak lagi berada dalam kendali Anda.

Apa yang dilakukan ScanPDF sebagai gantinya

Tidak ada langkah unggah, karena memang tidak ada tempat untuk mengunggah. ScanPDF adalah halaman statis. Browser Anda membaca foto dari penyimpanan, dan semua proses setelahnya terjadi di dalam tab:

  • Deteksi tepi berjalan pada build WebAssembly dari OpenCV, dieksekusi di CPU Anda.
  • Koreksi perspektif dan filter diterapkan pada gambar beresolusi penuh di memori.
  • PDF disusun secara lokal dengan pdf-lib dan diserahkan ke browser sebagai unduhan biasa.

Tidak ada permintaan yang membawa data gambar Anda, karena permintaan semacam itu memang tidak ada di dalam kode. Semuanya tetap berfungsi dengan kabel jaringan dicabut setelah aplikasi selesai dimuat. Foto yang Anda kirim dari aplikasi lain melalui Bagikan lalu ScanPDF juga diserahkan di dalam perangkat: service worker aplikasi menjawab sendiri permintaan itu, dan tidak ada yang dikirim keluar. Ada satu kasus khusus yang perlu diketahui: jika Anda menghapus data situs saat aplikasi masih terinstal di Android, tidak ada lagi yang tersisa di perangkat untuk menerima pembagian berikutnya, sehingga browser mengirim foto itu ke host web, yang tidak menerimanya. Buka aplikasi satu kali setelah menghapus datanya, dan proses berbagi kembali berlangsung di perangkat.

Bisa diverifikasi, bukan sekadar klaim

Klaim privasi yang tidak bisa Anda periksa nyaris tidak ada nilainya, jadi klaim ini dirancang agar bisa diperiksa dengan tiga cara.

  • Amati sendiri. Buka alat pengembang (developer tools) di browser Anda, beralihlah ke tab Network, lalu pindai sebuah dokumen. Setelah file milik aplikasi selesai dimuat, tidak ada lagi yang dikirim.
  • Baca kode sumbernya. Seluruh aplikasi berlisensi MIT dan tersedia di GitHub - beberapa ratus baris modul JavaScript biasa tanpa langkah build yang mengaburkannya, dan dua dependensi yang dikunci dengan URL dan SHA-256.
  • Biarkan browser yang menegakkannya. Kontainer untuk hosting mandiri menyertakan Content-Security-Policy ketat yang membatasi koneksi hanya ke origin-nya sendiri. Dengan kebijakan itu, permintaan tak sengaja ke host eksternal mana pun diblokir oleh browser, bukan sekadar tidak ada di dalam kode.

Demo online versus hosting mandiri

Perbedaannya perlu dijelaskan dengan tepat, karena kebanyakan situs tidak melakukannya.

Demo di scanpdf.io adalah kode yang sama, disajikan dari GitHub Pages. Di sana pemrosesan juga sepenuhnya berlangsung di sisi klien, dan dokumen Anda tetap tidak pernah meninggalkan perangkat. Yang berbeda adalah siapa yang mengendalikan header respons: di GitHub Pages, itu adalah GitHub, sehingga CSP ketat dari konfigurasi nginx milik proyek ini tidak diterapkan. GitHub juga melihat permintaan server web biasa untuk halaman itu sendiri, sebagaimana host mana pun.

Jika Anda ingin jaminan itu ditegakkan oleh browser, bukan bergantung pada kepercayaan bahwa kodenya memang seperti yang dinyatakan, jalankan sendiri. Satu perintah sudah cukup untuk menjalankan kontainernya, dan saat berjalan kontainer itu sama sekali tidak memerlukan akses jaringan.

Coba sekarang

Buka pemindai dan masukkan dokumen yang tidak akan pernah Anda unggah ke mana pun. Justru itulah intinya. Jika Anda baru pertama kali memotret kertas, panduan memindai membahas cara mendapatkan hasil yang bersih sejak percobaan pertama.