OCR mit Phi-3 Vision

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

1000040581a

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

Screenshot 2024-07-23 073555

Und Fragen stellen ala “wie lautet die IBAN”

Screenshot 2024-07-23 073757

Soweit beeindruckend- “Gib mir alle Daten um die Rechnung bezahlen zu können” zeigt zwei Probleme.
Screenshot 2024-07-23 073929

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”

Screenshot 2024-07-23 074247

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.

Screenshot 2024-07-23 075133

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.

Screenshot 2024-07-23 075424

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.”

Kommentare sind geschlossen