ubuntuusers.de

Daten aus PDF in Tabelle extrahieren

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

UlfZibis

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3162

Wohnort: Köln

Hallo,

ich habe hier eine PDF mit Adressdaten, die Spaltenweise angeordnet sind, siehe Bild. Wie man den Metadaten entnehmen kann, wurde sie ursprünglich sogar mit LibreOffice Calc erstellt.

Ich kann die Daten zeilenweise mit pdftotext -raw entnehmen, doch dann fehlen mir die Spaltenzuordnungen. Wenn ich pdftotext -fixed 20 verwende, bekomme ich immerhin folgendes:

   Pos.
     Vorname
        Nachname
            Straße Ort  Land
    1 Petraa
        Halmann
            Im Grass 7
                   Aach Germany
    2 Peter
        Krame
            Münsterplatz 27
                   Aachen
                        Germany
    3 Werner
        MayeStrandbuchen 4
                   Aachen
                        Germany

Wie man sieht, wird die letzte Spalte "Land" nicht immer richtig getrennt ausgegeben. Noch chaotischer wird es bei Doppelnamen, oder wenn längere Adressen, wie z.B. französische vorkommen:

    22 Katharine
        Heinels
            Im Waldbuchhaine 17 G Aachen
                        Germany
    23 Manuela
        HeinAlbert-Einstein-Straße 15A Aachen
                        Germany
   149 Karl
        Von Schliengens Geschw.-Scholl-Weg 13
                  Tremsdorf
                        Germany
   196 Kurt
        Annie-Christine 8 Avenue Du Petit Port
                  Aix Les Bains
                        France
   496 Fábio
        Pero
            Rua Do Pombal Nº39 S.MateuAngra Do Heroísmo
                        Portugal

Das Problem ist ja, dass die Spalten nicht alle gleich breit sind. Ein Versuch per Cropping jede Spalte einzeln auszulesen mit z.B. pdftotext -W 1000 erzeugt eine Datei, wo nur FormFeed-Zeichen drin sind, genauso viele, wie die PDF Seiten hat. Möglicherweise verstehe ich da nicht die richtige Syntax.

Hat jemand da noch eine alternative Idee, wie ich die Daten Spaltenweise auslesen kann?

Bearbeitet von Thomas_Do:

Daten anonymisiert und dafür auch das Bild der Adressliste gelöscht.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2176

Wohnort: dahoam

Ich hoffe mal, Du veröffentlichst hier nur anonymisierte oder Fake-Adressdaten.

LibreOffice Draw hat doch einen PDF-Importer, vllt. kann man die Datei auch hier mal importieren und die Tabellen von dort in eine Calc-Datei pasten?

$0.02

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3162

Wohnort: Köln

Mit pdftotext -layout bekomme ich immerhin folgendes:

Pos.      Vorname        Nachname      Straße                      Ort                 Land
        4 Michael        Riebenseele   Poststraße 348              Aachen              Germany
[.....]
       22 Katharine      Heinels       Im Waldbuchhaine 17 G       Aachen              Germany
       23 Manuela        Hein          Albert-Einstein-Straße 15A Aachen               Germany
       24 Armin          Möhrs         Meyers Str. 111             Aachen              Germany
       25 Piet-Joachim   Möhrs         Meyers Str. 111             Aachen              Germany
[.....]
       54 Sabine         Petas         Schwarzwaldstrasse 10       Aalen               Germany
<FF> 55 Conny         Peters         Großstraße 5               Aalen                Germany
 64 Carl          Westernaue     Vorderer Waldanweg 7       Abensburg            Germany
 65 Garmut        Penny          Thomas-Himmelmann Str 31 Abensburg              Germany
 66 Michie        Krass          Taubenstrasse 10           Abensburg            Germany
[.....]
 83 Sebastian     Baumherz       Am Pichberg 1C             Achims               Germany
 84 Mick          Ausland/ 372104Packstation 117            Achims               Germany
 85 Pit           Leber          Carl-Herme-Straße 3        Achims               Germany
[.....]
117 Thomas      Hauber          Hammering/17               Aerzen           Germany
118 Thobias     Pimanns Bei IsaBuchenweg 9                 Aerzen           Germany
119 Lennie      Fiesenmayer Grafenauestr. 11               Affalterbach     Germany
121 Patrick     Haier           Graßnitz 302               Aflenz Land      Austria

Wie man sieht, ist aber auch das nicht immer ideal. Wenn der Spaltenabstand nur 1 Leerzeichen breit ist, kann ich das mittels Regex nicht von einem normalen Leerzeichen unterscheiden. Für jede Seite kommt ein <FF>, was man aber einfach rausfiltern könnte.

Bearbeitet von Thomas_Do:

Daten anonymisiert.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3162

Wohnort: Köln

dirkolus schrieb:

Ich hoffe mal, Du veröffentlichst hier nur anonymisierte oder Fake-Adressdaten.

Keine Sorge, hab' ich beachtet.

LibreOffice Draw hat doch einen PDF-Importer, vllt. kann man die Datei auch hier mal importieren und die Tabellen von dort in eine Calc-Datei pasten?

Das hoffte ich auch. Leider hängt LibreOffice sich dabei auf. Liegt wohl daran, dass es insgesamt fast 1000 Seiten sind.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1158

ungetestet

Schau dir mal bitte tabula an.

Ich hoffe es hilft dir weiter.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3162

Wohnort: Köln

sh4711 schrieb:

ungetestet

Schau dir mal bitte tabula an.

Ich hoffe es hilft dir weiter.

Das scheint ein cooles Tool zu sein. Danke für den Tipp. Bin gespannt, ob ich es damit hinkriege.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3162

Wohnort: Köln

sh4711 schrieb:

Schau dir mal bitte tabula an.

Ich hoffe es hilft dir weiter.

Ja ist auch ein bisschen Gefummel, aber ich konnte meine Aufgabe damit lösen.

Echt genial das Tool, und unglaublich, welchen professionellen Aufwand die da in den Bedienkomfort gesteckt haben.

Antworten |