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: 26
Registriert: Mittwoch 24. Februar 2016, 16:30

Dienstag 27. April 2021, 21:46

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: 2745
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 28. April 2021, 05:05

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

Mittwoch 28. April 2021, 05:47

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: 8881
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mittwoch 28. April 2021, 13:35

@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.
Q: What is the volume of a pizza of radius z and thickness a?
A: pi·z·z·a
einfachTobi
User
Beiträge: 334
Registriert: Mittwoch 13. November 2019, 08:38

Mittwoch 28. April 2021, 16:17

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