Scansiona i documenti senza caricarli

Passaporti, contratti, buste paga, referti medici. I documenti che più vale la pena scansionare sono proprio quelli che meno vale la pena affidare al server di uno sconosciuto. ScanPDF è nato perché consegnarli a qualcuno non faccia parte del patto.

Che cosa fa un tipico convertitore online

Il classico sito "da foto a PDF" è un modulo web davanti a un server. Il tuo file viene caricato, convertito in un posto che non puoi vedere e restituito come download. Da qualche parte nelle condizioni d'uso c'è la promessa di cancellarlo dopo un'ora o un giorno.

Può anche darsi che la promessa venga mantenuta. Ma resta una promessa, non un meccanismo, e non copre ciò che nessuno ti ha mai detto: da quante macchine è passato il file, che cosa è finito nei log, quale subfornitore ne ha conservato il backup, o che cosa verrà esposto da una futura violazione. Per un documento d'identità o un contratto firmato, la valutazione onesta del rischio è che, una volta completato il caricamento, l'esito non dipende più da te.

Che cosa fa invece ScanPDF

Non c'è una fase di caricamento, perché non c'è niente su cui caricare. ScanPDF è una pagina statica. Il browser legge la foto dal disco, e tutto quello che segue avviene nella scheda:

  • Il rilevamento dei bordi usa una build WebAssembly di OpenCV, eseguita sulla tua CPU.
  • Correzione prospettica e filtri vengono applicati in memoria all'immagine a piena risoluzione.
  • Il PDF viene composto in locale con pdf-lib e consegnato al browser come un normale download.

Nessuna richiesta trasporta i dati delle tue immagini, perché nel codice una richiesta del genere non esiste. Una volta caricata l'app, funziona tutto anche con il cavo di rete staccato. Anche le foto che invii da un'altra app con Condividi e poi ScanPDF vengono consegnate sul dispositivo: il service worker dell'app risponde da sé a quella richiesta e non viene trasmesso nulla. C'è un caso limite che è bene conoscere: se cancelli i dati del sito mentre l'app è ancora installata su Android, sul dispositivo non resta nulla che possa ricevere la condivisione successiva, e il browser invia quelle foto all'host web, che non le accetta. Apri l'app una volta dopo aver cancellato i dati e la condivisione torna a restare sul dispositivo.

Verificabile, non solo dichiarato

Una promessa sulla privacy che non puoi controllare vale ben poco, quindi questa è fatta in modo da poter essere verificata in tre modi.

  • Guardalo con i tuoi occhi. Apri gli strumenti per sviluppatori del browser, passa alla scheda Rete e scansiona un documento. Dopo il caricamento dei file dell'app non viene inviato nient'altro.
  • Leggi il codice. L'intera app ha licenza MIT e si trova su GitHub - poche centinaia di righe di semplici moduli JavaScript, senza una fase di build che li renda illeggibili, e due dipendenze fissate tramite URL e SHA-256.
  • Lascia che sia il browser a farlo rispettare. Il container self-hosted include una Content-Security-Policy rigorosa che limita le connessioni alla propria origine. Con questa policy, una richiesta accidentale verso un host esterno viene bloccata dal browser, e non è soltanto assente dal codice.

La demo online e l'installazione in proprio

Vale la pena essere precisi sulla differenza, perché la maggior parte dei siti non lo è.

La demo su scanpdf.io è lo stesso codice, servito da GitHub Pages. Anche lì l'elaborazione avviene interamente lato client e i tuoi documenti non lasciano comunque il dispositivo. Cambia chi controlla le intestazioni di risposta: su GitHub Pages è GitHub, quindi la CSP rigorosa prevista dalla configurazione nginx del progetto non viene applicata. GitHub vede inoltre la normale richiesta al server web per la pagina stessa, come succederebbe con qualsiasi hosting.

Se vuoi che la garanzia sia imposta dal browser, invece di fidarti del fatto che il codice sia davvero quello che dichiara di essere, eseguilo in proprio. Basta un comando per avviare il container, che in esecuzione non ha bisogno di alcun accesso alla rete.

Provalo

Apri lo scanner e trascinaci dentro un documento che non avresti mai caricato da nessuna parte. Il senso è proprio questo. Se fotografare fogli di carta è una novità per te, la guida alla scansione spiega come ottenere un risultato pulito al primo colpo.