Bestimmte Zeichen finden, aber wie?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
maow
User
Beiträge: 29
Registriert: Mittwoch 24. Februar 2016, 16:30

Hallo ich bin Anfänger und habe ein kleines Problem.

Ich möchte aus einer bestehenden pdf Text extrahieren und damit arbeiten. Ich nutze hierzu PyPDF2. Unglücklicherweise ist der Text recht diffus, aber für mich sicher ein guter Anreiz etwas neues zu lernen, was ich sicher jetzt öfter brauchen werde.

Ich möchte in dem Text bestimmte dinge suchen und dann das Ergebnis schreiben lassen.

Hier mal ein Beispielstring:

"6apfel99876"

Jetzt möchte ich gerne mehrere Sachen dazu machen:

a) ich suche eine Zahl mit maximal 2 Stellen, welche nach 2 Zeichen/Ziffern nach dem Wort apfel beginnt (gesucht ist die 87)
b) ich suche eine Zahlen/Zeichenfolge, welche nach dem wort apfel kommt, aber vor der Zahl 6 endet (gesucht ist die 9987)

Wie löse ich das ? Hat da jemand n Rat für nen Noob wie mich ?
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Klingt wie gemacht für regen / Reguläre Ausdrücke.
Das ist ein mächtiges aber auch komplexes Werkzeug.
maow
User
Beiträge: 29
Registriert: Mittwoch 24. Februar 2016, 16:30

Hey also die Sache ist die.. die eigentliche .pdf ist eben so gestaltet, dass Seite 1 immer allgemeine Daten enthält, z.B. Auftraggeber und der Beauftragte.
Auf Seite 2 kommt dann die erste Substanz, welche ich dann analysieren lies. Offensichtlich packt man da eine Tabelle rein. Es ist jedoch weiterhin eine pdf-Datei. Ich lasse diese also auslesen und erhalte eine Aneinanderreihung von Text, mal von links, mal von rechts eingelesen, eher diffus, etwas chaotisch. Glücklichweise sind aber immer vor den wichtigen Parametern, nehmen wir mal Uran, bestimmte Merkmale vorhanden, entweder die Bestimmungsgrenze des vorherigen Elementes, oder aber die Einheit. Dazwischen liegt der Wert der mich interessiert.

Aktuell habe ich wie gesagt nur den eher rohen Datenschnipsel, der jetzt verarbeitet werden muss. Leider bin ich wie gesagt Anfänger, daher is das ziemlich tpftelig, bin aber guter Dinge, dass man das auflösen kann.

Gibt es eine Möglichkeit diese pdf-Seite Zeile für Zeile auszulesen und ausgeben zu lassen ? Das wäre denke ich bereits eine große Hilfe :) Danke !
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@maow: PDF kennt halt keine Zeilen. Das ist ein Seitenbeschreibungsformat wo zum Beispiel Texte an absolute Positionen auf der Seite gesetzt werden. In welcher Reihenfolge die Texte oder gar einzelne Buchstaben auf die Seite gesetzt werden ist nicht festgelegt. Das bestimmt das Programm, welches die PDF-Datei erstellt.

Einfache Textextraktion geht die PDF-”Befehle” nach „Setze folgenden Text an Position x,y“ durch, und hängt den Text einfach in der Reihenfolge in der das im Dokument steht, einfach aneinander.

Wenn man so etwas wie Zeilen, oder in Spalten gesetzten Text, oder Tabellen erkennen will, braucht man Heuristiken und muss halt auch die Positionen der Texte berücksichtigen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Wenn es darum geht Tabellenwerte aus PDF zu extrahieren, habe ich gute Erfahrungen mit tabula gemacht. Dafür gibt es einen Python-Wrapper: https://pypi.org/project/tabula-py/. Vielleicht ist das schon ausreichend, um an deine Werte zu kommen. Die Nicht-Tabellen-Seiten kannst du dann ja weiterhin über den Text filtern (bspw. das was nach "Auftraggeber: " entspricht dem Auftraggeber).
Antworten