> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Beispiele für Extraktionsskripte

> Beispielhafte Extraktionsskripte mit dem FieldExtractor-Objekt: NER-Objekte extrahieren, XML-Abfragen ausführen und Adresskomponenten wie Postleitzahlen und Straßen parsen.

Diese Beispiele zeigen, wie Sie Extraktionsskripte mit dem `FieldExtractor`-Objekt verwenden, um Named Entities zu erkennen, XML-Abfragen auszuführen und Adresskomponenten in separate Felder aufzuteilen.

<div id="c-extraction-script-example">
  ## Beispiel für ein C#-Extraktionsskript
</div>

Das folgende C#-Beispiel führt mehrere Extraktionsmethoden auf dem `FieldExtractor`-Objekt aus. Es gleicht Schlüsselwörter und Personennamen ab, schreibt Textbereiche in Felder und führt eine XML-Abfrage nach aus zwei Wörtern bestehenden Wörterbuchphrasen aus.

```csharp theme={null}
FieldExtractor.ExtractRegularExpression( "(grant(s))|(convey to)|(grant)", "keyWords" );
FieldExtractor.ExtractWordsFromUserDictionary("dictionary", "English");
FieldExtractor.ExtractNerObjects();

// Identifizierte Objekte nach Sammlungsname abrufen
IExtractedObjects personObjects = FieldExtractor.ExtractedObjects( "NerPerson" );
IExtractedObjects keyWordsObjects = FieldExtractor.ExtractedObjects( "keyWords" );

// Nach übereinstimmender Person links vom Schlüsselwort suchen
for( int i = 0; i < keyWordsObjects.Count; i++ ) {
    IExtractedObject keyWord = personObjects.Item( i );
    IInterval span = keyWord.Span;
    IExtractedObject grantor = personObjects.Find( span.StartPos, false );
    string grantorName = grantor.Value;
    if ( grantorName.Length > 2 && grantorName != "Doug Darrell" ) {
        FieldExtractor.PutSpanToField( grantor.Span, "NlpField1" );
    }
}

// Quelltext abrufen
string sourceText = FieldExtractor.SourceText;

// Beliebigen Textbereich in Feld schreiben
FieldExtractor.PutTextToField( 0, sourceText.Length - 1, "NlpField2" );

// Eine XML-Abfrage, die nach zweigliedrigen Wörterbuchphrasen sucht
string query = "<Request> " +
    "<Query>" +
    "<Contain MaxDistance=\"1\">" +
    "<Required>" +
    "<Form><Attributes><Attribute>dictionary1</Attribute></Attributes></Form>" +
    "</Required>" +
    "<Required>" +
    "<Form><Attributes><Attribute>dictionary2</Attribute></Attributes></Form>" +
    "</Required>" +
    "</Contain>" +
    "</Query>" +
    "</Request>";

// Abfrage ausführen, Ergebnissammlung abrufen und im Feld speichern
FieldExtractor.RunQueryAndSaveToField( query, "query1", "NlpField3");

// Abfrage ausführen und Ergebnissammlung abrufen
IExtractedObjects queryResults1 = FieldExtractor.RunQuery( query, "query2" );

// Alternative Möglichkeit, nach Ausführung der Abfrage auf die Abfrageergebnisse zuzugreifen
IExtractedObjects queryResults2 = FieldExtractor.QueryResults( "query2" );
```

<div id="script-parameters">
  ## Skriptparameter
</div>

| Name             | Typ                                                    | Berechtigungen | Wert                                 |
| ---------------- | ------------------------------------------------------ | -------------- | ------------------------------------ |
| `FieldExtractor` | [IFieldExtractor](/de/flexi-capture/i-field-extractor) | Lesen          | Identifiziert Felder im Dokumenttext |

<a id="entirefield" />

<div id="sample-address-extraction-script-for-the-entire-field">
  ## Beispiel-Adress-Extraktionsskript für das gesamte Feld
</div>

Dieses Skript wird für das gesamte Quellfeld aufgerufen. Es analysiert die Adresse und extrahiert die Postleitzahl und die Straße in separate Felder.

```javascript theme={null}
// Adresse parsen
this.ParseAddress();

// Komponenten in separate Felder extrahieren
var zip = this.ExtractedObjects( "NerZipCode" );
var street = this.ExtractedObjects( "NerStreet" );

for( var i = 0; i < zip.Count; i++ ) {
    this.PutSpanToField( zip.Item(i).Span, "ZipCode" );
}

for( var j = 0; j < street.Count; j++ ) {
    this.PutSpanToField( street.Item(j).Span, "Street" );
}
```

<a id="partofafield" />

<div id="sample-address-extraction-script-for-part-of-a-field">
  ## Beispiel für ein Adress-Extraktionsskript für einen Teil eines Feldes
</div>

Dieses Skript wird für einen Teil des Quellfeldes aufgerufen. Es erkennt das NER-Objekt „Adresse“, zerlegt es in seine Bestandteile und speichert Postleitzahl und Straße in separaten Feldern.

```javascript theme={null}
// Alle NER-Objekte im Text des Felds oder Abschnitts erkennen
this.ExtractNerObjects();

// Das Adressobjekt extrahieren
var address = this.ExtractedObjects( "NerAddress" );

// Die Adresse in Komponenten aufteilen
for( var addressSpanIndex = 0; addressSpanIndex < address.Count; addressSpanIndex++ ) {
    this.PutSpanToField( address.Item(addressSpanIndex).Span, "Address" );

    // Den Namen aller Komponentensammlungen für die angegebene Adresse einen eindeutigen Präfix zuweisen
    var collectionName = "nerAddress" + String(addressSpanIndex);

    // Die Adresse extrahieren
    this.ParseAddressInPosition( collectionName, address.Item(addressSpanIndex).Span.StartPos, address.Item(addressSpanIndex).Span.EndPos );

    // Die Komponenten in separaten Feldern speichern
    var zip = this.ExtractedObjects( collectionName, "NerZipCode" );
    var street = this.ExtractedObjects( collectionName, "NerStreet" );
    RunQueryAndSaveToField
    for( var i = 0; i < zip.Count; i++ ) {
        this.PutSpanToField( zip.Item(i).Span, "ZipCode" );
    }
    for( var j = 0; j < street.Count; j++ ) {
        this.PutSpanToField( street.Item(j).Span, "Street" );
    }
}
```
