Sprachmodelle
Der Leser braucht ein Tesseract-Sprachmodell - eine .traineddata-Datei -, um überhaupt etwas zu
lesen.
Welche Modelle installiert sind, gilt anwendungsweit: Zehn Module, die dieselben Etiketten lesen,
wollen dieselben Modelle, also liegt die Einstellung auf system/ und nicht einmal pro Modul.
Auf ctrlX OS wird ein Modell über die ctrlX-Dateischnittstelle hochgeladen.
Auf einem PC bedeutet ein Modell hochzuladen, seine Datei in das Verzeichnis zu kopieren, das
system/tessdata-dir nennt.
hdvisionsystems/lumiscan-text-reader/system/ ├── tessdata-dir where you upload your own models read-only ├── tessdata-dirs every directory searched, in order read-only ├── languages the codes found across all of them read-only ├── set-tessdata-dir/ changes the upload directory └── refresh-languages/ re-reads the directories
Zwei Verzeichnisse, der Reihe nach durchsucht
-
Ihr Upload-Verzeichnis,
tessdata-dir. Standardmäßig ist das der Ordnertessdataim Konfigurationsverzeichnis der Anwendung, neben der Konfigurationsdatei der Anwendung. Er wird beim ersten Start leer angelegt.Plattform Standard- tessdata-dirctrlX OS
/var/snap/rexroth-solutions/common/solutions/activeConfiguration/lumiscan-text-reader/tessdataPC (Windows)
%APP_RESOURCE_DIR%\etc\lumiscan-text-reader\tessdata; ohneAPP_RESOURCE_DIRC:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-text-read\etc\lumiscan-text-reader\tessdata -
Die in der Anwendung mitgelieferten Modelle, die schreibgeschützt sind und immer durchsucht werden.
tessdata-dirs zeigt beide, in der Reihenfolge, in der sie durchsucht werden.
|
Hochladen fügt Sprachen hinzu, es entfernt nie die mitgelieferten. Sie müssen unsere Dateien nirgendwohin kopieren, und Englisch funktioniert weiter, was immer Sie tun. Ein Modell, das unter demselben Namen wie ein mitgeliefertes hochgeladen wird, gewinnt; so würden Sie Englisch durch ein anderes englisches Modell ersetzen. |
Was installiert ist
Englisch (eng) und osd. Zusammen etwa 34 MB, weshalb nur diese beiden mitgeliefert werden - jede
zusätzliche Sprache würde die Anwendung für jeden Kunden vergrößern, und über das Hochladen erhalten
Sie den Rest.
|
|
Eine Sprache hinzufügen
-
Laden Sie das Modell herunter. Das Tesseract-Projekt veröffentlicht sie unter
github.com/tesseract-ocr/tessdata_fastundgithub.com/tesseract-ocr/tessdata_best.fastist kleiner und schneller,bestgenauer;fastist der richtige Standard für Bauteilkennzeichnungen. -
Laden Sie es hoch in das Verzeichnis, das
system/tessdata-dirnennt: auf ctrlX OS über die ctrlX-Dateischnittstelle, auf einem PC, indem Sie die Datei dorthin kopieren. -
Verwenden Sie es: Setzen Sie
read-text/input/languageauf den Dateinamen ohne.traineddata.
upload deu.traineddata -> <tessdata-dir>/deu.traineddata write module-1/read-text/input/language = "deu" write module-1/read-text/execute
Es gibt keinen Code nachzuschlagen
Der Dateiname ist der Sprachcode. Tesseract verlangt, dass das Modell für die Sprache deu
deu.traineddata heißt; was immer Sie hochladen, bestimmt also, was Sie eintippen. Sie müssen nie
einen Code in einer Tabelle suchen, und Sie dürfen die Datei nie umbenennen.
|
Die Codes haben nicht alle drei Buchstaben. Chinesisch ist |
| Sprache | Hochzuladende Datei | input/language |
|---|---|---|
Deutsch |
|
|
Französisch |
|
|
Chinesisch, vereinfacht |
|
|
Japanisch |
|
|
Kein Neustart, und auch kein Refresh
Ein hochgeladenes Modell ist beim allernächsten read-text nutzbar. Der Leser sucht die Datei bei
jedem Durchlauf auf dem Datenträger, sodass eine neue gefunden wird, ohne dass etwas aktualisiert oder
neu gestartet werden muss.
|
Das gilt auch für das Ersetzen eines Modells, das bereits in Gebrauch ist. Die Erkennungs-Engine
wird einmal pro Modul aufgebaut und behalten, denn sie aufzubauen bedeutet, das Modell zu laden -
23 MB für Englisch -, und das bei jedem Lesen zu tun machte einen kleinen Lesevorgang dreimal langsamer als
nötig. Sie wird neu aufgebaut, wann immer sich Sprache, Verzeichnis, Zeichensatz, Engine oder Layout
ändern, und wann immer sich die Modelldatei selbst geändert hat: Vor jedem Lesen prüft der Leser Größe
und Zeitstempel der Datei, und wenn sich eines davon geändert hat, vergleicht er den Inhalt der Datei
mit dem, aus dem die Engine aufgebaut wurde. Eine Datei, die an Ort und Stelle überschrieben wird,
unter demselben Namen im selben Verzeichnis, wird also beim nächsten Die Prüfung kostet einen Dateistatus pro Lesevorgang. Ein geändertes Modell wird einmal gehasht, etwa
40 ms für 23 MB, und dann geladen wie jedes neue Modell; das Protokoll meldet |
system/languages ist das Einzige, das sich nicht von selbst aktualisiert - es ist eine Auflistung,
die beim Start, durch set-tessdata-dir und durch refresh-languages aktualisiert wird:
write system/refresh-languages/execute read system/languages -> [chi_sim, deu, eng, osd]
Rufen Sie es auf, damit die Auflistung mit dem Verzeichnis übereinstimmt. Zum Lesen brauchen Sie es nicht.
Mehrere Sprachen gleichzeitig
input/language ist eine Eingabe pro Modul, sodass jedes Modul in seiner eigenen Sprache aus
demselben gemeinsamen Satz von Modellen liest:
module-1/read-text/input/language = "eng" module-2/read-text/input/language = "deu" module-3/read-text/input/language = "chi_sim"
Jedes Modul meldet in seinem eigenen output/result.language, was es tatsächlich verwendet hat.
Zwischen ihnen wird nichts geteilt außer den Modellen auf dem Datenträger.
Ein anderes Upload-Verzeichnis verwenden
set-tessdata-dir richtet das erste Suchverzeichnis woandershin. Auf ctrlX OS etwa auf einen
USB-Stick, da die Anwendung die Schnittstelle removable-media hat:
write system/set-tessdata-dir/input/tessdata-dir = "/media/usb/tessdata"
Unter Windows etwa auf einen Ordner auf einem anderen Laufwerk:
write system/set-tessdata-dir/input/tessdata-dir = "D:\models\tessdata"
Dann, auf beiden:
write system/set-tessdata-dir/execute read system/set-tessdata-dir/output/status-code -> 1 read system/languages -> [deu, eng, fra, osd]
Die mitgelieferten Modelle bleiben verfügbar, ein leeres Verzeichnis wird also akzeptiert - sinnvoll, wenn Sie kurz vor dem Hochladen darauf zeigen. Die Wahl wird gespeichert und übersteht einen Neustart.
|
Anders als bei jedem anderen Pfad, den diese Anwendung entgegennimmt, wird hier ein absoluter Pfad außerhalb des Konfigurationsverzeichnisses akzeptiert. Sprachmodelle sind große Dateien von Dritten, die berechtigterweise dort bleiben, wo sie sind - auf ctrlX OS außerhalb der ctrlX-Solution -, statt in das Konfigurationsverzeichnis kopiert zu werden. Die Anwendung listet und liest sie nur. |
osd muss neben der Sprache liegen
Tesseract löst pro Durchlauf ein Verzeichnis auf, die Layouts AUTO_OSD und SPARSE_OSD brauchen
osd.traineddata also im selben Verzeichnis wie das Sprachmodell - nicht bloß irgendwo im Suchpfad.
Laden Sie deu.traineddata allein hoch, wählen Sie AUTO_OSD, und der Durchlauf wird mit genau
dieser Begründung abgelehnt:
error: invalid input: layout AUTO_OSD also needs osd.traineddata beside 'deu.traineddata' in '<tessdata-dir>'; copy it from '<shipped dir>', or choose a layout that does not detect orientation
Laden Sie entweder osd.traineddata neben Ihr Modell hoch, oder verwenden Sie ein Layout, das keine
Orientierung erkennt. Der Standard, SINGLE_BLOCK, tut das nicht - das Thema kommt nur auf, wenn Sie
Orientierungserkennung angefordert haben.
Wenn set-tessdata-dir ablehnt
Es validiert, bevor es irgendetwas veröffentlicht; ein abgelehnter Aufruf lässt tessdata-dir,
tessdata-dirs und languages also genau so, wie sie waren - Sie sehen nie ein Verzeichnis und eine
Auflistung, die sich widersprechen.
| Situation | status-code |
|---|---|
|
|
Der Pfad ist kein Verzeichnis |
|
Umgeschaltet, aber die Wahl konnte nicht gespeichert werden |
|
Ein leeres Verzeichnis wird nicht abgelehnt. Das war früher so, als dies der einzige Ort war, von dem Modelle gelesen wurden, und ein leeres Verzeichnis bedeutete, dass jeder Lesevorgang stillschweigend auf Englisch zurückfiel. Die mitgelieferten Modelle werden jetzt immer durchsucht.
Die falsche Sprache
read-text validiert die Sprache, bevor es läuft, und lehnt eine nicht installierte mit
status-code -2 ab, unter Nennung jedes durchsuchten Verzeichnisses und dessen, was verfügbar ist:
error: invalid input: language 'fra' has no fra.traineddata in any model directory
('<tessdata-dir>', '<shipped dir>'); available: eng, osd. Upload fra.traineddata to
'<tessdata-dir>' - the file name is the language code
Verschwindet ein Modell zwischen dieser Prüfung und dem Lesen - jemand hat den USB-Stick gezogen -,
meldet output/result.language, was tatsächlich verwendet wurde, und status-text sagt es ebenfalls:
ok: 4 word(s), mean score 0.91 (eng, SINGLE_BLOCK) - NOTE: language 'deu' is not installed, read with 'eng' instead
|
Lesen Sie |