XML-Pipeline
Einleitung
XML-Dateien in SQUEEZE mit einer anderen techischen Pipeline verarbeitet als PDFs oder einzelne Bilder. Das liegt daran, dass nicht alle Schritte der Standard-Pipeline wie z. B. Texterkennung sinnvoll anwendbar sind.
Stattdessen werden XML-Dateien in den hier erklärten Schritten verarbeitet.
XML-Pipeline
Importierte bzw. hochgeladene Dokumente durchlaufen diese Schritte:
- Im ersten Schritt, dem InitStep
- werden hochgeladene XML-Dateien, die einem unterstütztem XML-Schema entsprechen, in ein internes Standard-XML-Format überführt. Die entstandene Datei ist die intermediate.xml
- für die intermediate.xml wird eine PDF erzeugt.
- werden hochgeladene XML-Dateien, die einem unterstütztem XML-Schema entsprechen, in ein internes Standard-XML-Format überführt. Die entstandene Datei ist die intermediate.xml
- Im Schritt BarcodeExtraction
- werden für PDF-Dateien mit einer eingebetteten XML weiterhin Viewer-Bilder auf Basis der PDF erstellt.
- Davon abgesehen, wird dieser Schritt übersprungen.
- Im Schritt Ocr
- werden PDF-Dateien mit einer eingebetteten XML normal verarbeitet, um ein OCR-Ergebnis zu erstellen.
- Davon abgesehen, wird dieser Schritt übersprungen.
- Im Schritt Classification
- TODO: Dokumentieren, dass das noch gar nicht geht
- Im Schritt Extraction
- werden übliche Extraktionsmechanismen weiterhin
ausgeführt.ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: SkipXmlExtraction. - wird nach dem Übernehmen von vordefinierten Feldwerten und vor dem Ausführen von Lokatoren die intermediate.xml genutzt um Kreditor und Mandant der XML zu ermitteln. Dieses Verhalten ist Invoice-Spezifisch.
- wird nach dem Ausführen von Lokatoren und vor dem Ausführen der Autovalidierung die eigentliche XML-Extraktion auf Basis der intermediate.xml durchgeführt.
- Hier werden Felder und Tabellen gemappt
- Und erneut die XML als PDF gerendert?!
- werden übliche Extraktionsmechanismen weiterhin
Extraktion von XMLs
> TODO
Rendering von XMLs
> TODO
TODO: Dokumentieren, wie die XML-Verarbeitung allgemein geschieht
TODO: Abgrenzung zu ZUGFeRD? Gibt da schon unterschiede im Core.
TODO: Wie spielt dieses Feature mit Mail-Importen zusammen? Was gibt es zu beachten?
TODO: Die Klassifizierung von XML ist aktuell nicht möglich. Da wird sogar eine Exception geworfen, falls der betroffene Code aufgerufen wird. Zum einen fraglich ob wir das mal verbessern, zum anderen sollte das vermutlich besser dokumentiert sein.
Testcases:
- XML ohne Dokumentenklasse hochladen
- ZUGFeRD ohne Dokumentenklasse hochladen
TODO: In der Extraktion werden mit executeXRechnungInvoiceSolution Invoice-Spezifische Dinge erledigt, Lieferant und Kreditor zu ermitteln.
Das ist keine saubere Trennung von Core und Solution.