Seite 1 von 1

Bestimmte Zeichen finden, aber wie?

Verfasst: Dienstag 27. April 2021, 21:46
von maow
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 ?

Re: Bestimmte Zeichen finden, aber wie?

Verfasst: Mittwoch 28. April 2021, 05:05
von sparrow
Klingt wie gemacht für regen / Reguläre Ausdrücke.
Das ist ein mächtiges aber auch komplexes Werkzeug.

Re: Bestimmte Zeichen finden, aber wie?

Verfasst: Mittwoch 28. April 2021, 05:47
von maow
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 !

Re: Bestimmte Zeichen finden, aber wie?

Verfasst: Mittwoch 28. April 2021, 13:35
von __blackjack__
@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.

Re: Bestimmte Zeichen finden, aber wie?

Verfasst: Mittwoch 28. April 2021, 16:17
von einfachTobi
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).