---
title: "Text lesen"
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/reading-text.html"
---

# Text lesen – LumiScan Text Reader

Ein Lesevorgang, auf Anfrage. Nichts geschieht, bis ein Client `<module>/read-text/execute` schreibt.

## Was ein Durchlauf tut

1. Lehnt den Aufruf ab, wenn dieses Modul bereits belegt ist (Statuscode `-1`).
2. **Leert das vorherige Leseergebnis**, damit ein Fehler nie alten Text zurücklässt.
3. Prüft jede Einstellung und meldet **alle** Probleme auf einmal.
4. Liest das Bild von `input/input-image-address`.
5. Wendet `input/crop` an.
6. Führt die OCR-Engine aus und veröffentlicht den Text.

## Die Einstellungen

| Knoten | Standard | Wirkung |
| --- | --- | --- |
| `input/input-image-address` | (leer) | Adresse des zu lesenden Bildknotens, z. B. `hdvisionsystems/lumiscan-cam-driver/camera1/output/image`. |
| `input/crop/startX`<br> `input/crop/startY`<br> `input/crop/width`<br> `input/crop/height` | 0 | Der zu lesende Bildausschnitt. Alles null liest das ganze Bild; eine Breite oder Höhe von null reicht bis zum rechten bzw. unteren Rand. **Schneiden Sie eng um den Text zu** - siehe [Genau lesen](https://docs.hdvisionsystems.com/de/lumiscan-text-reader-de/1.1.0/lumiscan-text-reader/reading-accurately.html). |
| `input/language` | `eng` | Mit welchem Sprachmodell gelesen wird. Die auf diesem Gerät installierten Modelle sind auf `system/languages` aufgelistet. |
| `input/engine` | `DEFAULT` | `DEFAULT` wählt die beste verfügbare Engine, `LSTM` ist die moderne Engine mit neuronalem Netz, `LEGACY` die ursprüngliche Engine mit Mustervergleich, und `COMBINED` führt beide aus. `LEGACY` lohnt sich als Versuch bei Nadeldruck- und lasergravierten Kennzeichnungen. |
| `input/layout` | `SINGLE_BLOCK` | Wie viel Struktur im Bild gesucht wird. |
| `input/preprocess` | `NONE` | Was mit dem Bild vor dem Lesen geschieht. Greifen Sie zu `GRAYSCALE`, wenn ein Farbbild ganz ohne Wörter zurückkommt; das passiert, wenn ein Foto zusammen mit dem Text im Bild ist - siehe [Genau lesen](https://docs.hdvisionsystems.com/de/lumiscan-text-reader-de/1.1.0/lumiscan-text-reader/reading-accurately.html). |
| `input/characters/mode`<br> `input/characters/allow`<br> `input/characters/deny` | `ALL_SYMBOLS`<br> (leer)<br> (leer) | Welche Zeichen zurückgegeben werden dürfen. |
| `input/min-score` | `0` | Die Konfidenz, die ein Wort erreichen muss, um gemeldet zu werden, zwischen 0 und 1. |

## Das Ergebnis lesen

`output/result` ist ein `text_read_result`-Flatbuffer.

| Feld | Bedeutung |
| --- | --- |
| `text` | Das gesamte Leseergebnis genau so, wie die Engine es erzeugt hat, Zeilen durch Zeilenumbrüche getrennt. **Nicht nach `min-score` gefiltert.** |
| `words[].text`<br> `words[].score`<br> `words[].bbox_x` … `bbox_height` | Ein erkanntes Wort, seine Konfidenz von 0 bis 1 und ein Rahmen um das Wort in den Koordinaten der gelesenen Region. |
| `word_count` | Wie viele Wörter gemeldet werden. |
| `mean_score` | Mittlere Konfidenz über die gemeldeten Wörter; 0, wenn es keine gibt. |
| `min_score` | Der angewendete Schwellwert, damit eine kurze Wortliste als "streng" und nicht als "schlechtes Bild" gelesen wird. |
| `language` | Die **tatsächlich** verwendete Sprache - nicht immer die angeforderte. |
| `engine`, `layout` | Wie tatsächlich verwendet. |
| `image_width`, `image_height` | Die gelesene Region - das ganze Bild, sofern kein Ausschnitt gesetzt war. |
| `timestamp` | Mikrosekunden seit der Epoche, wann der Lesevorgang abgeschlossen wurde. |

### `text` und `words[]` dürfen sich unterscheiden, mit Absicht

`text` ist die eigene Ausgabe der Engine, mit den Zeilenumbrüchen, die sie gefunden hat. `words[]` ist nach `min-score` gefiltert. Bei `min-score` auf `0.8` erscheint ein Wort, das die Engine mit `0.4` gemeldet hat, in `text`, aber nicht in `words[]`.

Wenn beide übereinstimmen müssen, lesen Sie `text` nur dann, wenn `word_count` die erwartete Zahl ist.

## Wenn es fehlschlägt

| Situation | Statuscode | Was Sie erhalten |
| --- | --- | --- |
| Eine andere Operation auf diesem Modul läuft | `-1` | Nichts getan; das vorherige Leseergebnis bleibt unberührt |
| Eine Einstellung ist unbrauchbar | `-2` | **Jedes** Problem in einem `status-text` benannt |
| Der Bildknoten kann nicht gelesen werden | `-3` | Leeres Ergebnis |
| Der Ausschnitt passt nicht in das Bild | `-2` | Leeres Ergebnis |
| Die OCR-Engine konnte nicht starten | `-7` | Leeres Ergebnis, mit dem Grund in `status-text` |
| Nichts Lesbares im Bild | `1` (Erfolg) | Leerer Text, `word_count` 0 |

Die letzten beiden Zeilen sind der Unterschied, der in der Produktion am meisten zählt: Ein Leser, der nicht starten konnte, meldet `-7` und nennt den Grund, während ein funktionierender Leser, der auf ein leeres Teil schaut, Erfolg ohne Wörter meldet. Früher waren beide nicht zu unterscheiden.

## Die Ausgaben gehören zum startenden Durchlauf

Jedes `execute` leert `output/result` in dem Moment, in dem es beginnt; ein Client muss ein Ergebnis also lesen, bevor er den nächsten Lesevorgang auslöst. `status-code` und `status-text` sind die Ausnahme - sie beschreiben immer den letzten Versuch.
