Dokumente scannen, ohne sie hochzuladen
Reisepässe, Verträge, Gehaltsabrechnungen, Arztbriefe. Genau die Dokumente, die sich am ehesten zu scannen lohnen, gibt man am wenigsten gern auf den Server eines Fremden. ScanPDF ist so gebaut, dass dieses Weggeben nicht Teil der Abmachung ist.
Was ein üblicher Online-Konverter tut
Die typische „Foto zu PDF“-Seite ist ein Webformular vor einem Server. Ihre Datei wird hochgeladen, irgendwo umgewandelt, wo Sie es nicht sehen können, und als Download zurückgegeben. Irgendwo in den Bedingungen steht das Versprechen, sie nach einer Stunde oder einem Tag zu löschen.
Dieses Versprechen mag durchaus gehalten werden. Aber es ist ein Versprechen und kein Mechanismus, und es deckt die Teile nicht ab, von denen nie die Rede war: über wie viele Maschinen die Datei lief, was protokolliert wurde, welcher Unterauftragsverarbeiter das Backup aufbewahrte oder was ein künftiger Sicherheitsvorfall offenlegt. Für ein Ausweisdokument oder einen unterschriebenen Vertrag lautet die ehrliche Risikoeinschätzung: Sobald der Upload durch ist, liegt der Ausgang nicht mehr bei Ihnen.
Was ScanPDF stattdessen tut
Es gibt keinen Upload-Schritt, weil es nichts zum Hochladen gibt. ScanPDF ist eine statische Seite. Ihr Browser liest das Foto von der Festplatte, und alles danach passiert im Tab:
- Die Kantenerkennung läuft auf einem WebAssembly-Build von OpenCV, ausgeführt auf Ihrer CPU.
- Perspektivkorrektur und Filter werden im Arbeitsspeicher auf das Bild in voller Auflösung angewendet.
- Das PDF entsteht lokal mit pdf-lib und wird dem Browser als ganz normaler Download übergeben.
Keine Anfrage transportiert Ihre Bilddaten, weil es eine solche Anfrage im Code nicht gibt. Das Ganze funktioniert mit gezogenem Netzwerkkabel, sobald die Anwendung geladen ist. Auch Fotos, die Sie aus einer anderen App über Teilen und dann ScanPDF schicken, werden auf dem Gerät übergeben: Der Service Worker der Anwendung beantwortet diese Anfrage selbst, übertragen wird nichts. Einen Grenzfall sollten Sie kennen: Wenn Sie die Websitedaten löschen, während die App unter Android noch installiert ist, gibt es auf dem Gerät nichts mehr, was das nächste Teilen entgegennimmt; der Browser schickt diese Fotos dann an den Webhost, der sie nicht annimmt. Öffnen Sie die App nach dem Löschen der Daten einmal, und das Teilen bleibt wieder auf dem Gerät.
Überprüfbar, nicht nur behauptet
Eine Datenschutzaussage, die man nicht nachprüfen kann, ist wenig wert, deshalb ist diese hier auf drei Wegen überprüfbar angelegt.
- Sehen Sie selbst nach. Öffnen Sie die Entwicklerwerkzeuge Ihres Browsers, wechseln Sie auf den Netzwerk-Tab und scannen Sie ein Dokument. Nachdem die Dateien der Anwendung geladen sind, wird nichts weiter gesendet.
- Lesen Sie den Quellcode. Die gesamte Anwendung steht unter MIT-Lizenz auf GitHub - ein paar hundert Zeilen schlichte JavaScript-Module ohne Build-Schritt, der etwas verschleiern könnte, und zwei über URL und SHA-256 festgenagelte Abhängigkeiten.
- Lassen Sie es den Browser erzwingen. Der selbst gehostete Container bringt eine strikte
Content-Security-Policymit, die Verbindungen auf den eigenen Ursprung beschränkt. Damit wird eine versehentliche Anfrage an einen fremden Host vom Browser blockiert und ist nicht nur zufällig im Code nicht vorhanden.
Die gehostete Demo gegenüber Selbst-Hosting
Hier lohnt sich Genauigkeit, weil die meisten Seiten sie vermissen lassen.
Die Demo auf scanpdf.io ist derselbe Code, ausgeliefert über GitHub Pages. Auch dort läuft die Verarbeitung vollständig clientseitig, und Ihre Dokumente verlassen den Rechner weiterhin nicht. Der Unterschied liegt darin, wer die Antwort-Header kontrolliert: Bei GitHub Pages ist das GitHub, weshalb die strikte CSP aus der nginx-Konfiguration des Projekts dort nicht greift. GitHub sieht außerdem die ganz gewöhnliche Webserver-Anfrage nach der Seite selbst, wie jeder Hoster das täte.
Wenn Sie die Garantie vom Browser erzwungen haben möchten, statt sich darauf zu verlassen, dass der Code das tut, was er sagt, betreiben Sie ihn selbst. Ein Befehl startet den Container, und zur Laufzeit braucht er überhaupt keinen Netzzugang.
Ausprobieren
Öffnen Sie den Scanner und legen Sie ein Dokument hinein, das Sie nirgendwo hochgeladen hätten. Genau darum geht es. Wenn Sie Papier zum ersten Mal abfotografieren, zeigt die Scan-Anleitung, wie das Ergebnis gleich beim ersten Versuch sauber wird.