joe2011
Goto Top

Eingangsordner verteilen - PDF dazu auslesen

Hallo zusammen,

ich habe leider nur rudimentäre Kenntnisse die Batch-Programmierung betreffend. Vielleicht hat jemand die Zeit und Möglichkeit mir zu helfen. Das Thema wurde schon des öfteren hier behandelt - aber irgendwie finde ich mich darin nicht wieder.

Ist-Zustand Zur Zeit:

Aus verschiedenen Multifunktionsgeräten werden die Lieferscheine in einem zentralen Ordner abgelegt. Die Art der Dateinamen variiert; ist jedoch immer mit Datum Uhrzeit oder laufender Nummer versehen. Es handelt immer um PDF´s, die ich noch automatisch in durchsuchbare PDF´s umwandeln kann.

Bisher verteile ich diese PDF´s dann händisch in Verzeichnisse für die einzelnen Lieferanten - das ist auf die Dauer doch sehr aufwändig

Meine Vorstellung:

Eine Datei aus e:\lieferscheine\ausgang in e:\lieferscheine\arbeit verschieben
Den Inhalt in eine Text-Datei mit PDFTOTEXT exportieren.
Nun die Text-Datei analysieren nach dem Motto:

wenn gefunden "Amazon" dann die PDF-Datei in den Ordner e:\lieferscheine\amazon verschieben
wenn gefunden "Telekom" dann die PDF-Datei in den Ordner e:\lieferscheine\Mobilfunk\ verschieben
.
.
.
wenn nichts gefunden dann die PDF in den Ordner e:\lieferscheine\nacharbeiten verschieben
die TXT-Datei löschen und dann die nächsten Datei verarbeiten.

Das wars.

Gruß

Joe

Content-ID: 589183

Url: https://administrator.de/contentid/589183

Ausgedruckt am: 24.11.2024 um 18:11 Uhr

144705
144705 20.07.2020 aktualisiert um 15:46:01 Uhr
Goto Top
Joe2011
Joe2011 20.07.2020 um 15:52:27 Uhr
Goto Top
Danke für den Hinweis.
Ich schaue es mir nochmal genauer an; hatte diese Artikel zwar gefunden - aber von Powershell habe ich noch weniger Ahnung als von dem bisschen Batch-Scripting. 😊
144705
144705 20.07.2020 aktualisiert um 16:32:27 Uhr
Goto Top
wenn gefunden "Amazon" dann die PDF-Datei in den Ordner e:\lieferscheine\amazon verschieben
wenn gefunden "Telekom" dann die PDF-Datei in den Ordner e:\lieferscheine\Mobilfunk\ verschieben
By the way ist das nicht zu Ende gedacht wenn man es nicht genauer mit Regex definiert ausliest.
Stell dir einfach mal vor das du bei Amazon einen Telekom Artikel kaufst, da kommen beide Strings vor face-wink. Ohne genauere Definition wo die Strings stehen dürfen also ein Himmelfahrtskommando.
Joe2011
Joe2011 21.07.2020 um 10:04:09 Uhr
Goto Top
Das ist mir schon klar - es sollte nur verdeutlichen, das der Suchbegriff nicht gleich der Ordner-Name ist. 😊
monstermania
monstermania 22.07.2020 um 10:18:27 Uhr
Goto Top
Zitat von @Joe2011:
Meine Vorstellung:

Eine Datei aus e:\lieferscheine\ausgang in e:\lieferscheine\arbeit verschieben
Den Inhalt in eine Text-Datei mit PDFTOTEXT exportieren.
Nun die Text-Datei analysieren nach dem Motto:

wenn gefunden "Amazon" dann die PDF-Datei in den Ordner e:\lieferscheine\amazon verschieben
wenn gefunden "Telekom" dann die PDF-Datei in den Ordner e:\lieferscheine\Mobilfunk\ verschieben
.
.
.
wenn nichts gefunden dann die PDF in den Ordner e:\lieferscheine\nacharbeiten verschieben
die TXT-Datei löschen und dann die nächsten Datei verarbeiten.

Das wars.
Ja wenn das so einfach wäre...
...dann würden entsprechende Lösungen am Markt nicht so dermaßen teuer sein! face-big-smile

Aber mal im Ernst. Prinzipiell gibt es 2 Lösungsansätze.
1. Formularbasierte Belegerkennung
Hierbei "lernt" man das jeweilige Belegformular des Lieferanten an (Erkennungszonen). Zusätzlich können dann bei Bedarf noch weitere Belegdaten ausgelesen werden (z.B. Belegnummer, Datum, usw.).
Wenn Du diesen Ansatz mal ausprobieren willst, kannst Du Dir z.B. mal die Testversion von ELO Office herunterladen. Dort ist mit dem ELO Connector eine formularbasierte Belegerkennung integriert.
PS: Mit etwas Scripting (vbs) kann man den ELO Connector (Formularerkennung) auch nutzen, ohne die komplette ELO Archivlösung nutzen zu müssen!
Nachteil der formularbasierten Belegerkennung ist klar. Ändert sich das Formular des Lieferanten, muss auch die Formularerkennung wieder angepasst werden. So etwas ist m.E. nur sinvoll nutzbar, wenn man nur wenige Lieferanten hat (aber hohes Belegaufkommen von diesen Lieferanten!).
Gescannte Belege sind bei so einer Lösung immer problematisch, da durch das Scannen die Postion der Inhalte auf dem Beleg um einige Millimeter abweichen können.
Ich habe mit dem ELO Connector schon eine Erkennung der Speditionsbestätigungen/Abliefernachweise gebaut.

2. Belegerkennung per Mustererkennung
Wenn es nur darum geht denn Lieferanten zu erkennen, bietet sich eine Ähnlichkeitsanalyse an. Hier wird insbesondere der Kopf- und Fußbereich eines Belegs auf Textähnlichkeit analysiert (Levenshtein-Distanz). Im Kopf- und Fußbereich stehen ja überwiegend statische Informationen (Kontonummer, Adresse, Telefonnummer usw.).
Vorteil dieser Lösung ist, dass man unabhängig vom Layout des Belegs bist. Es wird nur verglichen wie ähnlich sich die Textinhalte von Belegen sind.
Optimalerweise lässt sich so etwas dann noch per 'Eindeutigkeitssuche' ergänzen. So ist z.B. die EU Steuernummer absolut eindeutig. Findest Du also die EU Steuernummer Deines Lieferanten auf dem Beleg, ist es wohl 100%ig ein Beleg Deines Lieferanten.

Fazit:
Belegerkennung ist ein sehr komplexes Thema. Wirklich gute Lösungen kosten schnell mal einige Tausend Euro.
monstermania
monstermania 22.07.2020 um 10:32:18 Uhr
Goto Top
Zitat von @144705:
wenn gefunden "Amazon" dann die PDF-Datei in den Ordner e:\lieferscheine\amazon verschieben
wenn gefunden "Telekom" dann die PDF-Datei in den Ordner e:\lieferscheine\Mobilfunk\ verschieben
By the way ist das nicht zu Ende gedacht wenn man es nicht genauer mit Regex definiert ausliest.
Stell dir einfach mal vor das du bei Amazon einen Telekom Artikel kaufst, da kommen beide Strings vor face-wink. Ohne genauere Definition wo die Strings stehen dürfen also ein Himmelfahrtskommando.
Richtig!
Von daher immer auf eindeutige Informationen setzen. Die EU Steuernummer ist z.B. sehr gut geeignet, da eindeutig. Oder auch Konto- und Telefonnummern eignen sich gut um einen Beleg eindeutig einem Kunden/Lieferanten zuzuordnen!
Joe2011
Joe2011 24.07.2020 um 10:15:50 Uhr
Goto Top
Ich verstehe euch schon. Die Thematik begleitet mich in vielen anderen Dingen tagtäglich und kostet fast immer ab 10.000 aufwärts bei speziellen Anpassungen. Nun hatte ich gehofft, das diese einfache Fragestellung relativ einfach kostenlos (!) realisierbar ist. Für jemanden, der Powershell aus dem ff kennt ist es bestimmt auch einfach.
Fazit: ich werde nun wieder jemanden professionell mit einer Banalität beauftragen und dafür entsprechend löhnen.
monstermania
monstermania 24.07.2020 um 10:53:47 Uhr
Goto Top
Zitat von @Joe2011:
Ich verstehe euch schon. Die Thematik begleitet mich in vielen anderen Dingen tagtäglich und kostet fast immer ab 10.000 aufwärts bei speziellen Anpassungen. Nun hatte ich gehofft, das diese einfache Fragestellung relativ einfach kostenlos (!) realisierbar ist. Für jemanden, der Powershell aus dem ff kennt ist es bestimmt auch einfach.
Fazit: ich werde nun wieder jemanden professionell mit einer Banalität beauftragen und dafür entsprechend löhnen.
Nun ja, es steht Dir ja frei es z.B. mit der Testversion ELO Office/ELO Connector selbst mal zu probieren Deine Anforderung umzusetzen. Dann wirst Du schnell feststellen, dass eine solche Aufgabe Alles Andere als trivial oder banal ist.
https://elooffice.elo.com/blog/wp-content/uploads/2014/03/Connector-1.pd ...
Kostenlos ist schon mal gar nichts! Zeit kostet es immer. Entweder Deine eigene Zeit, der halt die Zeit eines Anderen.

Es gibt auch die Möglichkeit die Dokumentenerkennung in die Cloud auszulagern.
https://aws.amazon.com/de/textract/

Und Du bist nicht der Erste, der meint so etwas wäre 'einfach' umzusetzen:
https://www.java-forum.org/thema/ocr-rechnungserkennung-wie-geht-das-gen ...