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.