Skip to main content

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:

  1. Im ersten Schritt, dem InitStep
      1. werden hochgeladene XML-Dateien, die einem unterstütztem XML-Schemaeiner entsprechen, in ein internes Standard-XML-Format überführt. Die entstandene Datei ist die intermediate.xml
      2. für die intermediate.xml wird eine PDF erzeugt.
  2. Im Schritt BarcodeExtraction
    1. werden für PDF-Dateien mit einer eingebetteten XML weiterhin Viewer-Bilder auf Basis der PDF erstellt.
    2. Davon abgesehen, wird dieser Schritt übersprungen.
  3. Im Schritt Ocr
    1. werden PDF-Dateien mit einer eingebetteten XML normal verarbeitet, um ein OCR-Ergebnis zu erstellen.
    2. Davon abgesehen, wird dieser Schritt übersprungen.
  4. Im Schritt Classification
    1. TODO: Dokumentieren, dass das noch gar nicht geht
  5. Im Schritt Extraction
    1. werden übliche Extraktionsmechanismen weiterhin ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: SkipXmlExtraction.
    2. 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.
    3. 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.
      1. Hier werden Felder und Tabellen gemappt
      2. Und erneut die XML als PDF gerendert?!
    4.  

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.