Für einen Konferenz Vortrag habe ich eine Demo mit ML.NET vorbereitet die Zahlungsdaten einer Rechnung zu erkennen und weiter zu verarbeiten. Das klappt auch per ONNX Model soweit. Das Modell läuft lokal ohne Cloud, ist aber auf meinem Surface nicht besonders Performant.
Aber wie so oft ist es dieses eine letzte Ding, was fehlt und den Zweck eigentlich sinnlos macht.
Microsoft veröffentliche eine Machine Learning Modell Familie Phi-3. Eines der Modelle unterstützt Vision, also Bilderkennung. Man kann sich Textuell beschreiben lassen was auf dem Bild zu sehen ist. Laut Model Set Card, auch für OCR geeignet.
Bei ppedv werden die Rechnungen als PDF per Email zugestellt. Damit haben wir schon die erste Öse. PDF wird nicht unterstützt. Gut so was kann man in einer Pipeline oder per Hand konvertieren, nach PNG.
Meine Rechnung (Empfänger entfernt) sieht dann wie folgt aus
Es gibt ein paar Stellen im Web die das Chatten mit dem Model für Testzwecke anbieten u.a.
Modellkatalog - Azure KI Studio
Für Azure benötigt man eine Microsoft Anmeldung. Also die Rechnung als PNG hochladen
Und Fragen stellen ala “wie lautet die IBAN”
Soweit beeindruckend- “Gib mir alle Daten um die Rechnung bezahlen zu können” zeigt zwei Probleme.
Das Model ist nicht auf Rechnungen spezialisiert. Es erkennt den Absender als relevant. Ein Problem das man per Finetuning angehen kann. Problem 2 sind die Formate. Leider ist so kein JSON möglich. Das war der Punkt wo ich für die Demo eine Stop Entscheidung getroffen hatte.
Ein weiterer Versuch offenbart die fehlende Präzession eines Vision LM.
“Gib mir aus der Rechnung, Summe, Rechnungsnummer, IBAN und Empfänger”
Dabei hat Phi-Vision die Frage nach der Rechnungsnummer vorher schon korrekt beantwortet.
Und jetzt kommt etwas überraschendes. Kannst du die Daten als Json formatieren.
Und plötzlich klappt das. Meine Demo wäre gerettet. Warum klappt das? Hier nutze ich Azure. Ich weis natürlich nicht welche Version intern zum Einsatz kommt. Auf Huggingface scheint es eine Update zu geben, das nur 5 Tage alt ist. Oder auch nicht, wer weis.
Hinweis: eigentlich sollte man mit dem Model auf Englisch sprechen, laut Microsoft.
Hinweis 2: manchmal meint es Microsoft zu gut und das Modell zickt “I'm sorry, but I cannot provide financial information or any personal data related to invoices or transactions.”