---
title: "Data-Layer-Referenz"
product: "LumiScan Text Reader"
component: "lumiscan-text-reader-de"
version: "1.1.0"
display_version: "1.1.0.6"
latest_version: true
language: "de"
url: "https://docs.hdvisionsystems.com/de/lumiscan-text-reader-de/1.1.0/lumiscan-text-reader/datalayer-reference.html"
---

# Data-Layer-Referenz – LumiScan Text Reader

Jede Adresse unten ist relativ zu

```
hdvisionsystems/lumiscan-text-reader/
```

## Data Layer {#data-layer}

LumiScan Text Reader bietet seine Funktionen auf dem Data Layer unter `hdvisionsystems/lumiscan-text-reader` an.

Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan Text Reader den [ctrlX Data Layer](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/ctrlx-data-layer.html).

Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan Text Reader [LumiScan Keryx](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/keryx.html).

Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan Text Reader bietet:

- [Execute-Methoden](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/execute.html)
- ein [Stream](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/streams.html)-Abonnement auf eine Quelle (experimentell)

Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in [LumiScan Keryx](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/index.html) beschrieben.

## Anwendungsweite Knoten

| Adresse | Typ | Zugriff | Beschreibung |
| --- | --- | --- | --- |
| `system/modules` | string[] | lesen | Die Module, die gerade existieren |
| `system/create-module/execute` | Methode | schreiben | Ein Modul hinzufügen |
| `system/create-module/input/module-id` | string | lesen/schreiben | Name für das neue Modul |
| `system/remove-module/execute` | Methode | schreiben | Ein Modul entfernen |
| `system/remove-module/input/module-id` | string | lesen/schreiben | Zu entfernendes Modul |
| `system/save-current-modules/execute` | Methode | schreiben | Die Modulliste dauerhaft speichern |
| `system/save-module-inputs/execute` | Methode | schreiben | Die Einstellungen eines Moduls dauerhaft speichern |
| `system/save-module-inputs/input/module-id` | string | lesen/schreiben | Zu speicherndes Modul |
| `system/tessdata-dir` | string | lesen | Wohin Sie eigene Modelle hochladen; das erste durchsuchte Verzeichnis |
| `system/tessdata-dirs` | string[] | lesen | Jedes durchsuchte Verzeichnis, in Reihenfolge |
| `system/languages` | string[] | lesen | In allen gefundene Sprachcodes |
| `system/set-tessdata-dir/execute` | Methode | schreiben | Ein anderes Upload-Verzeichnis verwenden |
| `system/set-tessdata-dir/input/tessdata-dir` | string | lesen/schreiben | Verzeichnis, in das hochgeladen und das zuerst durchsucht wird |
| `system/refresh-languages/execute` | Methode | schreiben | Die Verzeichnisse neu lesen und `languages` aktualisieren |
| `system/meta/subscription-schema` | string | lesen | Was der Knoten enthalten muss, den ein Modul abonniert, als JSON Schema (draft-04) seiner JSON-Form: hier ein `stream_image`, der Knoten `frame` des Stream-Ordners, mit `lineage` und `image`. Für jedes Modul dasselbe. Experimentell |

Jede Methode stellt außerdem `output/status-code` und `output/status-text` bereit.

`system/tessdata-dir`, `system/tessdata-dirs` und `system/languages` sind schreibgeschützte Ausgaben von `set-tessdata-dir` und `refresh-languages`, die Auflistung kann also nie ein Verzeichnis beschreiben, das nicht in Gebrauch ist. Beachten Sie, dass `languages` nur eine Auflistung ist: Das Lesen mit einem neu hochgeladenen Modell wartet nicht auf ein Refresh. Siehe [Sprachmodelle](https://docs.hdvisionsystems.com/de/lumiscan-text-reader-de/1.1.0/lumiscan-text-reader/language-models.html).

## Knoten pro Modul

Alle Adressen unten liegen unter `<module-id>/read-text/`.

| Adresse | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `execute` | Methode | - | Einen Lesevorgang ausführen |
| `input/input-image-address` | string | (leer) | Adresse des zu lesenden Bildknotens |
| `input/crop/startX` | uint16 | 0 | Linker Rand der zu lesenden Region |
| `input/crop/startY` | uint16 | 0 | Oberer Rand |
| `input/crop/width` | uint16 | 0 | Breite; 0 reicht bis zum rechten Rand |
| `input/crop/height` | uint16 | 0 | Höhe; 0 reicht bis zum unteren Rand |
| `input/language` | string | `eng` | Ein Code aus `system/languages` |
| `input/engine` | string | `DEFAULT` | `DEFAULT`, `LSTM`, `LEGACY` oder `COMBINED` |
| `input/layout` | string | `SINGLE_BLOCK` | Siehe die Tabelle unten |
| `input/preprocess` | string | `NONE` | `NONE`, `GRAYSCALE` oder `BINARIZE_OTSU` |
| `input/characters/mode` | string | `ALL_SYMBOLS` | `ALL_SYMBOLS`, `ALL_LETTERS`, `DIGITS`, `LOWERCASE_LETTERS`, `UPPERCASE_LETTERS`, `SPECIAL_SYMBOLS` oder `CUSTOM` |
| `input/characters/allow` | string | (leer) | Dem Satz hinzugefügte Zeichen |
| `input/characters/deny` | string | (leer) | Aus dem Satz entfernte Zeichen |
| `input/min-score` | float64 | 0.0 | Konfidenz, die ein Wort erreichen muss, um gemeldet zu werden, 0 bis 1 |
| `output/result` | flatbuffers | leer | `text_read_result` - das Leseergebnis |
| `output/status-code` | int16 | 0 | Ausgang als Zahl; negativ ist immer ein Fehler |
| `output/status-text` | string | (leer) | Ausgang in Worten |

### Akzeptierte Werte für `input/layout`

|   |   |
| --- | --- |
| `SINGLE_BLOCK` | Ein einheitlicher Textblock - der Standard |
| `SINGLE_LINE` | Genau eine Zeile |
| `SINGLE_WORD` | Genau ein Wort |
| `SINGLE_CHAR` | Genau ein Zeichen |
| `RAW_LINE` | Eine Zeile, ohne Strukturanalyse |
| `AUTO` | Textregionen im ganzen Bild finden und segmentieren |
| `AUTO_OSD` | Wie `AUTO`, und Orientierung und Schrift erkennen |
| `SPARSE` | Text finden, wo immer er auftritt, ohne Annahme eines Layouts |
| `SPARSE_OSD` | Wie `SPARSE`, und die Orientierung erkennen |
| `SINGLE_COLUMN` | Eine einzelne Textspalte |
| `SINGLE_BLOCK_VERT` | Ein einzelner Block vertikal ausgerichteten Textes |
| `CIRCLE_WORD` | Ein einzelnes, im Kreis angeordnetes Wort |

## Bild-Stream-Knoten pro Modul (experimentell)

Alle Adressen unten liegen unter `<module-id>/`, neben `read-text/`. Der Stream liest jedes Bild mit den Eingaben von `read-text`, allen außer `input/input-image-address`. Siehe [Text auf einem Bild-Stream lesen](https://docs.hdvisionsystems.com/de/lumiscan-text-reader-de/1.1.0/lumiscan-text-reader/processing-an-image-stream.html).

| Adresse | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `control/subscribe/input/enable` | bool | wie angewendet | Stream-Modus: `true` lässt den Stream laufen, `false` stoppt ihn |
| `control/subscribe/input/address` | string | wie angewendet | Die eine Quelle, der Stream-Ordner einer Kamera, z. B. `hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream`. Eine andere Adresse ersetzt sie |
| `control/subscribe/input/tag` | string | wie angewendet | Das Tag auf den Ergebnissen des Moduls: Der Schritt des Moduls in der Lineage jedes Stream-Ergebnisses trägt es. Leer: die Modul-ID, z. B. `module-1`. Ein neues Tag behält die Quelle; das nächste Ergebnis trägt es |
| `control/subscribe/input/queue-size` | uint32 | wie angewendet | Bilder, die warten dürfen, während eines gelesen wird, 1-64 |
| `control/subscribe/input/keep-latest-output` | bool | wie angewendet | `true` schreibt jedes Stream-Ergebnis zusätzlich nach `read-text/output/result` |
| `control/subscribe/execute` | Methode | - | Die Eingaben von `control/subscribe` gemeinsam prüfen, in `<module-id>.json` als `stream` speichern und dann anwenden. Eine Eingabe allein zu schreiben ändert nichts |
| `control/unsubscribe/execute` | Methode | - | Die von `control/unsubscribe/input/address` genannte Quelle entfernen, was den Stream-Modus beendet; das Tag bleibt. Wird wie ein Subscribe in `<module-id>.json` gespeichert |
| `control/unsubscribe/input/address` | string | (leer) | Die zu entfernende Quelle, wie `setting/stream/address` sie zeigt |
| `setting/stream/{enable, address, tag, queue-size, keep-latest-output}` | wie die Eingaben | `stream` in `<module-id>.json` | Was `control/subscribe/execute` oder `control/unsubscribe/execute` zuletzt angewendet hat. Schreibgeschützt |
| `setting/settings-hash` | string | - | Hash dessen, womit die Ergebnisse erzeugt werden, 16 Hex-Ziffern. Schreibgeschützt |
| `control/subscribe/output/stream/active` | bool | `false` | `true`, solange der Stream läuft |
| `control/subscribe/output/stream/result` | flatbuffers | leer | `stream_texts` - eines pro gelesenem Bild. Abonnieren, um jedes zu erhalten |
| `control/subscribe/output/stream/last-failure` | string | (leer) | Warum das letzte Bild, das nicht gelesen werden konnte, fehlgeschlagen ist, mit der Quelle über ihre Adresse |
| `control/subscribe/output/stream/statistics/elapsed-ms` | uint64 | `0` | Millisekunden seit dem Start des Streams |
| `control/subscribe/output/stream/statistics/received-frames` | uint64 | `0` | Bilder, die das Abonnement geliefert hat |
| `control/subscribe/output/stream/statistics/processed-frames` | uint64 | `0` | Gelesene Bilder, jedes mit einem Ergebnis |
| `control/subscribe/output/stream/statistics/skipped-frames` | uint64 | `0` | Aus der Warteschlange verdrängte Bilder, oder wartende, als die Quelle ersetzt oder entfernt wurde |
| `control/subscribe/output/stream/statistics/failed-frames` | uint64 | `0` | Bilder, die nicht gelesen werden konnten |
| `control/subscribe/output/stream/statistics/lost-frames` | uint64 | `0` | Bilder, die verloren gingen, bevor sie eintrafen |
| `control/subscribe/output/stream/statistics/processing-us` | uint64 | `0` | Lesezeit aller gelesenen Bilder, summiert, Mikrosekunden |

Die Eingaben von `control/subscribe` beginnen mit dem, was angewendet ist, und nur `control/subscribe/execute` wendet sie an. `control/subscribe/execute` wird bei Stream-Modus ohne Adresse oder einer Warteschlangengröße außerhalb von 1-64 abgelehnt, `control/unsubscribe/execute` bei einer Adresse, die nicht die Quelle ist. Kann `<module-id>.json` nicht geschrieben werden, antworten beide mit `DL_CREATION_FAILED` (auf einem PC `CreationFailed`) und ändern nichts.

## Der Ergebnis-Flatbuffer

`output/result` ist registriert als `types/hdvisionsystems/lumiscan-text-reader/text_read_result`.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `text` | string | Das gesamte Leseergebnis, Zeilen durch Zeilenumbrüche getrennt. **Nicht nach `min_score` gefiltert** |
| `words[].text` | string | Ein erkanntes Wort |
| `words[].score` | float | Seine Konfidenz, 0 bis 1 |
| `words[].bbox_x` | int | Rahmen um das Wort, in den Koordinaten der gelesenen Region |
| `words[].bbox_y` | int |   |
| `words[].bbox_width` | int |   |
| `words[].bbox_height` | int |   |
| `word_count` | uint | Wie viele Wörter gemeldet werden |
| `mean_score` | float | Mittlere Konfidenz über die gemeldeten Wörter; 0, wenn es keine gibt |
| `min_score` | float | Der angewendete Schwellwert |
| `language` | string | Die **tatsächlich** verwendete Sprache |
| `engine` | string | Die tatsächlich verwendete Engine |
| `layout` | string | Das tatsächlich verwendete Layout |
| `image_width` | uint | Die gelesene Region |
| `image_height` | uint |   |
| `timestamp` | ulong | Mikrosekunden seit der Epoche, wann der Lesevorgang abgeschlossen wurde |

`control/subscribe/output/stream/result` ist registriert als `types/hdvisionsystems/lumiscan-text-reader/stream_texts`: ein `hdv.stream.StreamTexts` mit `lineage`, woher das Bild stammt, und `result`, der Tabelle oben.

## Mit einem Beispiel beginnen (PC) {#generate-settings}

Auf einem PC schreibt der Text Reader ein Beispiel seiner Einstellungen in einen Ordner Ihrer Wahl und beendet sich, ohne zu starten. Unter Windows:

```shell
lumiscan-text-read --generate-settings C:\work\text-reader-settings
```

Ohne Ordner (`-g` allein) schreibt er in den aktuellen Ordner. Das Beispiel ist die Anwendungs-Einstellungsdatei `lumiscan-text-reader.json`, die das Modul `module-1` nennt, und die Moduldatei `module-1.json` daneben: jede Eingabe von `read-text` mit ihrem Standardwert, außer der Bildadresse, die die `camera1` des Cam Driver ist. Daneben, in `schemas/`, liegen die Schemas, die die beiden Dateien in `"$schema"` nennen: `lumiscan-text-reader.schema.json`, `lumiscan-text-reader-module.schema.json` und `stream.schema.json` für den Abschnitt `stream` einer Moduldatei. Sie beschreiben jeden Schlüssel, den der Text Reader liest - jede Eingabe von `read-text` mit ihrem Typ, ihrem Standardwert und dem Bereich, den ein Durchlauf akzeptiert -, sodass ein Editor, der JSON Schema versteht, die Dateien prüfen und zeigen kann, was jeder Wert bedeutet. Kopieren Sie den Ordner `schemas` zusammen mit den Dateien: `system/save-module-inputs` behält das `"$schema"` einer Moduldatei, die es speichert. Vorhandene Dateien werden nie überschrieben: Liegt eine davon bereits im Ordner, wird nichts geschrieben, und der Text Reader nennt welche.

Der Text Reader nennt dann den Ordner, aus dem er seine Einstellungen liest, unter Windows standardmäßig `C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-text-read\etc\lumiscan-text-reader`. Bearbeiten Sie das Beispiel, kopieren Sie es dorthin und starten Sie den Text Reader. Siehe auch [Speicherorte der Dateien](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/keryx.html#files).
