Release Notes: v1.1.0

Erstes funktionsfähiges Release von LumiScan Text Reader. Frühere Versionen registrierten die Data-Layer-Knoten der Anwendung, lieferten aber ein festes Platzhalter-Ergebnis; nichts von dem Folgenden war also vorher nutzbar.

Neu

Text lesen. <module>/read-text/execute liest den gedruckten Text in einem Kamerabild und meldet ihn doppelt: den gesamten Text, wie die Engine ihn angeordnet hat, und eine Liste pro Wort mit einer Konfidenz und einer Position für jedes Wort.

Eine Auswahl der Erkennungs-Engine, input/engine: die moderne LSTM-Engine mit neuronalem Netz, die ursprüngliche LEGACY-Engine mit Mustervergleich, beide zusammen, oder DEFAULT, damit die Engine selbst wählt. LEGACY lohnt sich als Versuch bei Nadeldruck- und lasergravierten Kennzeichnungen.

Zwölf Text-Layouts, input/layout, von SINGLE_CHAR bis zur Analyse ganzer Seiten mit Orientierungserkennung. Der Standard SINGLE_BLOCK passt zu einem zugeschnittenen Etikett.

Eine Zeichensatz-Einschränkung, input/characters/mode mit allow und deny. Eine numerische Teilenummer mit DIGITS zu lesen beseitigt die ganze Klasse der O/0- und S/5-Verwechslungen, statt sie nachträglich zu filtern - die günstigste verfügbare Verbesserung der Genauigkeit.

Ein Konfidenz-Schwellwert, input/min-score, damit ein Steuerungsprogramm nie ein Wort sieht, dem die Engine kaum traute. Das Ergebnis meldet den angewendeten Schwellwert, sodass sich eine kurze Wortliste von einem schlechten Bild unterscheiden lässt.

Eine Region of Interest pro Lesevorgang, input/crop, die zugleich die größte verfügbare Verbesserung der Genauigkeit und der Geschwindigkeit ist.

Hochladbare Sprachmodelle. Englisch und das Orientierungsmodell werden mit der Anwendung ausgeliefert, und Sie fügen weitere hinzu, indem Sie .traineddata-Dateien nach …​/activeConfiguration/lumiscan-text-reader/tessdata hochladen. Hochladen fügt Sprachen hinzu - die mitgelieferten werden immer ebenfalls durchsucht, Englisch funktioniert also weiter, und Sie kopieren unsere Dateien nie irgendwohin. Der Dateiname ist der Sprachcode, es gibt also nichts nachzuschlagen: Laden Sie deu.traineddata hoch und setzen Sie input/language auf deu. Ein Modell ist beim allernächsten Lesevorgang nutzbar, ohne Neustart. system/tessdata-dirs zeigt jedes durchsuchte Verzeichnis, system/languages, was in ihnen gefunden wurde, und system/set-tessdata-dir richtet das Upload-Verzeichnis woandershin - zum Beispiel auf einen USB-Stick.

Mehrere Module, jedes mit eigenen Einstellungen und Ergebnissen, sodass eine Installation mehrere Kameras beobachten kann. Eine Lizenz deckt zehn Module ab.

Ein Status bei jeder Operation: output/status-code und output/status-text, wobei ein negativer Code immer bedeutet, dass der Durchlauf fehlgeschlagen ist und nichts erzeugt hat.

Gut zu wissen

Text ist kein Code. Ein OCR-Lesevorgang liefert immer etwas, und eine Fehllesung sieht genauso aus wie ein korrektes Leseergebnis. Setzen Sie input/characters/mode und input/min-score, bevor Sie sich in der Produktion auf ein Leseergebnis verlassen - siehe Genau lesen.

Ein leeres Leseergebnis bedeutet, dass kein Text gefunden wurde, und sonst nichts. Jeder andere Grund, aus dem ein Durchlauf nichts erzeugen könnte - eine nicht erreichbare Kamera, eine unbrauchbare Einstellung, eine Engine, die nicht starten konnte -, wird abgefangen und als negativer Statuscode gemeldet. Ein Leser, der nicht starten konnte, meldet -7 und nennt den Grund, statt wie ein funktionierender Leser vor einem leeren Teil auszusehen.

Eine nicht installierte Sprache wird durch Englisch ersetzt und nicht abgelehnt. Ein Lesevorgang validiert die Sprache vorab und lehnt eine nicht installierte ab, unter Nennung dessen, was verfügbar ist; und verschwindet ein Modell danach, meldet output/result.language, was tatsächlich verwendet wurde. Lesen Sie dieses Feld, nicht Ihre eigene Eingabe, wenn Sie wissen müssen, wie ein Leseergebnis zustande kam. Siehe Sprachmodelle.

Jede ungültige Eingabe wird auf einmal gemeldet, und jede Meldung nennt den zu ändernden Knoten statt eines internen Feldnamens - min-score must be between 0 and 1, got 1.5.

Der gesamte Text wird nicht nach dem Konfidenz-Schwellwert gefiltert, nur die Wortliste. Sie beantworten unterschiedliche Fragen und dürfen sich berechtigterweise unterscheiden.