Wie viele Programmierer und Wörter benötigen Sie, um einen handschriftlichen Pass zu erkennen?

Denken Sie, dass handgeschriebene PĂ€sse in unserem Land hĂ€ufig zu finden sind? Als wir bei Smart Engines mit dem Entwurf eines Passerkennungssystems begannen, schien es ausreichend zu sein, dem System das qualitative Erkennen von maschinengeschriebenen Dokumenten beizubringen. Zu dieser Zeit schien das Vorhandensein handgeschriebener PĂ€sse, die nicht automatisch erkannt werden konnten, kein wichtiges Problem zu sein: Es gab genug ungelöste Probleme ohne sie. Vor einem Jahr wurde die QualitĂ€t der Arbeit von Smart IDReader analysiertWir haben festgestellt, dass wir an einem Punkt angelangt sind, an dem handschriftliche PĂ€sse eine erhebliche Fehlerklasse darstellen. Entsprechend dem wissenschaftlichen Ansatz untersuchten sie das Problem und nahmen die Entscheidung auf. Heute wird es eine Geschichte darĂŒber geben, wie wir die Anerkennung eines handschriftlichen Passes der Russischen Föderation vorgenommen haben, um das letzte Problem auf dem Weg zur vollstĂ€ndigen Automatisierung der Eingabe von Passdaten erfolgreich zu lösen.


Die Aufgabe, handgeschriebenen Text allgemein zu erkennen, klingt grundlegend, umfangreich und unlösbar. Daher ist es zunĂ€chst wichtig, die Formalisierung der Aufgabe korrekt einzuschrĂ€nken. Wir werden also den handschriftlichen Text der wichtigsten Kehrtwende des russischen Zivilpasses erkennen. Solche PĂ€sse sind in ordentlicher kalligraphischer Handschrift (zumindest laut Passist) ausgefĂŒllt. Dies erleichtert einerseits die Aufgabe: Wir mĂŒssen keine „medizinischen Kritzeleien“ und andere schlecht gelesene Texte erkennen. Auf der anderen Seite mĂŒssen wir uns jedoch der VariabilitĂ€t der kalligraphischen Stile kyrillischer Buchstaben stellen. Nun, das ist eher eine ernsthafte Herausforderung, kein unĂŒberwindbares Problem.

Die Aufgabe der Handschrifterkennung im Pass haben wir in drei Unteraufgaben unterteilt:

  1. Feststellung des Vorhandenseins des Manuskripts im Reisepass.
  2. Segmentierung einer handschriftlichen Zeile in Zeichen.
  3. Zeichenerkennung und Nachbearbeitung.

Weiter im Artikel werden wir Ihnen mehr ĂŒber die Lösung fĂŒr jede Unteraufgabe erzĂ€hlen. Aber zuerst werden wir ein sehr wichtiges Problem diskutieren, das bei der Erkennung immer zuerst auftritt - DatensĂ€tze. Ohne DatensĂ€tze ist eine normale Erkennung nicht möglich: Selbst wenn Sie neuronale Netze mit synthetisierten Daten trainieren können, benötigen Sie dennoch Daten, die die Genauigkeit des trainierten Systems messen. Wie sich herausstellte, gibt es im Netzwerk keine geeigneten ManuskriptdatensĂ€tze. Daher wurde unsere Liste der Unteraufgaben durch einen Nullpunkt ergĂ€nzt - "Vorbereiten des Datensatzes". Wir gingen diesen Prozess kreativ an: Wir verteilten NotizbĂŒcher „in einem Lineal“ und baten alle unsere Programmierer, sich an die Rolle der Kalligraphiemeister zu gewöhnen - einige vorbereitete Texte mit schöner Handschrift neu zu schreiben. Dies waren Verse von A.S. Puschkin.

Hier warteten wir auf die erste EnttĂ€uschung. Egal wie schwierig es auch klingen mag, es stellte sich heraus, dass unsere Programmierer das Schreiben völlig vergessen haben. Und Sie können nicht sagen, dass sie es nicht versucht haben. Nein, sie haben nur vergessen, wie man Buchstaben von Hand buchstabiert. Hier ist ein Beispiel dafĂŒr, was passiert ist:



Stimmen Sie zu, es ist ĂŒberhaupt nicht das, was benötigt wird. Die Buchstaben tanzen, die GrĂ¶ĂŸen werden nicht respektiert ... Ich musste im Internet nach Heften suchen und wie in der ersten Klasse alle im wahrsten Sinne des Wortes schriftlich festhalten! Wir erinnern uns noch mit einem LĂ€cheln an diese Zeit: Das gesamte Team (ausnahmslos von Studenten im dritten Jahr bis zu angesehenen WissenschaftsĂ€rzten) sitzt an einem Schreibtisch und zeigt sorgfĂ€ltig Briefe an.



Nachdem wir unsere Hand gefĂŒllt hatten, waren wir in zwei Tagen bereit, den Versuch zu wiederholen, „Rohdaten“ fĂŒr den handschriftlichen Datensatz zu sammeln. Die Buchstaben wurden glatter, die Wörter lesbarer. Und einige haben es sogar geschafft, einige Elemente der Kalligraphie einzufĂŒhren. Schauen Sie sich jetzt die neuen Beispiele selbst an:









Aufgrund solcher Leerzeichen mit unterschiedlichen Texten und Handschriften haben wir etwa 1000 Teile gesammelt, sorgfĂ€ltig digitalisiert und in Linien und Symbole eingefĂŒgt. Herzlichen GlĂŒckwunsch, der Manuskript-Datensatz ist fertig. ZurĂŒck zu den Algorithmen.

Erkennung von Passmanuskripten


Die Manuskripterkennung ist ein wichtiges Element eines industriellen Dokumentenerkennungssystems. Diese FunktionalitĂ€t gehört zur Kategorie "VerstĂ€ndnis des Dokuments" und ist seitens des GeschĂ€ftskunden sehr gefragt. Wir haben ein binĂ€res neuronales Faltungsnetzwerk trainiert, das die Eingabebilder einzelner Textzeilen des Passes analysiert. Jedes der Passfelder wird ĂŒber dieses Netzwerk auf Manuskripte analysiert. Anschließend wird durch AbwĂ€gen der erhaltenen SchĂ€tzungen eine allgemeine Entscheidung ĂŒber das „Manuskript“ des gesamten Passes getroffen.

Handschriftliche Zeilensegmentierung in Zeichen


Die Segmentierung von Handschriften unterscheidet sich grundlegend von der Segmentierung von Typoskripten. Um die erste Ebene des Problems zu verstehen, schreiben Sie einfach das Wort „Chinchilla“ von Hand und sehen Sie sich diese „schlanken Hakenreihen“ an. FĂŒr die Segmentierung handschriftlicher Tests haben wir wieder neuronale Netze verwendet. Wir haben ein spezielles neuronales Netzwerk trainiert, das als Antwort eine SchĂ€tzung des Vorhandenseins eines „Schnitts“ zwischen Buchstaben an jedem Punkt des Eingabebildes des Textes zurĂŒckgibt. Unter Anwendung der Prinzipien der dynamischen Programmierung werden Buchstabenabschnitte konstruiert.




Das Problem, LĂŒcken zwischen Buchstaben zu setzen, ist weit entfernt von allen Schmerzen der Segmentierung. Sie mĂŒssen jedes Zeichen vertikal korrekt begrenzen. Und hier ist die Suche nach „Grundlinien“, die hĂ€ufig beim Erkennen von gedrucktem Text verwendet wird, ĂŒberhaupt nicht anwendbar - die Höhe handgeschriebener Buchstaben springt in unbegrenzten Grenzen.

Zeichenerkennung und Nachbearbeitung


Das Problem beim Erkennen handgeschriebener Zeichen ist hauptsĂ€chlich der gleiche Stil verschiedener Zeichen. Schauen Sie sich das obige Beispiel an: Welcher Nachname steht geschrieben - "Petrov" oder "Netrov"? Wenn eine Person einen handgeschriebenen Text liest, liest sie ihn nie Zeichen fĂŒr Zeichen, sondern immer im angegebenen Kontext. Das Erkennungssystem sollte sich in diesem Fall genauso verhalten. Ein neuronales Netzwerk, das handgeschriebene Zeichen erkennt, sollte daher gegenĂŒber verschiedenen Buchstaben desselben Typs "tolerant" sein (aus mathematischer Sicht sollte es dieselben Konfidenzwerte fĂŒr solche Zeichen zurĂŒckgeben), und nachfolgende Algorithmen zum Analysieren und Verarbeiten von Erkennungsergebnissen (so) "Postprozessoren" genannt) sollten die Merkmale des erkannten Feldes berĂŒcksichtigen.

Was haben wir am Ende erreicht?


So haben wir in einem Jahr gelernt, handgeschriebene PĂ€sse zu erkennen, und dieses grundlegende Problem zurĂŒckgelassen, das vor einigen Jahren unlösbar schien! Was kommt als nĂ€chstes? Dann arbeiten Sie wie gewohnt an QualitĂ€t und neuen Grenzen.

PS Ich habe fast die Antwort auf die im Titel angegebene Frage vergessen. Wir haben also 62 Programmierer im Unternehmen. Wir haben 150 NotizbĂŒcher gekauft und 2.000 RezeptblĂ€tter gedruckt.


All Articles