Text aus PDF zerlegen
Hallo zusammen
von unserem Auftraggeber bekommen wir ein teilausgefülltes PDF die wir ausdrucken und dann bei Kunden erweitern/ausfüllen. Ich möchte nun die Daten vorab in Ninox haben dazu kopiere ich den Text der PDF in ein Rich-Text Feld.
Dort will ich nun über einen Button die Werte auslesen und dementsprechend mein Formular, das sie gleichen Felder hat wie die PDF, mit den Werten von dem PDF ausfüllen.
Wie kann ich den String in dem Rich-Text Feld nun so Zerlegen dass ich die Infos einlesen kann.
Vor allem an den Stellen wo die Länge unklar ist wie bei Gemeinde: xxxxxxx und Ansprechperson: xxxxxxx. Hier müsste ich ja z.B.: für den Gemeindenamen den Text zwischen Gemeinde: und Ansprechperson: auslesen
für die Ansprechperson müsste ich den Text zwischen Ansprechperson: und Zeilenumbruch auslesen
Für die Stellen mit [X] en habe ich schon die Lösung gefunden:
if contains(Text, "Eintritt ins Haus: [X] UG [ ] EG [ ] Waschk [ ] Garage [ ] Schrank") then
alert("JA UG");
'Eintritt ins Haus' := 1
else
if contains(Text, "Eintritt ins Haus: [ ] UG [X] EG [ ] Waschk [ ] Garage [ ] Schrank") then
alert("JA EG");
'Eintritt ins Haus' := 2
else
if contains(Text, "Eintritt ins Haus: [ ] UG [ ] EG [X] Waschk [ ] Garage [ ] Schrank") then
alert("JA WaschK");
'Eintritt ins Haus' := 3
else
if contains(Text, "Eintritt ins Haus: [ ] UG [ ] EG [ ] Waschk [X] Garage [ ] Schrank") then
alert("JA Garage");
'Eintritt ins Haus' := 4
else
if contains(Text, "Eintritt ins Haus: [ ] UG [ ] EG [ ] Waschk [ ] Garage [X] Schrank") then
alert("JA Schrank");
'Eintritt ins Haus' := 5
else
alert("nichts angekreuzt");
'Eintritt ins Haus' := null
end
end
end
end
end
schon mal Danke für Ideen
Gruß
Andreas
3 Antworten
-
Sieht das PDF immer gleich aus? Es gibt auch die Möglichkeit via API das PDF an eine Texterkennung (OCR) zu schicken. Du bekommst dann als Antwort ein JSON zurück, welches Du dann automatisch "aufdröseln" und in die entsprechenden Datenfelder in der Ninox verteilen kannst. Das ist vielleicht am Anfang etwas aufwändiger, aber nachher ziehst Du das PDF einfach in ein Bildfeld und der Rest läuft automatisch...
Ansonsten schau dir mal Reguläre Ausdrücke (RegEx) an. Da gibt es auch hier im Forum einiges zu lesen. Interessante Funktionen dabei sind: extractx() und replacex()...
Für obiges Beispiel würde ich via RegEx nach dem String "Gemeinde: " - also mit Doppelpunkt und Leerzeichen suchen sowie nach dem String "Ansprechperson:" - und alles dazwischen ist das, was Du haben möchtest.
Sagen wir Du hast ein Textfeld "Gemeinde" und dein Rich-Textfeld mit dem kopierten Text. Dann kannst Du via Script (Button) mit
Gemeinde := extractx(text(RICHTEXTFELD), "(Gemeinde:\s*)(.*)( Ansprechpartner)","$2")
alles herauslesen, was zwischen "Gemeinde: " und " Ansprechpartner" steht. Du arbeitest hierbei mit Gruppen. Die erste Gruppe ist "Gemeinde: ", die zweite Gruppe alles dazwischen (.*) und die dritte Gruppe ist " Ansprechpartner".... mit $2 holst Du dir die zweite Gruppe in dein Textfeld...
-
Schau mal auf regex101.com. Da hast Du eine Sandbox für regex-Befehle und findest auch eine Referenz für die Operatoren. Da findestDu dann auch \n für Neue Zeile oder \r für Enter (Carriage Return) usw.
Dort kannst Du auch deinen Text reinkopieren und rumprobieren. Ninox unterstützt soweit ich weiß sowieso kein multiline - daher gelten Treffer immer nur für eine Zeile.
Also im Fall Anschluss-ID einfach nach der Gruppe "Anschluss-ID: " suchen und in einer weiteren Gruppe alles Folgende (.*)
("." meint hierbei ein einzelnes Zeichen (Buchstabe, Zahl, Satzzeichen - was auch immer) und "*" steht für "Kein oder mehrere" von - in dem Fall von ".")
Wie gesagt - regex101.com
Content aside
- vor 2 JahrenZuletzt aktiv
- 3Antworten
- 130Ansichten
-
2
Folge bereits