> For the complete documentation index, see [llms.txt](https://docs.mindee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mindee.com/v2/fr/modeles-extraction/sdk-integration/extraction-result.md).

# Résultat Extraction

## Accéder aux champs du Schéma de données

Les champs sont entièrement dynamiques et dépendent de votre modèle [Aperçu du Schéma de données](/v2/fr/modeles-extraction/data-schema.md).

Dans la bibliothèque cliente, vous aurez accès aux différents champs sous la forme d’un type de mappage clé-valeur (celui de Python `dict`, celui de Java `HashMap`, etc.).

L’accès à un champ se fait via son nom dans le Schéma de données.

Chaque champ sera de l’un des types suivants :

* Une seule valeur, `SimpleField` classe.
* Un objet imbriqué (sous-champs), `ObjectField` classe.
* Une liste ou un tableau de champs, `ListField` classe.

## `SimpleField` - Champ à valeur unique

Type de champ de base ayant l’ `value` attribut.\
Voir la [#value](#value "mention") section ci-dessous.

De plus, la `Simplefield` classe possède [#confidence](#confidence "mention") et [#locations](#locations "mention") attributs.

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```python
from mindee.v2 import ExtractionResponse

def handle_response(response: ExtractionResponse):
    fields = response.inference.result.fields

    my_simple_field = fields.get_simple_field("my_simple_field")
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```javascript
handleResponse(response) {
  const fields = response.inference.result.fields;

  const simpleField = fields.getSimpleField("my_simple_field");
}
```

{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```php
use Mindee\V2\Product\Extraction\ExtractionResponse;

public function handleResponse(ExtractionResponse $response)
{
    $fields = $response->inference->result->fields;

    $simpleField = $fields->getSimpleField('my_simple_field');
}
```

{% endtab %}

{% tab title="Ruby" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```ruby
def handle_response(response)
  fields = response.inference.result.fields

  simple_field = fields.get_simple_field('my_simple_field')
end
```

{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```java
import com.mindee.v2.product.extraction.ExtractionResponse;
import com.mindee.parsing.v2.field.SimpleField;

public void handleResponse(ExtractionResponseresponse) {
  var fields = response.getInference().getResult().getFields();

  SimpleField simpleField = fields.getSimpleField("my_simple_field");
}
```

{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```csharp
using Mindee.V2.Product.Extraction;
using Mindee.V2.Parsing.Inference.Field;

public void HandleResponse(ExtractionResponse response)
{
    InferenceFields fields = response.Inference.Result.Fields;

    SimpleField mySimpleField = fields["my_simple_field"].SimpleField;
}
```

{% endtab %}
{% endtabs %}

### `value`

La valeur de données extraite.\
Types possibles : chaîne, nombre (entier ou à virgule flottante), booléen.\
Tous les types peuvent être nuls.

Sur la plateforme, vous pouvez spécifier les types date et classification.\
Ceux-ci sont renvoyés sous forme de chaînes.

Pour les langages à typage statique (C#, Java), la bibliothèque cliente renverra toujours un `double` double nullable pour les valeurs numériques.

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Node.js" %}
L’ `value` attribut est un `Object` type Object en interne.

Vous devriez utiliser les accesseurs typés explicitement ; c’est recommandé pour plus de clarté.\
Consultez votre Schéma de données pour savoir quel accesseur typé utiliser.

Si le mauvais type d’accesseur est utilisé, une exception sera levée, par exemple :

```
"La valeur n’est pas un nombre"
```

{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Ruby" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Java" %}
L’ `value` attribut est un `Object` type Object en interne.

Vous devrez déclarer explicitement le type, sinon le code ne se compilera probablement pas.\
Consultez votre Schéma de données pour savoir quel type déclarer.

Si la mauvaise méthode de type est utilisée, une exception sera levée, par exemple :

```
ClassCast class java.lang.String cannot be cast to class java.lang.Double
```

{% endtab %}

{% tab title=".NET" %}
L’ `Valeur` attribut est un `dynamique` type Object en interne.

Vous devriez déclarer explicitement le type ; c’est recommandé pour plus de clarté.\
Consultez votre Schéma de données pour savoir quel type déclarer.

Si le mauvais type est déclaré, une exception sera levée, par exemple :

```
RuntimeBinderException : Cannot implicitly convert type 'string' to 'double'
```

{% endtab %}
{% endtabs %}

## `ObjectField` - Champ objet imbriqué

Champ ayant un `champs` attribut qui est une table de hachage (celle de Python `dict`, celui de Java `HashMap`, etc.) de sous-champs.\
Voir la [#fields](#fields "mention") section ci-dessous.

De plus, la `ObjectField` classe possède [#confidence](#confidence "mention") et [#locations](#locations "mention") attributs.

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```python
from mindee.v2 import ExtractionResponse

def handle_response(response: ExtractionResponse):
    fields = response.inference.result.fields

    object_field = fields.get_object_field("my_object_field")
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```javascript
handleResponse(response) {
  const fields = response.inference.result.fields;

  const objectField = fields.getObjectField("my_object_field");
}
```

{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```php
use Mindee\V2\Product\Extraction\ExtractionResponse;

public function handleResponse(ExtractionResponse $response)
{
    $fields = $response->inference->result->fields;

    $objectField = $fields->getObjectField('my_object_field');
}
```

{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```java
import com.mindee.v2.product.extraction.ExtractionResponse;
import com.mindee.parsing.v2.field.ObjectField;

public void handleResponse(ExtractionResponseresponse) {
  var fields = response.getInference().getResult().getFields();

  ObjectField objectField = fields.getObjectField("my_object_field");
}
```

{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```csharp
using Mindee.V2.Parsing.Inference.Field;

public void HandleResponse(ExtractionResponse response)
{
    InferenceFields fields = response.Inference.Result.Fields;

    ObjectField myObjectField = fields["my_object_field"].ObjectField;
}
```

{% endtab %}
{% endtabs %}

### `champs`

Les sous-champs sous forme de type de mappage clé-valeur (Python `dict`, Java `HashMap`, etc.).

L’accès à un sous-champ se fait via son nom dans le Schéma de données.

Chaque sous-champ sera un [#single-value-field-simplefield](#single-value-field-simplefield "mention")ou un [#listfield-list-of-fields](#listfield-list-of-fields "mention").

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Ruby" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}
{% endtabs %}

## `ListField` - Liste de champs

Champ ayant un `items` attribut qui est une liste de champs.\
Voir la [#items](#items "mention") section ci-dessous.

De plus, la `ListField` classe possède un [#confidence](#confidence "mention") attribut.

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```python
from mindee.v2 import ExtractionResponse

def handle_response(response: ExtractionResponse):
    fields = response.inference.result.fields

    my_list_field = fields.get_list_field("my_list_field")
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```javascript
handleResponse(response) {
  const fields = response.inference.result.fields;

  const listField = fields.getListField("my_list_field");
}
```

{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```php
use Mindee\V2\Product\Extraction\ExtractionResponse;

public function handleResponse(ExtractionResponse $response)
{
    $fields = $response->inference->result->fields;
    
    $listField = $fields->getListField('my_list_field');
}
```

{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```java
import com.mindee.v2.product.extraction.ExtractionResponse;
import com.mindee.parsing.v2.field.ListField;

public void handleResponse(ExtractionResponseresponse) {
  var fields = response.getInference().getResult().getFields();

  ListField listField = fields.getListField("my_list_field");
}
```

{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```csharp
using Mindee.V2.Parsing.Inference.Field;

public void HandleResponse(ExtractionResponse response)
{
    InferenceFields fields = response.Inference.Result.Fields;

    ListField myListField = fields["my_list_field"].ListField;
}
```

{% endtab %}
{% endtabs %}

### `items`

Liste de champs sous forme de tableau de longueur variable (Python `list`, JavaScript `Array`, Java `List`, etc.).

Chaque élément de la liste sera l’un des suivants :

* [#simplefield-single-value-field](#simplefield-single-value-field "mention")
* [#objectfield-nested-object-field](#objectfield-nested-object-field "mention")

Il n’y aura **pas** de mélange des deux types dans une même liste.

#### Liste de `SimpleField`

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Ruby" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}
{% endtabs %}

#### Liste de `ObjectField`

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Ruby" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.
{% endtab %}
{% endtabs %}

## Attributs de champ optionnels

Ces attributs de champ ne sont renseignés que lorsque leurs fonctionnalités respectives sont activées.

Les attributs sont toujours présents même lorsqu’ils ne sont pas activés.

### `confidence`

Le niveau de confiance de la valeur extraite.

Les données ne sont renseignées que si la [Score de confiance et exactitude améliorée](/v2/fr/modeles-extraction/optional-features/automation-confidence-score.md) fonctionnalité est activée.

La propriété d’instance est toujours présente ; toutefois, si la fonctionnalité n’est pas activée, elle sera toujours vide (le type exact dépend du langage utilisé : `null`, `undefined`, `None`, etc)

La valeur de l’attribut sera l’un des suivants : `Certain`, `High`, `Medium`, `Low` .\
Le type d’énumération adapté au langage sera disponible pour votre commodité, mappé à partir d’une valeur de chaîne.

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```python
from mindee.v2 import ExtractionResponse
from mindee.v2.parsing.field import FieldConfidence

def handle_response(response: ExtractionResponse):
    fields = response.inference.result.fields

    confidence = fields.get_simple_field("my_simple_field").confidence

    # comparer en utilisant l’énumération `FieldConfidence`
    is_certain = confidence == FieldConfidence.CERTAIN
    is_lte_medium = confidence <= FieldConfidence.MEDIUM
    is_gte_low = confidence >= FieldConfidence.LOW
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```javascript
handleResponse(response) {
  const fields = response.inference.result.fields;

  const confidence = fields.getSimpleField("my_simple_field")?.confidence

  // comparer en utilisant l’énumération `FieldConfidence`
  const isCertain = confidence === FieldConfidence.Certain;
  const isLteMedium = FieldConfidence.lessThanOrEqual(
    confidence, FieldConfidence.Medium
  );
  const isGteLow = FieldConfidence.greaterThanOrEqual(
    confidence, FieldConfidence.Low
  );
}
```

{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```php
use Mindee\V2\Product\Extraction\ExtractionResponse;
use Mindee\Parsing\V2\Field\FieldConfidence;

public function handleResponse(ExtractionResponse $response)
{
    $fields = $response->inference->result->fields;

    $confidence = $fields->get('my_simple_field')->confidence;

    // comparer en utilisant l’énumération `FieldConfidence`
    $isCertain = $confidence === FieldConfidence::Certain;
    $isLteMedium = $confidence->lessThanOrEqual(FieldConfidence::Medium);
    $isGteLow = $confidence->greaterThanOrEqual(FieldConfidence::Low);
}
```

{% endtab %}

{% tab title="Ruby" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```ruby
def handle_response(response)
  fields = response.inference.result.fields

  confidence = fields["my_simple_field"].confidence

  # comparer en utilisant la classe `FieldConfidence`
  FieldConfidence = Mindee::Parsing::V2::Field::FieldConfidence
  
  is_certain = confidence == FieldConfidence.CERTAIN
  is_lte_medium = confidence <= FieldConfidence.MEDIUM
  is_gte_low = confidence >= FieldConfidence.LOW
end
```

{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```java
import com.mindee.v2.product.extraction.ExtractionResponse;
import com.mindee.parsing.v2.field.FieldConfidence;

public void handleResponse(ExtractionResponseresponse) {
  var fields = response.getInference().getResult().getFields();

  // choisissez la méthode d’accesseur de type de champ appropriée : Simple, Object, List
  FieldConfidence confidence = fields.getSimpleField("my_simple_field")
      .getConfidence();

  // comparer en utilisant l’énumération `FieldConfidence`
  boolean isCertain = confidence === FieldConfidence.Certain;
  boolean isLteMedium = confidence.lessThanOrEqual(FieldConfidence.Medium);
  boolean isGteLow = confidence.greaterThanOrEqual(FieldConfidence.Low);
}
```

{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```csharp
using Mindee.V2.Parsing.Inference.Field;

public void HandleResponse(ExtractionResponse response)
{
    InferenceFields fields = response.Inference.Result.Fields;

    // énumération nullable, car la présence dépend de l’activation de la fonctionnalité
    FieldConfidence? confidence = fields["my_simple_field"]
        .SimpleField.Confidence;

    // comparer en utilisant l’énumération `FieldConfidence`
    bool isCertain = confidence == FieldConfidence.Certain;
    // convertir en int pour les inégalités relatives
    bool isLteMedium = (int?)confidence <= (int)FieldConfidence.Medium;
    bool isGteLow = (int?)confidence >= (int)FieldConfidence.Low;
}
```

{% endtab %}
{% endtabs %}

### `locations`

Une liste des emplacements du champ sur le document.

Les données ne sont renseignées que si la [Polygones (boîtes englobantes)](/v2/fr/modeles-extraction/optional-features/polygons-bounding-boxes.md) fonctionnalité est activée.

Il est possible qu’un seul champ ait plusieurs emplacements, par exemple lorsqu’un élément de facture s’étend sur deux pages.

Chaque emplacement possède un index de page et un Polygon.

Les index de page commencent à 0, donc la première page est `0`.

Une classe Polygon contient une liste de Points ; l’implémentation spécifique dépendra du langage.

Les Points sont listés dans l’ordre horaire, où l’indice `0` correspond au coin supérieur gauche.

Les coordonnées X,Y des Points sont des flottants normalisés de 0,0 à 1,0, relativement aux dimensions de la page.

{% tabs %}
{% tab title="Python" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```python
from mindee.v2 import ExtractionResponse

def handle_response(response: ExtractionResponse):
    fields = response.inference.result.fields
    
    locations = fields.get_simple_field("my_simple_field").locations

    # accès au polygone
    polygon = locations[0].polygon

    # accès aux points : la classe Polygon étend List[Point]
    top_x = polygon[0].x

    # syntaxe alternative, puisque la classe Point étend List<float>
    # top_x = polygon[0][0]

    # des fonctions géométriques sont disponibles dans la classe Polygon
    center = polygon.centroid

    # accès à l’index de page sur lequel se trouve le polygone
    page_index = locations[0].page
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```javascript
handleResponse(response) {
  const fields = response.inference.result.fields;

  const locations = fields.getSimpleField("my_simple_field")?.locations;

  // accès au polygone
  const polygon = locations![0].polygon!;

  // accès aux points : la classe Polygon étend Array<Point>
  const topX = polygon[0][0];

  // des fonctions géométriques sont disponibles dans la classe Polygon
  const center = polygon.getCentroid();

  // accès à l’index de page sur lequel se trouve le polygone
  const pageIndex = locations![0].page!;
}
```

{% endtab %}

{% tab title="PHP" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```php
use Mindee\V2\Product\Extraction\ExtractionResponse;
use Mindee\Parsing\V2\Field\FieldConfidence;

public function handleResponse(ExtractionResponse $response)
{
    $fields = $response->inference->result->fields;

    $locations = $fields->get('my_simple_field')->locations;

    // accès au polygone
    $polygon = $locations[0]->polygon;
    
    // accès aux points :
    $points = $polygon->coordinates;
    $topX = $points[0]->getX();
    // syntaxe alternative, puisque la classe Point étend Array<float>
    // $topX = $points[0][0]

    // des fonctions géométriques sont disponibles dans la classe Polygon
    $center = $polygon->getCentroid();
    
    // accès à l’index de page sur lequel se trouve le polygone
    $pageIndex = $locations[0]->page;
}
```

{% endtab %}

{% tab title="Ruby" %}
En utilisant la `$response` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```ruby
def handle_response(response)
  fields = response.inference.result.fields

  locations = fields.get_simple_field('my_simple_field').locations

  # accès au polygone
  polygon = locations[0].polygon

  # accès aux points :
  top_x = polygon[0].x
  # syntaxe alternative
  # top_x = polygon[0][0]

  # des fonctions géométriques sont disponibles dans la classe Polygon
  center = polygon.centroid

  # accès à l’index de page sur lequel se trouve le polygone
  page_index = locations[0].page
end
```

{% endtab %}

{% tab title="Java" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```java
import com.mindee.geometry.Point;
import com.mindee.geometry.Polygon;
import com.mindee.v2.product.extraction.ExtractionResponse;
import com.mindee.parsing.v2.field.FieldLocation;
import java.util.List;

public void handleResponse(ExtractionResponseresponse) {
  var fields = response.getInference().getResult().getFields();

  // choisissez la méthode d’accesseur de type de champ appropriée : Simple, Object
  List<FieldLocation> locations = fields.getSimpleField("my_simple_field")
      .getLocations();
  
  // accès au polygone
  Polygon polygon = locations.get(0).getPolygon();

  // accès aux points
  List<Point> points = polygon.getCoordinates();
  double topX = points.get(0).getX();

  // des fonctions géométriques sont disponibles dans la classe Polygon
  Point center = polygon.getCentroid();

  // accès à l’index de page sur lequel se trouve le polygone
  int pageIndex = locations.get(0).getPage();
}
```

{% endtab %}

{% tab title=".NET" %}
En utilisant la `réponse` objet désérialisé provenant soit de la réponse de polling, soit d’une charge utile de webhook.

```csharp
using Mindee.V2.Parsing.Inference.Field;
using Mindee.Geometry;

public void HandleResponse(ExtractionResponse response)
{
    InferenceFields fields = response.Inference.Result.Fields;

    List<FieldLocation> locations = fields["my_simple_field"]
        .SimpleField.Locations;

    // accès au polygone
    Polygon polygon = locations.First().Polygon;

    // accès aux points : la classe Polygon étend List<Point>
    double topX = polygon[0].X;

    // notation alternative, puisque la classe Point étend List<double>
    // double topX = polygon[0][0];

    // des fonctions géométriques sont disponibles dans la classe Polygon
    Point center = polygon.GetCentroid();

    // accès à l’index de page sur lequel se trouve le polygone
    int pageIndex = locations.First().Page;
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mindee.com/v2/fr/modeles-extraction/sdk-integration/extraction-result.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
