# Thumbnails aus Dokumenten extrahieren

Robot: `/document/thumbs`

🤖/document/thumbs erzeugt für jede Seite einer PDF-Datei ein Bild oder eine animierte GIF-Datei, die alle Seiten in einer Schleife durchläuft.

## Was Sie beachten sollten

* Wenn Sie eine mehrseitige PDF-Datei in mehrere Bilder umwandeln, werden alle Ergebnisbilder entsprechend der Seitenreihenfolge sortiert. Das erste Bild ist dabei das Thumbnail der ersten Dokumentseite und so weiter.
* Anhand des Schlüssels `meta.thumb_index` jedes Ergebnisbildes können Sie außerdem feststellen, welcher Seite es entspricht. Beachten Sie, dass diese Thumbnail-Indizes **bei 0 beginnen,** nicht bei 1.

Phase: ga

## Anwendungsbeispiel

Alle Seiten eines PDF-Dokuments in separate, 200 px breite Bilder umwandeln:

```json
{
  "steps": {
    "thumbnailed": {
      "use": ":original",
      "robot": "/document/thumbs",
      "width": 200,
      "resize_strategy": "fit",
      "trim_whitespace": false
    }
  }
}
```

## Parameter

* `interpolate`: Steuert, ob einzelne Robot-Anweisungsfelder Assembly Variables interpolieren.

  Standardmäßig interpolieren die meisten Robot-Anweisungsfelder Assembly Variables. Mit dem Wert `false` behandeln Sie alle Anweisungsfelder als Literaltext. Wenn Sie stattdessen einen einzelnen Feldpfad auf `false` setzen, wird nur dieses Feld als Literaltext behandelt. Bei Feldern eines bestimmten Robots, die standardmäßig als Literaltext behandelt werden, aktivieren Sie die Interpolation wieder, indem Sie hierfür `true` festlegen oder für den jeweiligen Feldpfad den Wert `true` verwenden.

  Verwenden Sie Feldnamen wie `path` oder für verschachtelte Objekte Punktpfade wie `ffmpeg.vf` als Pfadangabe.

* `output_meta`: Damit können Sie eine Reihe von Metadaten festlegen, deren Berechnung mehr CPU-Ressourcen beansprucht. Sie sind daher standardmäßig deaktiviert, damit Ihre Assemblies schnell verarbeitet werden.

  Für Bilder können Sie diesem Objekt den Eintrag `"has_transparency": true` hinzufügen, um zu ermitteln, ob das Bild transparente Bereiche enthält. Mit dem Eintrag `"dominant_colors": true` können Sie außerdem ein Array mit hexadezimalen Farbcodes aus dem Bild extrahieren.

  Für Bilder können Sie auch den Eintrag `"blurhash": true` hinzufügen, um einen [BlurHash](https://blurha.sh) zu extrahieren – eine kompakte Darstellung eines Platzhalters für das Bild, mit der Sie eine unscharfe Vorschau anzeigen können, während das vollständige Bild geladen wird.

  Für Videos können Sie den Parameter `"colorspace": true` hinzufügen, um den Farbraum des Ausgabevideos zu extrahieren.

  Für Videos können Sie außerdem den Eintrag `"interlaced": true` hinzufügen, um zu erkennen, ob das Video im Zeilensprungverfahren vorliegt. Dazu wird die ressourcenschonende ffprobe-Option `field_order` mit einem begrenzten Stichprobendurchlauf mithilfe von `idet` über die ersten Frames der Quelle kombiniert. Die Ergebnisse `interlaced` und `field_order` sowie das Diagnoseobjekt `interlace_detection` werden dabei unter `file.meta` ausgegeben. Dies ist rechenintensiv und wird entsprechend abgerechnet.

  Für Audio können Sie den Eintrag `"mean_volume": true` hinzufügen, um einen einzelnen Wert für die durchschnittliche Lautstärke der Audiodatei zu erhalten.

  Sie können diesen Parameter auch auf `false` setzen, um die Metadatenextraktion zu überspringen und das Transcoding zu beschleunigen.

* `user_meta`: Fügt jeder von diesem Robot ausgegebenen Datei benutzerdefinierte Metadaten hinzu, ohne den Dateiinhalt zu verändern.

  Die Werte werden mit allen bereits in der Eingabedatei enthaltenen `user_meta` zusammengeführt. Wenn beide Objekte denselben Schlüssel enthalten, hat der Wert dieses Robots Vorrang. Assembly Variables werden unterstützt, zum Beispiel `{ "internal_file_id": "${file.id}" }`.

* `result`: Ob die Ergebnisse dieses Steps im Assembly Status JSON enthalten sein sollen

* `queue`: Wenn Sie die Queue auf „batch“ setzen, wird die Priorität der Jobs für diesen Step manuell herabgestuft. So vermeiden Sie, Priority Job Slots für Jobs zu belegen, die keine Wartezeit von null in der Queue benötigen.

* `force_accept`: Erzwingt, dass ein Robot einen Dateityp akzeptiert, den er sonst ignorieren würde.

  Standardmäßig ignorieren Robots Dateien, deren Typ sie nicht kennen.
  [🤖/video/encode](/de/docs/robots/video-encode.md) ignoriert beispielsweise problemlos Eingabebilder.

  Wenn Sie den Parameter `force_accept` auf `true` setzen, können Sie erzwingen, dass Robots alle übergebenen Dateien akzeptieren.
  Dies führt in der Regel zu Fehlern und sollte nur zur Fehlersuche oder zur Behandlung von Grenzfällen verwendet werden.

* `ignore_errors`: Fehler in bestimmten Verarbeitungsphasen ignorieren.

  Wenn Sie hierfür `["meta"]` festlegen, ignoriert der Robot Fehler bei der Metadatenextraktion.

  Wenn Sie hierfür `["execute"]` festlegen, ignoriert der Robot Fehler während der Hauptausführungsphase.

  Wenn Sie hierfür `true` festlegen, entspricht dies `["meta", "execute"]` und Fehler in beiden Phasen werden ignoriert.

* `use`: Gibt an, welche Steps als Eingabe verwendet werden sollen.

  * Sie können beliebige Namen für Steps wählen, außer `":original"` (reserviert für von Transloadit verarbeitete Benutzer-Uploads)
  * Sie können mehrere Steps mithilfe von Arrays als Eingabe angeben:
    ```json
    {
      "use": [
        ":original",
        "encoded",
        "resized"
      ]
    }
    ```
  * Sie können Eingabe-Steps außerdem mit `as` kennzeichnen, um Robots die semantische Funktion zu übermitteln:
    ```json
    {
      "use": [
        {
          "name": ":original",
          "as": "image"
        },
        {
          "name": ":original",
          "as": "mask"
        }
      ]
    }
    ```

  > [!Tip]
  > Das ist wahrscheinlich alles, was Sie über `use` wissen müssen. Sie können sich jedoch auch die [erweiterten Anwendungsfälle](/de/docs/topics/use-parameter.md) ansehen.

* `imagemagick_stack`

* `page`: Die PDF-Seite, die Sie in ein Bild umwandeln möchten. Standardmäßig ist der Wert `null`. Das bedeutet, dass alle Seiten in Bilder umgewandelt werden.

* `page_range`: Ein Seitenbereich, der im Format `"start-end"` extrahiert werden soll (z. B. `"1-20"`). Die Extraktion beginnt mit der ersten Seite im Bereich und wird sequenziell fortgesetzt. Sie endet ordnungsgemäß, sobald eine Seite nicht vorhanden ist. Dies ist bei PDFs nützlich, bei denen die Gesamtseitenzahl nicht ermittelt werden kann.

  Dieser Parameter kann nicht zusammen mit `page` verwendet werden und wird beim GIF-Format nicht unterstützt. Wenn `page_range` festgelegt ist, muss der Robot die Gesamtseitenzahl nicht im Voraus kennen. Dies sorgt für Robustheit bei PDFs, deren Seitenzahl nicht erkannt werden kann.

* `format`: Das Format des extrahierten Bildes bzw. der extrahierten Bilder.

  Wenn Sie den Wert `"gif"` angeben, wird ein animiertes GIF erstellt, das nacheinander alle Seiten zeigt. Weitere Informationen finden Sie in [dieser Demo](/demos/document-processing/convert-all-pages-of-a-document-into-an-animated-gif.md).

* `delay`: Wenn Ihr Ausgabeformat `"gif"` ist, legt dieser Parameter fest, wie viele Hundertstelsekunden vergehen, bevor der nächste Frame der Animation angezeigt wird. Setzen Sie ihn beispielsweise auf `100`, damit zwischen den Frames des animierten GIFs 1 Sekunde vergeht.

  Wenn Ihr Ausgabeformat nicht `"gif"` ist, hat dieser Parameter keine Auswirkung.

* `stack`: Legt den Stack für das PDF-Rendering fest. Standardmäßig wird Ghostscript verwendet.

  Verwenden Sie `"pdfium"` für die seitenspezifische oder einseitige PDF-Rasterung mit hoher DPI-Zahl, wenn Ghostscript zu langsam ist oder der temporäre Speicherplatz nicht ausreicht, beispielsweise bei hochauflösenden CAD-PDFs, Bauplan-PDFs oder mehrschichtigen Immobilien-PDFs. Dieser Stack verwendet PDFium mit den Python-Bindings aus dem Paket `pypdfium2` und Pillow für das abschließende Bild-Encoding.

  Verwenden Sie `"vips"` nur, wenn Sie PDFs ausdrücklich mit libvips laden möchten. Der Overhead ist geringer, doch bei Tests mit Grundrissen und hoher DPI-Zahl war PDFium schneller und lieferte eine vergleichbare Ausgabequalität.

  Der Stack `"pdfium"` unterstützt derzeit die Ausgabe als JPG/PNG, `resize_strategy: "fit"`, die Auswahl einer bestimmten Seite mit `page` oder einseitige PDFs, deckende hexadezimale Hintergründe, `antialiasing` und `pdf_use_cropbox`.

  Der Stack `"vips"` unterstützt derzeit die Ausgabe als JPG/PNG, `resize_strategy: "fit"`, die Auswahl einer bestimmten Seite mit `page` oder einseitige PDFs sowie hexadezimale oder transparente Hintergründe.

* `width`: Breite des neuen Bildes in Pixeln. Wenn sie nicht angegeben ist, wird standardmäßig die Breite des Eingabebildes verwendet

* `height`: Höhe des neuen Bildes in Pixeln. Wenn sie nicht angegeben ist, wird standardmäßig die Höhe des Eingabebildes verwendet

* `resize_strategy`: Eine der [verfügbaren Strategien zur Größenänderung](/de/docs/topics/resize-strategies.md).

* `background`: Entweder der Hexadezimalcode oder der [Name](https://www.imagemagick.org/script/color.php#color_names) der Farbe, mit der der Hintergrund gefüllt wird (wird nur bei der Größenänderungsstrategie „pad“ verwendet).

  Standardmäßig wird der Hintergrund transparenter Bilder in Weiß geändert. Wie Sie die Transparenz bei allen Bildtypen beibehalten, erfahren Sie in [dieser Demo](/demos/image-processing/properly-preserve-transparency-across-all-image-types.md).

* `alpha`: Legt fest, wie der Alphakanal des resultierenden Bildes funktionieren soll. Gültige Werte sind `"Set"`, um Transparenz zu aktivieren, und `"Remove"`, um Transparenz zu entfernen.

  Eine Liste aller gültigen Werte finden Sie [hier](http://www.imagemagick.org/script/command-line-options.php#alpha) in der ImageMagick-Dokumentation.

* `density`: Während die Qualität im Arbeitsspeicher und die Farbtiefe des Dateiformats die Farbauflösung bestimmen, bezeichnet die Dichte eines Bildes dessen räumliche Auflösung. Sie wird in Pixeln pro Zoll angegeben und legt fest, wie weit die einzelnen Pixel auseinanderliegen beziehungsweise wie groß sie sind. Damit bestimmt sie die tatsächliche Größe des Bildes bei der Anzeige auf Geräten oder beim Drucken.

  Sie können den Dichteparameter auf einen bestimmten numerischen Wert für die Breite im Format `width` oder auf ein Breiten-Höhen-Paar im Format `width`x`height` festlegen.

  Wenn Ihr konvertiertes Bild eine niedrige Auflösung hat, versuchen Sie bitte, das Problem mithilfe des Dichteparameters zu beheben.

* `antialiasing`: Steuert, ob Antialiasing verwendet wird, um gezackte Kanten von Text oder Bildern in einem Dokument zu glätten.

* `colorspace`: Legt den Farbraum des Bildes fest. Einzelheiten zu den verfügbaren Werten finden Sie in der [ImageMagick-Dokumentation](https://www.imagemagick.org/script/command-line-options.php#colorspace).

  Wenn Sie `"RGB"` verwendet haben, empfehlen wir `"sRGB"`. ImageMagick versucht möglicherweise, anhand der Farben eines Bildes den effizientesten Wert `colorspace` zu ermitteln, und verwendet beispielsweise standardmäßig `"Gray"`. Um Farben zu erzwingen, müssen Sie daher möglicherweise diesen Parameter verwenden.

* `trim_whitespace`: Legt fest, ob zusätzlicher Leerraum um das PDF zunächst entfernt werden soll, bevor es in ein Bild konvertiert wird. Wenn Sie diesen Parameter auf `true` setzen, zeigt das Bild nur den tatsächlichen Inhalt der PDF-Seite.

  Wenn die Abmessungen des PDFs im Bild erhalten bleiben sollen, empfiehlt es sich in der Regel, diesen Parameter auf `false` zu setzen.

* `pdf_use_cropbox`: Einige PDF-Dokumente geben falsche Abmessungen an. Beispielsweise weisen sie sich als Querformat aus, obwohl sie beim Öffnen in gängigen Desktop-Readern tatsächlich im Hochformat angezeigt werden. Dies kann vorkommen, wenn für das Dokument eine CropBox definiert ist. Wenn diese Option aktiviert ist, was standardmäßig der Fall ist, bestimmt die CropBox vorrangig die Abmessungen der resultierenden Thumbnails.

* `turbo`: Aktiviert den Hochleistungsmodus für eine schnellere Dokumentenverarbeitung.

  Wenn Turbo Mode aktiviert ist, bietet er zwei wesentliche Optimierungen:

  1. **Parallele Seitenextraktion**: Bei Dokumenten mit mehr als 5 Seiten werden mehrere Prozesse parallel ausgeführt, um Seiten gleichzeitig zu extrahieren. Die Anzahl der parallelen Prozesse richtet sich nach der Dokumentgröße (bis zu 4 Prozesse bei Dokumenten mit mindestens 13 Seiten).

  2. **Verteilte Größenänderung**: Die Größe der extrahierten Seiten wird gleichzeitig auf mehreren Maschinen geändert. Dadurch lassen sich große Dokumente bis zu 20 Mal schneller verarbeiten.

  Dateien werden ausgegeben, sobald sie während der Verarbeitung verfügbar sind. Wenn Sie diesen Parameter auf `false` setzen, werden die Seiten nacheinander in einem einzigen Prozess extrahiert und die Dateien erst ausgegeben, nachdem die gesamte Verarbeitung abgeschlossen ist.

  Bei Turbo Mode erhöht sich der Preis, da die Dateigröße des Eingabedokuments für jede extrahierte Seite zusätzlich berechnet wird. Bei einseitigen Dokumenten gibt es weder Leistungsvorteile noch höhere Kosten.
