Der Code dieser Seite ist nicht gestartet.

Wird index.html direkt aus einem Ordner geöffnet, blockiert der Browser JavaScript-Module, und wenn Sie ein PDF auswählen, passiert nichts. Stellen Sie den Ordner stattdessen über HTTP bereit:

powershell -ExecutionPolicy Bypass -File serve.ps1

Öffnen Sie dann http://localhost:8080/.

PDF zu CSV

Erkannte textbasierte PDF-Tabellen als Zeilen für eine Tabellenkalkulation.

Sprache: Deutsch
Quellcode ansehen
Ihre Dokumente werden in Ihrem Browser verarbeitet. Kein Upload zur Verarbeitung.

Das PDF, das Sie wählen, wird auf diesem Gerät im Arbeitsspeicher geöffnet und gelesen, von Code, der von dieser Adresse kommt, und die CSV wird auf demselben Weg geschrieben. Nichts hier kann etwas hochladen, und am anderen Ende dieser Seite steht kein Server, der es annehmen könnte. Was in den Tabellen steht, eine Kontonummer, ein Saldo, eine Liste von Zahlungsempfängern, die Preise eines Kunden, bleibt im Tab.

Live-Prüfung: wird geprüft…

Offline: wird geprüft…

Sie müssen uns nicht glauben. Öffnen Sie die DevTools, sehen Sie im Tab „Netzwerk“ zu und wandeln Sie ein PDF um. Keine einzige Anfrage trägt eine Seite, eine Zeile, eine Zahl oder einen Dateinamen. Oder trennen Sie die Internetverbindung und wandeln Sie es trotzdem um.

1 Ein PDF auswählen

2 Prüfen, was es gelesen hat

Ein PDF sieht aus, als enthielte es Tabellen, und tut es nicht: Es enthält Text, der an Positionen auf einer Seite gesetzt ist, und die Spalten sind Papierstreifen, die niemand gedruckt hat. Jede Tabelle unten wurde also erschlossen und nicht gelesen. Wo eine von ihnen einen laufenden Saldo führt, ist die Zeile über den Tabellen das Werkzeug, das seine Arbeit prüft: Welche Saldovergleiche stimmen überein, und welche Zeilen konnten nicht geprüft werden? Übereinstimmende Salden prüfen Nettoänderungen; Fehler können sich gegenseitig aufheben.

3 Die CSV mitnehmen

Als Markdown ansehen

So verwandeln Sie die Tabellen in einem PDF in eine CSV

  1. Wählen Sie das PDF aus. Eines nach dem anderen. Der Browser liest es direkt von Ihrer Festplatte, und zwar jede Seite davon, bevor irgendetwas entschieden wird, denn ob ein Dokument 1.240,00 oder 1,240.00 schreibt und in welcher Reihenfolge seine Daten stehen, sind Tatsachen über das Dokument und nicht über eine einzelne Seite.
  2. Sehen Sie sich die Tabellen an, die es gefunden hat.Prüfen Sie jede erkannte Tabelle mit Spalten und wiedergewonnenen Überschriften. Fortsetzungen über Seiten können verbunden und umbrochene Zellen in ihre Zeilen gefaltet werden. Vor dem CSV-Speichern mit dem Original auf fehlende Tabellen, zusammengelegte Zeilen und Layoutfehler prüfen.
  3. Nehmen Sie eine, oder nehmen Sie alle. Gibt es mehr als eine Tabelle, wählt das Feld über ihnen, welche in die CSV kommt: alle nacheinander oder nur die, wegen der Sie gekommen sind. Führt eine Tabelle einen laufenden Saldo, zeigt die Zeile über den Tabellen übereinstimmende Vergleiche und nicht geprüfte Zeilen. Daten mit Jahr kommen als YYYY-MM-DD heraus und Beträge als schlichte Zahlen mit Vorzeichen; ein Datum ohne Jahr bleibt genau so, wie es gedruckt war, denn das Jahr, zu dem es gehört, wäre geraten.
  4. Nehmen Sie die CSV mit. Sie wird nach RFC 4180 geschrieben, mit korrekten Anführungszeichen und CRLF-Zeilenenden, als UTF-8 mit Byte-Order-Mark, damit Excel sie mit unversehrten Währungszeichen öffnet, statt Buchstaben daraus zu machen. Stehen alle Tabellen in einer Datei, behält jede ihre eigene Überschriftenzeile, und zwischen ihnen steht eine Leerzeile. Um sie zu erzeugen, wurde nichts hochgeladen.

Die ausführliche Fassung

Ist es sicher, einen Kontoauszug hochzuladen? Ein Kontoauszug enthält jeden Empfänger, jeden Betrag und Ihren Saldo. Was ein Konverter erhält, wie sorgfältige Dienste damit umgehen und wie Sie einen unnötigen Upload erkennen.

Fragen

Wie findet es Tabellen, wenn im PDF gar keine Tabelle steckt?

Daran, wo der Text sitzt. Eine Seite wird zuerst überall dort geteilt, wo eine Spalte Kleingedrucktes neben dem eigentlichen Inhalt läuft; von einer Spalte der Tabelle unterscheidet sie sich dadurch, dass die Zellen der Tabelle exakt eine Grundlinie teilen und das Kleingedruckte nur zufällig daneben sitzt. Dann wird jeder Teil von oben nach unten durchlaufen und an Überschriften und Lücken in Blöcke geschnitten, und die Spalten jedes Blocks sind die Stellen, an denen mehrere Zeilen sich einig sind, dass dort eine Zelle beginnt oder endet. Blöcke mit denselben Spalten werden wieder zu einer Tabelle zusammengefügt. Es gibt keine Vorlage je Bank oder Formular, und darum auch kein Layout, das ihm nie beigebracht wurde.

Funktioniert es nur bei Kontoauszügen?

Nein. Es begann als Umwandler für Kontoauszüge und wurde so umgebaut, dass es jede Tabelle in einem Dokument findet, denn der erste echte Auszug, der hindurchging, hatte zwei Buchungen und fünf andere Tabellen, und ein Werkzeug, das nur die Buchungen wollte, fand gar nichts. Rechnungen, Preislisten, Fahrpläne, Ergebnisse und Berichte sind auf dieselbe Weise Tabellen. Was ein Kontoauszug hinzufügt, ist ein laufender Saldo, und wo einer da ist, vergleicht das Werkzeug die Nettoänderungen zwischen lesbaren Salden.

Was passiert mit einem Buchungstext, der zu lang für seine Spalte ist?

Er wird in seine Zeile zurückgefaltet, und genau daran scheitert die meiste PDF-zu-CSV-Ausgabe. Eine Zeile mit einer einzigen Zelle voller Wörter, dicht an einer Tabellenzeile gesetzt, ist die Fortsetzung der Zelle dieser Tabellenzeile; sie wird in die Zeile darunter statt in die darüber gefaltet, wenn sie näher an jener sitzt, denn so wird eine lange Beschriftung über ihrem Wert gedruckt. Eine Zeile mit mehr als einer Zelle oder mit einer Zahl darin ist eine eigene Zeile.

Was sagt mir die Prüfung des laufenden Saldos?

Das Werkzeug vergleicht die Summe der Beträge zwischen zwei lesbaren Salden mit deren Differenz und zeigt, wie viele Vergleiche übereinstimmen. Mit derselben Rechnung erkennt es mögliche Saldo- und Betragsspalten, ohne ihre Überschriften zu lesen. Die Seite nennt nicht geprüfte Zeilen: Beträge vor dem ersten oder nach dem letzten Saldo sowie Abschnitte mit fehlenden oder unlesbaren Beträgen. Eine unbenutzte Soll- oder Habenzelle zählt als null, ein unlesbarer Wert nicht. Übereinstimmende Salden können Fehler, die sich aufheben, nicht ausschließen und bestätigen weder Beschreibungen noch Daten. Prüfen Sie die CSV anhand der PDF, bevor Sie sich darauf verlassen.

Meine Daten sind falsch herausgekommen. 03/04 ist der vierte März, nicht der dritte April.

Ändern Sie das Feld über den Tabellen, und alles wird sofort neu gemacht. Ein numerisches Datum ist wirklich mehrdeutig, und das Werkzeug entscheidet es aus dem Dokument und nicht aus Ihrem Standort: Hat irgendein Datum irgendwo darin einen Tag über dem Zwölften, entscheidet diese eine Zeile die Reihenfolge für alle, und die Seite sagt das. Fällt jedes Datum auf den Zwölften oder davor, steht nichts in der Datei, was sie auseinanderhalten könnte, also sagt sie das und nimmt den Tag zuerst, bis Sie es anders sagen. Ein Datum, das ohne Jahr gedruckt ist, wie Kreditkartenabrechnungen es tun, bleibt genau so, wie es geschrieben war.

Funktioniert es bei einem gescannten PDF?

Nein, und es sagt das, statt Ihnen eine leere Datei zu geben. Ein Scan ist ein Foto: Die Zeilen sind Pixel, und es gibt keinen Text, der sich ausrichten ließe. Die Seite zeigt Ihnen dann, was Sie stattdessen tun können, und bei einem Kontoauszug ist der erste Vorschlag der, den die meisten übersehen: Fast jede Online-Bank gibt Ihnen denselben Auszug direkt als CSV, OFX oder QIF, und das braucht keine Umwandlung und ist genauer, als jedes Lesen aus einem Bild sein könnte.

Kann es ein passwortgeschütztes PDF öffnen?

Nein, und das ist Absicht. Banken sperren viele Auszüge, meist mit einem Geburtsdatum oder den letzten Ziffern einer Kontonummer. Diesen Schutz zu entfernen ist eine andere Aufgabe, als eine Tabelle zu lesen, also weigert sich dieses Werkzeug und zeigt Ihnen die Wege, es zu tun, ohne dass die Datei Ihr Gerät verlässt. Der beste davon ist der PDF-Entsperrer auf dieser Seite: Er entfernt das Passwort in Ihrem eigenen Browser und ändert nichts auf den Seiten, der Text kommt hier also genau dort an, wo er gedruckt war. Das Dokument aus Chrome oder Edge zurück in ein PDF zu drucken oder es auf einem Mac aus der Vorschau zu exportieren funktioniert ebenfalls. Benutzen Sie keine andere Website, die anbietet, es zu entsperren; das wäre der Upload genau des Dokuments, das diese Seite vom Internet fernhalten soll.

Wird mein PDF irgendwohin hochgeladen?

Nein. Die Datei wird von Ihrem eigenen Browser auf Ihrer eigenen Hardware gelesen, und die CSV wird dort geschrieben. Eine Serverseite hat dieses Werkzeug nicht, und in der Content-Security-Policy der Seite steht jede Adresse, die sie kontaktieren darf; keine davon gehört uns. Der einfachste Beweis ist, die Internetverbindung zu trennen und trotzdem ein PDF umzuwandeln.

Warum steht am Anfang der CSV ein seltsames Zeichen?

Das ist eine Byte-Order-Mark, und sie steht dort mit Absicht. Excel unter Windows liest eine CSV ohne sie mit der alten Codepage des Systems, eine Tabelle in Pfund oder Euro kommt also mit einem Buchstaben anstelle des Währungszeichens an. Die Marke sagt ihm, dass die Datei UTF-8 ist. Jeder Leser, der zählt, überspringt sie stillschweigend; ein Parser, der streng genug ist, sie zu zeigen, gibt eine erste Spaltenüberschrift mit einem unsichtbaren Zeichen davor zurück, und das ist der Preis dieses Tauschs.

Gibt es eine Größengrenze, und kostet es etwas?

Eine Grenze ist im Werkzeug nicht festgeschrieben. Die Grenze ist Ihr eigenes Gerät: Das Dokument liegt im Arbeitsspeicher, während es gelesen wird, und das schafft ein Laptop bei mehreren hundert Seiten ohne Klagen. Es ist kostenlos, und es gibt kein Konto, keine Anmeldung und keine Testphase. Bezahlt wird die Seite über Werbung, und den Anzeigen wird nichts über Ihre Dokumente übergeben.

Funktioniert es offline?

Ja. Laden Sie die Seite einmal, trennen Sie dann die Internetverbindung, und sie arbeitet weiter. Das ist zugleich der einfachste Beweis dafür, dass nichts hochgeladen wird: Ein Werkzeug, das Ihr Dokument zum Umwandeln wegschickt, bliebe in dem Moment stehen, in dem Sie die Verbindung trennen.