OCR - Rechnungserkennung, wie geht das genau?

beta20

Top Contributor
Hallo zusammen,

ich würde gerne eine automatische Rechnungserkennung programmieren.
Ich frage mich jedoch gerade wie das technisch genau abläuft, wie erkennt mein OCR den Rechnungsbetrag, Datum etc.?

Hier meine Idee...
1) Ich scanne ein PDF / Image ein
2) Jage das über den OCR (z.B. Tessa4j OCR).
3) Nun erhalte ich einen String zurück
4) Ich prüfe den String nun auf verschiedene String ab (z.B. "Rechnungsdatum", "Rechnungsbetrag"; dahinter sollte dann i.d.R. der Rechnungsbetrag etc. stehen...
5) Wie erhalte ich den Betrag / Datum aber nun?

Danke für jede Hilfe.
 

Meniskusschaden

Top Contributor
z.B. durch DMS mit OCR erreichen, soweit mir bekannt kann dieses z.B. Alfresco.
Alfresco hatte ich mir zwar vor vielen Jahren mal flüchtig angesehen, kenne es aber im Grunde nur dem Namen nach. Aber egal welches DMS man nutzt: entweder muß man eine KI trainieren oder ein Regelwerk aufbauen. Beides wird im Laufe der Jahre immer weiter verbessert und stellt dann einen eigenen Wert dar. Deshalb sollte man sich überlegen, ob man den Klassifizierungsprozess überhaupt mit DMS-Funktionalität realisieren möchte oder doch lieber an eine unabhängige Lösung auslagert (erst mal egal, ob Eigenprogrammierung oder eine Lösung, wie sie @X2X offenbar anbietet). Wenn man das DMS dann mal wechseln möchte, kann man den bestehenden Klassifizierungsprozess behalten und muss an der Stelle keinen großen Migrationsaufwand betreiben.
 

mihe7

Top Contributor
Wenn man die Sammlung der Templates als das Wissen des Software-Roboters betrachtet, dann ist es Machine-Learning, weil ja immer wieder neue Lieferanten/Templates dazukommen oder auch mal erweitert werden müssen.
Äh... damit ich es richtig verstehe: wenn ich ein Template erweitere, dann ist es Machine-Learning, weil ich der Maschine was lerne?
 

KonradN

Super-Moderator
Mitarbeiter
Ich suche auch gerade sowas...
Was kostet denn die "OCR OnPremise-SDK" ?
Von was redest Du genau? Meinst Du Googles OCR On-Prem Lösung wie unter https://cloud.google.com/vision/on-prem beschrieben oder meinst Du etwas anders?

Bei Google On-Prem brauchst Du einen GKE oder Anthos Cluster - da wäre evtl. erst einmal die Frage, ob sowas vorhanden ist... und wenn, dann könnte man das da mit den Verantwortlichen abklären denke ich mal :)
 

Kanadier

Neues Mitglied
Kanadier hier,

ich habe euch ueber Google gefunden, nachdem ich neugierig war, wie deutsche Firmen das handhaben.
Wir arbeiten an demselben Problem in eine der groessten Steuerfirmen unseres Landes in Kanada.

Lass uns ueber die Extrahierung von Key-Value Paaren reden (Tabellen sind eine Sache fuer sich).

Ich habe lange ueber dieses Problem nachgedacht, und bin schliesslich auf die fuer mich "weiseste" Loesung gekommen, die "gut genug" zu sein scheint, eine simple Loesung zu einem sehr komplizierten Thema. (Ich habe spaeter auch herausgefunden, dass Google einen aehnlichen Ansatz mit ihrem System verfolgt, das hier schon empfohlen wurde. Nein, nicht nur im aehnlichen Ansatz... die machen es haargenauso)

Du erstellst dir zuerst "Kandidaten", das sind Tokens, also "Woerter" die von ihrer Zusammensetzung aus Buchstaben ein moeglicher Match sein koennen.
Danach schaust du dir die Nachbarn von jedem Kandidaten "nach links" an und wenn du nicht fuendig wirst um 10% "nach oben" (behalte beim OCR-Prozess also die x-y Koordinaten, die sind wichtig)

Der "weise" Teil ist ein Verifizierungsprozess, um "Fehltreffer" auszuwerfen. Du kannst schon von vornherein einige Heuristiken aufstellen:
Die Gesamtsumme ist der hoechste Geldbetrag.
Mehrwertsteuer ist bei euch ~19% von der Gesamtsumme; neben der Gesamtsumme wuerde nicht ein anderes Keyword (z.B. "Rueckgeld") stehen.
Das Zahldatum kommt nach dem Rechnungsdatum etc. etc.

Es gibt knapp ueber 500 Keywords in Rechnungen bei uns, nach denen wir suchen. Alles KI ist nur "Kurvenanpassung."

Ich habe meiner Assitentin gesagt, 80% Treffsicherheit ist top. 90% Erfolgsrate ist 5 Jahre Entwicklungszeit und um von 90% auf 95% zu kommen sind nochmal 10 Jahre. Ich denke, jeder der aus diesem Bereich kommt, wird bestaetigen: Bei 95% flacht auch dann diese Kurve ab.

So gut wie alle Forschungspapiere ueber dieses Thema gelesen zu haben gebietet mir diesen Loesungsweg zu favoritisieren (obgleich ich auch widersprochen werden moechte). TensorFlow, um auf Fabian von dem Link zu entwickler.de einzugehen, ist eine gute Idee, bis du skalieren musst. Daniel Holanda Noronha hat mit LeFlow versucht TensorFlow auf FPGAs zu werfen. FPGAs sind eine gute Idee.

Wir brauchen definitiv mehr FPGA-OCR Forschungen. Ich habe auch einige Ideen zum Thema OCR, aber ich moechte damit nicht mein Leben verschwenden.

"Wahre Semantik" in Rechnungen reinzubringen... dazu muesstest du vorerst ein System wie Cyc haben, das ueber die "groessere Welt" bescheid weiss. Der Kerninterpreter von CYC ist im Wesentlichen wie ein metazirkulaerer Lisp Interpreter. Die Inferenzregeln koennen etwa zwei Dutzend sein und sind im Wesentlichen Einzeiler im Pradikatenkalkuel 2. Ordnung. Der Rest von CYC besteht im Wesentlichen aus verschiedenen Arten von Wissen, die als Beziehungen und Kausalketten kodiert sind.

Die Inferenzmaschine ist pille-palle, wenn man die praktische Vergroesserung dieser Regeln zur Optimierung ignoriert. Die Einstein-Frage lautet, "Was genau muss es wissen - und wie viel, um das ganze praktisch zu machen?"
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
P Installation JRE 8u321 startet, geht aber nicht weiter Java Basics - Anfänger-Themen 1
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
H Wie geht eigentlich Objektorientierung? Java Basics - Anfänger-Themen 14
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
melisax Lower & Uppercase Beispielprogramm geht nicht Java Basics - Anfänger-Themen 3
MarcKKKK123 Wie geht das? Java Basics - Anfänger-Themen 1
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
N methodenaufruf for each geht nicht Java Basics - Anfänger-Themen 2
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
W App geht live und dann? Java Basics - Anfänger-Themen 9
P Geht es vielleicht viel kürzer? Java Basics - Anfänger-Themen 7
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
S Geht das bei Java ? Java Basics - Anfänger-Themen 11
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
CptK Klassen KeyListner geht nicht Java Basics - Anfänger-Themen 7
L Klassen Objekt aus einer Warteschlange in eine andere übergeben, geht nicht? Java Basics - Anfänger-Themen 6
K Armstrong Programm geht nur bis 1000, aber nicht weiter Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
MR._FIRE_Flower String.split("(") geht nicht Java Basics - Anfänger-Themen 4
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
K Klassen Nachträglich ein Objekt einem anderen zuweisen, geht das? Java Basics - Anfänger-Themen 2
S int addieren geht nicht Java Basics - Anfänger-Themen 13
L system.print.out geht nicht Java Basics - Anfänger-Themen 11
M Referenz geht bei Zwischenspeichern verloren (ArrayList) Java Basics - Anfänger-Themen 4
S Komma geht beim Schreiben ins csv verloren. Java Basics - Anfänger-Themen 6
M Arrays einspeichern geht nicht Java Basics - Anfänger-Themen 21
J BlueJ und import-Anweisungen, wie geht das? Java Basics - Anfänger-Themen 4
J Geht mit Java überhaupt was? Java Basics - Anfänger-Themen 13
J Debuggen - wie geht das? Java Basics - Anfänger-Themen 6
I erstelle Vorschaubild mit der lib PDF-Renderer und möchte danach Dateiname ändern -> geht aber nicht Java Basics - Anfänger-Themen 0
J Ausführen geht nicht Java Basics - Anfänger-Themen 19
G System.out.printf geht nicht Java Basics - Anfänger-Themen 6
E Erste Schritte [Noob] Warum geht meine For-Schleife nicht? Java Basics - Anfänger-Themen 2
I Java Code so gut es geht Kommentieren Java Basics - Anfänger-Themen 4
S Button "Berechnen" geht nicht Java Basics - Anfänger-Themen 3
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
T fianl array geht nicht... Java Basics - Anfänger-Themen 2
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
B Nichts geht mehr Java Basics - Anfänger-Themen 10
D Java geht auf windows 64 bit nicht. Java Basics - Anfänger-Themen 5
V Einfacher vergleich von Arrays geht schief Java Basics - Anfänger-Themen 2
T sample.war geht nicht... Java Basics - Anfänger-Themen 1
Thallius Klassen aus Classname programmatisch erzeugen. Wie geht das in java? Java Basics - Anfänger-Themen 5
C Datentypumwandlung geht nicht Java Basics - Anfänger-Themen 5
U kompilieren geht nicht wg. Formatierung wahrscheinlich Java Basics - Anfänger-Themen 7
G While schleife mit 2 Bedingungen geht nicht! Java Basics - Anfänger-Themen 15
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
L Das erste Mal GridBagLayout - wie geht das? Java Basics - Anfänger-Themen 5
O Jar Datei erstellen geht nicht. Java Basics - Anfänger-Themen 4
O (.+?) --> $1 geht nicht Java Basics - Anfänger-Themen 5
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
R Java JDK/ Kompiler geht nicht Java Basics - Anfänger-Themen 4
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
P Geht dieser Code noch einfacher? Java Basics - Anfänger-Themen 16
J Warum geht int und String nicht? Java Basics - Anfänger-Themen 18
J repaint() geht gar nicht; GUI aktualisieren Java Basics - Anfänger-Themen 10
N ArrayList geht nicht Java Basics - Anfänger-Themen 8
B Erste Schritte Listing aus Buch - wie geht das? Java Basics - Anfänger-Themen 6
K Datentypen Kurzform Addition geht, Langform scheitert am Typen Java Basics - Anfänger-Themen 6
R Einfacher Timer geht nicht Java Basics - Anfänger-Themen 7
J Anzeige erneuern, wie geht das? Java Basics - Anfänger-Themen 6
D Compiler-Fehler ANT-Script geht nicht Java Basics - Anfänger-Themen 6
A Android Datenbank gaaanz einfaches Insert geht nicht - warum? Java Basics - Anfänger-Themen 4
N JAVA Installation - Umgebungsvariable geht nicht. Java Basics - Anfänger-Themen 3
K Aus JFrame-Fenster SuM-Fenster öffnen geht nicht! Java Basics - Anfänger-Themen 8
L Jarfiles packen, wie geht's genau? Java Basics - Anfänger-Themen 12
K Erste Schritte Progressbar geht nicht Java Basics - Anfänger-Themen 5
H Ein alternativer Konstruktor geht nicht Java Basics - Anfänger-Themen 3
B Std-Serialisierung - Speichern/Laden geht nur auf einem Rechner Java Basics - Anfänger-Themen 17
F Geht in alle Case rein, warum?? Java Basics - Anfänger-Themen 12
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
P quickSort eines Objekt-Arrays geht nicht! Java Basics - Anfänger-Themen 11
M if then else geht nicht Java Basics - Anfänger-Themen 10
N Methoden mehrere replace hintereinander geht nicht ? Java Basics - Anfänger-Themen 2
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
C Erste Schritte switch Anweisung geht nicht Java Basics - Anfänger-Themen 3
N geht oder geht nicht? Java Basics - Anfänger-Themen 24
E bo wie geht das denn? Java Basics - Anfänger-Themen 8
Z Anfügen an Arraylist geht nicht Java Basics - Anfänger-Themen 3
M Unterverzeichnisse löschen geht nicht. Java Basics - Anfänger-Themen 3
T Methoden Array kopieren: Wie geht das? Java Basics - Anfänger-Themen 20
M If Abfrage geht nicht Java Basics - Anfänger-Themen 2
0 file.delete() geht nicht Java Basics - Anfänger-Themen 23
0 String split und replace geht nicht Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben