0

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

null
    • mirko3
    • vor 5 Monaten
    • Gemeldet - anzeigen

    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?

      • Firmeninhaber eines Dienstleistungsunternehmens (SHK)
      • Alexander_Prochnow
      • vor 5 Monaten
      • Gemeldet - anzeigen

      alles was in den Klammern steht, sind Daten. Ich habe diese hier mal so versucht kenntlich zu machen (das kommt so nicht mit). Alles ohne Klammern sind die Formularfelder aus dem PDF (Text herauskopiert). Ich habe dieses schon mal mit einer OCR Geschichte versucht, aber das hat gar nichts gebracht.

      Diese Passage sind eigentlich die gelieferten Daten. Jetzt ist es natürlich abhängig davon, ob beispielsweise im Abschnitt von {Kesselnummer}, die immer vorhanden ist, bis {Anschrift Endkunde} auch immer vorhanden, etwas vorhanden ist. Hier hätte ich gerne eine Extraktion.

      Den entsprechenden Code bekomme ich einfach nicht hin. Also extrahiere von Kesselnummer( dieses Berechnung habe ich hinbekommen) bis Anschrift Endkunde (diese Berechnung habe ich auch hinbekommen). Wenn nichts drin dann ist auch gut, wenn Inhalt dann habe ich vor, dieses weiterhin zu extrahieren oder zu splitten. Das muss ich mir noch überlegen. 

    • mirko3
    • vor 5 Monaten
    • Gemeldet - anzeigen

    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