EinfachMartin: Automatische Rechnungserkennung

Hallo,

gibt es eine fertige PHP Funktion oder eine Schnittstelle die eine Rechnung nach dem Upload erkennt und folgende Daten ausliest:

  • Betrag
  • Positionen
  • Lieferant (Absender)
  • Zahlungsziel
  • Bankdaten

Habt ihr so etwas schon einmal umgesetzt?

  1. eine Schnittstelle die eine Rechnung nach dem Upload erkennt

    Die heisst DatenerfasserIn.

    Rechnung nach dem Upload

    Das kann alles denkbar mögliche sein. Wenn Du keine[n] DatenerfasserIn beschäftigen willst, dann brauchst Du für Deine Zwecke künstliche Intelligenz (KI).

    Ich habe noch nicht gesehen, dass jemand "KI" mit PHP realisiert hat oder das in ernst zu nehmender Weise versucht.

    1. Hallo,

      Ich habe noch nicht gesehen, dass jemand "KI" mit PHP realisiert hat oder das in ernst zu nehmender Weise versucht.

      wie setzten dieses dann die ganzen online Rechnungstools wie

      https://www.fastbill.com, https://www.lexoffice.de/ oder https://sevdesk.de/ dieses um? Da kann ich eine Rechnung hochladen oder mit einer App abfotografieren und schon werden sämtliche Daten ausgelesen.

      1. wie setzten dieses dann die ganzen online Rechnungstools wie ... dieses um?

        Sicherlich nicht mit PHP. Vielleicht mit einem PHP-Mantel für die Webseite.

        Übrigens besagt die Werbung der Anbieter nichts darüber, wie viel "Handarbeit" nach dem OCR noch notwendig ist... Das kann sogar mehr Arbeit machen als die Erfassung per Hand.

        1. Hallo,

          mein Arbeitgeber macht so etwas - wir scannen die ganze Eingangspost und schicken sie den Sachbearbeitern auf den Bildschirm.

          In der ersten Phase (in den 90ern) wurde nur klassifiziert und danach an die Sachbearbeiter geroutet. Die Klassifikation erfolgte über eine eigene "Indizierer-Abteilung". Die saßen nur vor dem Bildschirm und schrieben Name und Vertragsnummer ab.

          Seitdem haben wir eine Serverfarm aufgebaut, die die gescannten Dokumente per OCR ausliest. Zusätzlich erkennen die Services dort, ob spezielle Formulartypen eingegangen sind, und lesen die entsprechenden Feldinhalte aus. Heißt dann eher ICR, nicht mehr OCR.

          Die entsprechende Software wurde NICHT von uns geschrieben und sie ist scheußlich teuer in Anschaffung und Betrieb. Nur die erkannten Feldinhalte verarbeiten wir noch mit eigener Software. Es gibt zwar ein paar letzte Mohikaner Indizierer, aber die bekommen nur noch die unsicheren Kandidaten und bearbeiten nach. Die Sachbearbeiter haben auch jederzeit die Möglichkeit, die automatisch erkannten Werte und Klassifikationen zu korrigieren.

          Aber das ist nicht das Ende: Die aktuelle Stufe ist ein automatisierter Rechnungstransfer vom Leistungserbringer zu uns, das machen wir mit einem externen Partner, der diese Dienstleistung als Clearingstelle für Leistungserbringer und Leistungsbezahler anbietet. Die Rechnung kommt nur noch als Fallback per Papier zu uns (oder gleich elektronisch); bis sie da ist, ist schon längst der Datensatz eingetroffen und - wenn möglich - verarbeitet und bezahlt worden, ohne dass ein Sachbearbeiter das je gesehen hat. OCR/ICR kann man sich dann sparen; dafür braucht man dann KI um potenziellen Leistungsbetrug zu erkennen.

          Das bringt unseren Kunden schneller ihr Geld, aber es spart natürlich auch eine Menge Sachbearbeitungs-Personal. Das macht Ärger mit dem Betriebsrat, und kostet viel Geld für Software und Dienstleister. Wir haben hier durchaus eine Menge schlauer Köpfe im Haus (z.B. mich 😂), aber dieses Leistungspaket selbst zu bauen wäre uns nicht möglich gewesen. Das ist alles Spezial-Knowhow, das müssen wir kaufen oder leasen.

          Rolf

          --
          sumpsi - posui - clusi
  2. Hello,

    gibt es eine fertige PHP Funktion oder eine Schnittstelle die eine Rechnung nach dem Upload erkennt und folgende Daten ausliest:

    • Betrag
    • Positionen
    • Lieferant (Absender)
    • Zahlungsziel
    • Bankdaten

    Das hängt vom Format der Rechnung ab.
    Soll sie formfrei als Textdatei geliefert werden? Dann würde ich eher schwarz sehen.

    Oder könnte sie in excellentem HTML5 geliefert werden? Dann hätte ich Hoffnung, dass man relativ leicht einen Parser dafür erstellen könnte.

    Oder kommen Banking-Formate in Frage? Dann sollte es erst recht gehen!

    Habt ihr so etwas schon einmal umgesetzt?

    Mit von mir vorgegebenen HTML-Formaten schon. Das funktioniert auch inzwischen prima, allerdings nicht für Rechnungen, sondern für Produktkatalog-Einträge. Die können dann direkt (*) von der erzeugten HTML-Seite (Extra-Net "öffentlich") wieder in die eigenen Kataloge nebst Datenbanken der angeschlossenen Händler übernommen werden.

    (*) da gibt es Toolboxen.

    Ich habe mich seinerzeit extra intensiv mit dem PHP-DOM-Parser auseinandergesetzt.

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.
    1. @@TS

      Oder könnte sie in excellentem HTML5 geliefert werden? Dann hätte ich Hoffnung, dass man relativ leicht einen Parser dafür erstellen könnte.

      Exzellent heißt: mit Schema.org per RDFa ins HTML eingebettet oder als JSON-LD. Dann sollte ein Parser dafür schon fertig erstellt sein. 😏

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    2. Hallo,

      die Rechnung kommen meistens als PDF Datei an oder werden eingescannt, dann liegen diese im .jpg Format vor.

      Folgende Beiträge verweisen auf diesen Beitrag:

      1. 1.) Umwandeln der Datei in Schwarz-weiß-pnm

        2.) OCR (z.B. mit Tesseract)

        3.) erhaltenen Text parsen

        3.a.) Dabei optimal auf gespeicherte Muster (aus früheren Durchläufen) zurückgreifen

        Punkt 2 ggf. mit unterschiedlichen Gamma-Werten wiederholen und anhand des Verhältnisses von erkannten Grafiken und Texten untersuchen, ob die Erkennungsrate steigt. Optimales Ergebnis nutzen.

        Auch Punkt 3 mit allen Mustern durchführen, bis das Ergebnis optimal ist.

        • Dabei die ganze Zeit brav an die Limits von PHP (Zeit, Speicher) denken.

        Da wirst Du wohl lange dran sitzen...

    3. Hallo

      Das hängt vom Format der Rechnung ab.
      Soll sie formfrei als Textdatei geliefert werden? Dann würde ich eher schwarz sehen.

      Oder könnte sie in excellentem HTML5 geliefert werden? Dann hätte ich Hoffnung, dass man relativ leicht einen Parser dafür erstellen könnte.

      Bei Rechnungen in solchen Formaten würde ich dräuenden Ärger mit dem Finanzamt vermuten. Solche Dokumente könnte ja jeder, bei dem sie durchkommen, nach Belieben verändern.

      PDF und eingescannte Papierdokumente sind es, wie EinfachMartin selbst schreibt, mit denen in freier Wildbahn typischerweise zu rechnen ist.

      Tschö, Auge

      --
      Eine Kerze stand [auf dem Abort] bereit, und der Almanach des vergangenen Jahres hing an einer Schnur. Die Herausgeber kannten ihre Leser und druckten den Almanach auf weiches, dünnes Papier.
      Kleine freie Männer von Terry Pratchett
      1. Hello,

        Das hängt vom Format der Rechnung ab.
        Soll sie formfrei als Textdatei geliefert werden? Dann würde ich eher schwarz sehen.

        Oder könnte sie in excellentem HTML5 geliefert werden? Dann hätte ich Hoffnung, dass man relativ leicht einen Parser dafür erstellen könnte.

        Bei Rechnungen in solchen Formaten würde ich dräuenden Ärger mit dem Finanzamt vermuten. Solche Dokumente könnte ja jeder, bei dem sie durchkommen, nach Belieben verändern.

        PDF und eingescannte Papierdokumente sind es, wie EinfachMartin selbst schreibt, mit denen in freier Wildbahn typischerweise zu rechnen ist.

        Die GoBD muss beachtet werden:
        Siehe hierzu auch den Beitrag auf Haufe.de

        Es sind durchaus auch andere Dateiformate zulässig oder sogar die "lose" Übertragung der Rechnungsdaten als verknüpfte Werte. Für den Grundsatz der Unveränderbarkeit sollte grundsätzlich ein Zertifikat (Checksumme) erstellt werden.

        Glück Auf
        Tom vom Berg

        --
        Es gibt nichts Gutes, außer man tut es!
        Das Leben selbst ist der Sinn.
        1. Hallo

          Das hängt vom Format der Rechnung ab.
          Soll sie formfrei als Textdatei geliefert werden? Dann würde ich eher schwarz sehen.

          Oder könnte sie in excellentem HTML5 geliefert werden? Dann hätte ich Hoffnung, dass man relativ leicht einen Parser dafür erstellen könnte.

          Bei Rechnungen in solchen Formaten würde ich dräuenden Ärger mit dem Finanzamt vermuten. Solche Dokumente könnte ja jeder, bei dem sie durchkommen, nach Belieben verändern.

          PDF und eingescannte Papierdokumente sind es, wie EinfachMartin selbst schreibt, mit denen in freier Wildbahn typischerweise zu rechnen ist.

          Es sind durchaus auch andere Dateiformate zulässig oder sogar die "lose" Übertragung der Rechnungsdaten als verknüpfte Werte. Für den Grundsatz der Unveränderbarkeit sollte grundsätzlich ein Zertifikat (Checksumme) erstellt werden.

          Klar wird es auch andere Dateiformate geben, die den gesetzlichen Forderungen entsprechen. DOC(X) oder ähnliche gehören ohne weitere Maßnahmen (Wiederherstellbarkeit des Urzustands z.B. mit Hilfe eines DMS) jedoch nicht dazu. Sagt auch die von dir verlinkte Seite in einem anderen Beitrag.

          Mir ging es ja darum, dass die Rechnung im DOC(X)-Format[1] an sich auf dem Weg vom Absender zum Adressaten manipulierbar ist.

          Tschö, Auge

          --
          Eine Kerze stand [auf dem Abort] bereit, und der Almanach des vergangenen Jahres hing an einer Schnur. Die Herausgeber kannten ihre Leser und druckten den Almanach auf weiches, dünnes Papier.
          Kleine freie Männer von Terry Pratchett

          1. oder in anderen, vergleichbaren Formaten ↩︎

  3. Hallo EinfachMartin,

    suche mal nach Standardsoftware für ICR/OCR.

    Ein Eigenbau ist hier nicht zu empfehlen, bzw. nur als Frontend für die Standardsoftware.

    Empfehlen kann ich grad keine - was wir im Haus haben (Paradatec) dürfte für deinen Zweck VIEL zu riesig und teuer sein.

    Rolf

    --
    sumpsi - posui - clusi