Textinhalte extrahieren und entsprechende Zuordnung finden
Hallo,
ich habe vor, aus einem PDF den Text zu kopieren und diesen entsprechend aufzubereiten. Hier sollten die Daten extrahiert werden. Einige Elemente konnte ich schon extrahieren. Bei anderen komme ich nicht weiter, da diese meisten abhängig davon sind, ob die Daten im kopierten Text vorhanden sind.
So in dieser Art sieht der kopierte Text aus. Ich habe die Elemente, die Variabel sind in {} geschweifter Klammer dargestellt. Das Problem bei dieser Geschichte ist, das hier keine Struktur vorhanden ist.
Fall {Nummer} Kundendienst-Auftrag
{Vorgang}, {NAME KUNDE}, {Kesselnummer}
{FIRMA GmbH}
{ANSCHRIFT AG}
{EMAIL FIRMA}
{NAME KUNDE} Hersteller-
Prochnow HTS
Anschrift
Mobilltelefon
Baujahr
/Kessel-Nr. IBN-Datum
Lagersystem Heizkreisregler
Steuerung Softwarestand Pufferspeicher
Endkunde
Kommission
Kesseltyp
Auftraggeber
Tel.Nr. Konto
Installateur/HB:
eMail Konto
Anschrift
Tel.Nr. Kontakt
Mobilltelefon
eMail Kontakt
{Nummer Endkunde}
{NAME KUNDE}
{Nummer Heizungbauer}
{NAME Heizungsbauer}
Gebietsbetreuer
Auftragsart {Auftragsart} Kessel-Nr. {Kesselnummer}
{gew. Termin}
{Kesseltyp}
gew. Termin
{Auftraggeber}
an
{Kesselnummer}
{Anschrift Heizungsbauer}
{Telefon Heizungsbauer}
{mobil Heizungsbauer}
{MAIL Heizungsbauer}
{ANSCHRIFT Endkunde}
{Telefon Endkunde}
{Mobil Endkunde}
{Gebietsvertretung}
{2. Zeile Kesseltyp}
voraussichtlich benötigtes Material
{voraussichtlich benötigtes Material}
{Baujahr}
{1. Zeile Kesseltyp}
{Datum und Name Sachbearbeiter}>>> To Do Kundendienst {Kundendienst Auftrag anlegen}
{externe Bemerkung}
externe Bemerkung:
interne Bemerkung:
{interne Bemerkung}
Ende
Beim Anfang hat das mal so weit mal mit diesem Code funktioniert.
let myT1 := 'Text 2';
let myA := extractx(text(myT1), "(Fall*)(.*)()", "$0");
let myA1 := extractx(text(myT1), "(" + myA + "*)(.*)()", "$2");
myA
Fall {Nummer} Kundendienst-Auftrag
Jetzt möchte ich mit dem code extractx(text(myT1), "(XXXX)(.*)(XXXX)", "$0"); erreichen, dass ein Element gefunden wird, welches eventuell vorhanden und das zwischen XXXX und XXXX steht.
XXXX sind Felder, die schon etwas gefunden haben. Ich habe das grundlegende Problem, dass ich den Code nicht zusammen bringe, um beispielsweise die XXXX durch die Variablen ersetzte.
Vielleicht bin ich mit meinem Codeversuch auf dem Holzweg, aber vielleicht kann mir auch jemand auf die Sprünge helfen. Ich habe mir in der Vergangenheit immer wieder an den Kopf klatschen müssen, nachdem Hilfe gegeben wurde, da manches einfach zu kompliziert gedacht wird.
Mit bestem Dank
3 Antworten
-
Hi Alexander. Sind die geschweiften Klammern nur zur Kennzeichnung hier, oder stehen sie auch im Text? Brauchst Du alles, was in geschweiften Klammern steht? Was ist mit dieser Passage?
an {Kesselnummer} {Anschrift Heizungsbauer} {Telefon Heizungsbauer} {mobil Heizungsbauer} {MAIL Heizungsbauer} {ANSCHRIFT Endkunde} {Telefon Endkunde} {Mobil Endkunde} {Gebietsvertretung} {2. Zeile Kesseltyp} voraussichtlich benötigtes Material
Alles einzeln, oder im Block?
-
Ohne etwas Schreibarbeit sehe ich hier keine Möglichkeit. Dies lohnt sich m.E. nur, wenn Du öfter dieses Script benötigst und keine andere Importmöglichkeit findest. In dem Array müssen alle bezeichnenden Texte stehen (das ist die Schreibarbeit), dann ist das Resultat ein Ergebnisarray ausschliesslich mit den Werten, die auch vorhanden sind, die leeren Werte sind gelöscht. Schau mal, ob es Dich weiter bringt. TEXTFELD ist der Bezeichner für das Feld, in dem der Text steht. Mirko
let ary := ["Fall", "Kundendienst-Auftrag", "Hersteller- Prochnow HTS", "Anschrift", "Mobilltelefon", "Baujahr" usw.]; let result := TEXTFELD; for i in range(0, length(ary)) do let d := replacex(result, "\s*" + item(ary, i) + "\s*", "#"); result := d end; splitx(result, "#")[!= ""]
Content aside
- vor 5 MonatenZuletzt aktiv
- 3Antworten
- 38Ansichten
-
2
Folge bereits