OCR-Plugin zur autom. Rechnungsauswertung

Autom. SEPA-Überweisung für Hibiscus

 
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 00:02 Uhr  ·  #1
Es gibt ein neues Plugin für Jameica, das eine Rechnungsvorlage (PDF oder Image) per OCR in eine SEPA-Überweisung verwandelt. Das geschieht weitestgehend automatisch, für den Fall, dass etwas nicht richtig erkannt wurde, kann man mit einfachen Klicks die fehlenden oder nicht korrekten Informationen ergänzen bzw. korrigieren. Die OCR-Engine ( Tesseract ) ist recht gut aber nicht perfekt, daher ist eine manuelle Eingabemöglichkeit zwingend. In den Einstellungen kann man die OCR-Engine optimieren und Keyword-Listen zur besseren Erkennung anlegen und optimieren:

https://github.com/istra711/OCRtransfer

Viel Spaß beim Testen! (derzeit Windows only)

Gruß
Michael
infoman
Benutzer
Avatar
Geschlecht:
Beiträge: 8284
Dabei seit: 06 / 2008
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 07:14 Uhr  ·  #2
Zitat geschrieben von istra711
Die OCR-Engine ( Tesseract ) ist recht gut aber nicht perfekt

wäre es nicht zeitgemäßer hier eine KI-OCR (open source) zu verwenden.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 07:26 Uhr  ·  #3
Naja, Tesseract hat den Vorteil, dass es eine klassische lokal laufende OCR ist. Die übrigens eine sehr gute Zeichenerkennung hat. Eine veergleichbar leistungsfähige auf Standardhardware lokal laufende KI-basierte OCR gibt es derzeit nicht. Man müsste das dann also in der Cloud laufen lassen. Hinzu kommt, dass ein solches KI-Model mehrere GB gross ist. Nur für das Lesen eines QR-Codes wäre das ziemlich viel. Ach und mir wird gerade bewusst, dass mir gar kein spezifisches Model für QR-Codes bekannt ist.
Odin
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Bayerisch Venedig
Homepage: sparkasse-passau.d…
Beiträge: 774
Dabei seit: 11 / 2004
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 07:38 Uhr  ·  #4
by the way:

das gibt es als Geschäftsmodell bereits... KI und clodbasierend ;-)

https://gini.net/

und eben in diversen Apps und Programmen läuft das im Hintergund

Od
little.yoda
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 345
Dabei seit: 05 / 2014
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 07:49 Uhr  ·  #5
Zitat geschrieben von hibiscus

Nur für das Lesen eines QR-Codes wäre das ziemlich viel. Ach und mir wird gerade bewusst, dass mir gar kein spezifisches Model für QR-Codes bekannt ist.


Wenn ich https://github.com/istra711/OCRtransfer richtig verstehe, geht es aber darum, Rechnung ohne QR-Code zu verarbeiten.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 08:02 Uhr  ·  #6
Zitat geschrieben von little.yoda

Wenn ich https://github.com/istra711/OCRtransfer richtig verstehe, geht es aber darum, Rechnung ohne QR-Code zu verarbeiten.

Das stimmt. Wo hab ich da QR gelesen? OK, also OCR und semantische Erkennung der relevanten Werte auf der Rechnung.

OCR - also die reine Zeichenerkennung - ist quasi gelöst. Das kann Tesseract hervorragend. Dafür braucht man eigentlich keine KI. Die wirkliche Herausforderung ist die semantische Zuordnung - also zu erkennen, was z.B. der Betrag ist (das ist auch genau das, womit ich mich beruflich beschäftige). Die IBAN lässt sich mit einem regulären Ausdruck recht gut finden. Für Betrag und Rechnungsnummer am ehesten per Suchbegriff. Sowas kann KI in der Tat sehr gut. Aber hier ist es so, dass man dafür hinreichend große Modelle braucht.
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 08:33 Uhr  ·  #7
Die KI-Lösung ist sicher ein guter Weg wenn es um die Zuordnung geht und das ist auch der schwierige Part in meinem Code, will sagen, es funktioniert nicht immer. Die Sparkassen bitten eine Handy-App an, die das nahezu perfekt macht, da läuft aber eine KI im Hintergrund. Man könnte das Plugin um eine KI-Lösung erweitern, was aber auch bedeuten würde dass sensitive persönliche Daten in der Cloud landen würden, das mag vielen egal sein, mir nicht.....

Ich kann mal schauen, ob man irgendwie eine KI einbinden kann, die man bei Bedarf dazuschalten kann. Das wäre zumindest eine Option und auch sicherer....
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 08:37 Uhr  ·  #8
Ein Lösungsansatz für das Finden der Werte (ohne KI nutzen zu müssen) ist die Möglichkeit, die Positionsdaten der Wörter zu verwenden. Tesseract kann dir nicht nur den Volltext liefern sondern auch auf Wort- und Zeilenebene die Bounding Boxes. Der Ansatz wäre dann der, erst nach einem Schlüsselwort wie z.Bp. "Brutto" zu suchen und dann im Umkreis von dieser Position ausgehend rechts oder unterhalb nach etwas, das wie ein Betrag aussieht.
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 09:26 Uhr  ·  #9
Zitat geschrieben von hibiscus


Das stimmt. Wo hab ich da QR gelesen? OK, also OCR und semantische Erkennung der relevanten Werte auf der Rechnung.



Ich denke, du bist mit meinem anderen Plugin (QRtransfer) durcheinander gekommen, was den QR-Code in einer Rechnung sucht und auswertet. Ich hatte erst überlegt, ob ich das nicht in einem Plugin zusammenfasse habe mich dann dagegen entschieden.

Was meint ihr, sollte man diese beiden Funktionen (OCR und QR) trennen oder in einem Plugin zusammenfassen?

Gruß
Michael
little.yoda
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 345
Dabei seit: 05 / 2014
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 09:28 Uhr  ·  #10
Zitat geschrieben von istra711

Was meint ihr, sollte man diese beiden Funktionen (OCR und QR) trennen oder in einem Plugin zusammenfassen?


Ich würde es zusammenfassen. Ist für den Endanwender weniger verwirrend.
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 09:43 Uhr  ·  #11
Denke ich auch. Dann müsste der User im Optimalfall nicht mal wählen, woher die Daten gelesen werden. Er importiert einfach nur die Rechnung. Wenn sie einen QR-Code enthält, wird der genommen. Wenn nicht, dann per OCR.

Ich würde dir auch empfehlen, einen Importer zu implementieren (also eine Klasse, die das Hibiscus-Interface "Importer" implementiert und sich in "getIOFormats" für Überweisungen registriert (analog zu https://github.com/willuhn/hib…orter.java). Der Importer wird dann Hibiscus automatisch gefunden und direkt mit in der Dateiformat-Auswahl erscheinen, wenn der User in der Liste der Überweisungen im Kontextmenü auf "Importieren..." klickt.
infoman
Benutzer
Avatar
Geschlecht:
Beiträge: 8284
Dabei seit: 06 / 2008
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 09:51 Uhr  ·  #12
@hibiscus
es gibt doch auch KI-OCR Anwendungen die lokal laufen und die Qualität ist anscheinend viel besser als herkömmliches OCR.
ja es bauscht das ganze auf, aber auf einem Windows-PC sollte das jetzt nicht unbedingt ein Problem sein.

war ja nur eine Idee und soll das o.g. Angebot in keinster weise schmälern
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 09:56 Uhr  ·  #13
Zitat geschrieben von infoman

es gibt doch auch KI-OCR Anwendungen die lokal laufen und die Qualität ist anscheinend viel besser als herkömmliches OCR.

Also wenn du eine kennst, gern her damit. Ich kenne kein KI-Modell, dass OCR kann und nicht wenigstens einige GB gross ist.
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 10:08 Uhr  ·  #14
Ok, danke für euer Feedback, dann werde ich mich mal dran machen und die beiden zusammenzufassen. Da das mit Linux und MacOS sicherlich kompliziert wird, muss ich mich aus Zeitgründen erstmal auf die Windows-Version konzentrieren.

@hibiscus
Bezüglich der Implementierung in Jameica/Hibiscus mit dem "Importer" brauche ich vermutlich etwas Unterstützung aber ich versuche es erstmal mit den Infos zu deinem Vorschlag hinzubekommen.

@infoman
Hast du da bereits eine lokale KI-Lösung im Auge, die für diesen Anwendungsfall geeignet wäre?
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 10:13 Uhr  ·  #15
Zitat geschrieben von hibiscus

Zitat geschrieben von infoman

es gibt doch auch KI-OCR Anwendungen die lokal laufen und die Qualität ist anscheinend viel besser als herkömmliches OCR.

Also wenn du eine kennst, gern her damit. Ich kenne kein KI-Modell, dass OCR kann und nicht wenigstens einige GB gross ist.


OCR müsste sie nicht direkt können aber bei der Zuordnung (semantische Erkennung ) könnte sie sehr hilfreich sein und auch möglicherweise Fehler in der Erkennung korrigieren. So hatte ich in der IBAN zum Beispiel ein "I" statt einer "1" stehen, das kann ich derzeit nicht abfangen, die KI könnte das aber korrigieren....
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 10:28 Uhr  ·  #16
Das kleinste mir bekannte LLM, dessen Sprachverständnis reichen könnte, um zu einem gegebenen Text Fragen beantworten zu lassen (sprich: man würde den von der OCR gelieferten Text + Prompt mit den Fragen zu den benötigten Feldern übergeben), ist "Qwen2-0.5B". Gibt's bei https://huggingface.co/Qwen/Qwen2-0.5B - allerdings ist auch das ~1GB gross. Erst ab ca. 8 Mrd. Parametern (z.B. die Llama 3 Modelle sind gut) kommt man aber in einen Bereich, wo qualitativ brauchbare Antworten kommen. Da bist du dann aber schon bei 4GB. Und um das performant laufen lassen zu können, brauchst du GPU/NPU.
infoman
Benutzer
Avatar
Geschlecht:
Beiträge: 8284
Dabei seit: 06 / 2008
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 18:59 Uhr  ·  #17
@hibiscus
bzgl. Größe usw. habe ich keine Ahnung.
ich weiß nur im Office-Bereich (bspw. paperless-ngx) wurde vor ein paar Monate, als die Angelegenheit Fahrt aufgenommen hat div. Vergleiche (herkömmliches OCR zu KI-OCR) durchgeführt bspw.: https://www.youtube.com/watch?v=treF7oFLLmk bzw. https://www.youtube.com/watch?v=1uja1SGL0pY und die waren beeindruckend
Office-Apps mit KI-OCR Funktionen die (local) nur auf bspw. iOS laufen, sind ja anscheinend auch in der Entwicklung: https://stadt-bremerhaven.de/p…-geraeten/

Jedoch bin ich DAU und habe bspw. kein iOS, dass ich dies überprüfen/testen könnte.
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 19:06 Uhr  ·  #18
Zitat geschrieben von hibiscus

Denke ich auch. Dann müsste der User im Optimalfall nicht mal wählen, woher die Daten gelesen werden. Er importiert einfach nur die Rechnung. Wenn sie einen QR-Code enthält, wird der genommen. Wenn nicht, dann per OCR.

Ich würde dir auch empfehlen, einen Importer zu implementieren (also eine Klasse, die das Hibiscus-Interface "Importer" implementiert und sich in "getIOFormats" für Überweisungen registriert (analog zu https://github.com/willuhn/hib…orter.java). Der Importer wird dann Hibiscus automatisch gefunden und direkt mit in der Dateiformat-Auswahl erscheinen, wenn der User in der Liste der Überweisungen im Kontextmenü auf "Importieren..." klickt.



Hallo Olaf,

ich habe versucht deinen Vorschlag umzusetzen aber es funktioniert nicht.
Die IORegistry scannt nur den Hibiscus-eigenen ClassFinder. Externe Plugin-Importer werden nicht erkannt, da die ClassService beim JAR-Scan die Hibiscus-Klassen (Importer, IOFormat, etc.) noch nicht im ClassLoader hat.

Das Problem scheint zu sein, dass der IORegistry in Hibiscus nur Importer im eigenen Classpath sucht (Zeile 60 in IORegistry.java):
ClassFinder finder = Application.getPluginLoader().getPlugin(HBCI.class)
.getManifest().getClassLoader().getClassFinder();

Das bedeutet: Externe Plugin-Importer werden nicht erkannt.

Ist meine Schlussfolgerung richtig bzw. was muss ich machen, damit meine Class vom Finder erkannt/gefunden wird?
Gibt es ein Beispiel, wo das mal umgesetzt wurde?

Gruß
Michael
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 11612
Dabei seit: 03 / 2005
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 19:35 Uhr  ·  #19
Ja, stimmt. Hatte ich nicht auf dem Schirm. Ich schau mal, wie ich das ändern kann, damit das auch für Erweiterungsplugins funktioniert. Denn an sich finde ich die Stelle im allgemeinen Contextmenü für den Import schon die naheliegende.
istra711
Benutzer
Avatar
Geschlecht:
Herkunft: Deutschland
Beiträge: 23
Dabei seit: 06 / 2026
Betreff:

Re: OCR-Plugin zur autom. Rechnungsauswertung

 · 
Gepostet: Gestern um 20:54 Uhr  ·  #20
Ich habe die KI mal auf den Hibiscus-Code und das Problem angesetzt, demnach müsste nur eine Zeile ändern in IORegistry.load() - statt nur den Hibiscus-ClassFinder zu nutzen, müssten alle Plugin-ClassFinder durchsucht werden:

Code

//Aktueller Code (Problem):
// Zeile 60 - nur Hibiscus-ClassFinder

ClassFinder finder = Application.getPluginLoader()
    .getPlugin(HBCI.class)
    .getManifest()
    .getClassLoader()
    .getClassFinder();

// Benötigte Änderung:
// Der IORegistry müsste alle Plugin-ClassFinder durchsuchen:
// Lösung: Alle Plugins durchsuchen

List<ClassFinder> finders = new ArrayList<>();

// Hibiscus als erstes
finders.add(Application.getPluginLoader()
    .getPlugin(HBCI.class)
    .getManifest()
    .getClassLoader()
    .getClassFinder());

// Dann alle anderen Plugins
for (Plugin p : Application.getPluginLoader().getInstalledPlugins()) {
    if (p == null) continue;
    ClassFinder cf = p.getManifest().getClassLoader().getClassFinder();
    if (cf != null && !finders.contains(cf)) {
        finders.add(cf);
    }
}

// Alle Finders zusammenführen
ClassFinder combined = new ClassFinder();
for (ClassFinder cf : finders) {
    combined.addFinder(cf);
}

// Dann suchen
Class<T>[] list = combined.findImplementors(type);




----------------------------------------------------------------------------------
Gruß
Michael
Gewählte Zitate für Mehrfachzitierung:   0