> 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 d'Extraction

## Accès 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 forme de mappage clé-valeur (celui de Python `dict`, de Java `HashMap`, etc.).

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

Chaque champ appartiendra à l'un des types suivants :

* Une valeur unique, `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'attribut `value` attribut.\
Voir la [#value](#value "mention") section ci-dessous.

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

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

```python
from mindee import InferenceResponse

def handle_response(response: InferenceResponse):
    fields: dict = response.inference.result.fields

    my_simple_field = fields["my_simple_field"]
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant l'objet `response` désérialisé issu 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 l'objet `$response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```php
use Mindee\Parsing\V2\InferenceResponse;

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

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

{% endtab %}

{% tab title="Ruby" %}
En utilisant l'objet `response` désérialisé issu 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 l'objet `response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```java
import com.mindee.parsing.v2.InferenceResponse;
import com.mindee.parsing.v2.field.SimpleField;

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

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

{% endtab %}

{% tab title=".NET" %}
En utilisant l'objet `response` désérialisé issu 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 extraite des données.\
Types possibles : string, number (entier ou à virgule flottante), boolean.\
Tous les types peuvent être nuls.

Sur la plateforme, vous pouvez spécifier les types date et classification.\
Ils sont renvoyés sous forme de chaînes de caractères.

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

{% tabs %}
{% tab title="Python" %}
En utilisant l'objet `response` désérialisé issu 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 en interne.

Vous devriez utiliser les accesseurs explicitement typés ; 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 l'objet `$response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.
{% endtab %}

{% tab title="Ruby" %}
En utilisant l'objet `response` désérialisé issu 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 en interne.

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

Si la mauvaise méthode typée 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 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 : impossible de convertir implicitement le type 'string' en 'double'
```

{% endtab %}
{% endtabs %}

## `ObjectField` - Champ d'objet imbriqué

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

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

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

```python
from mindee import InferenceResponse

def handle_response(response: InferenceResponse):
    fields: dict = response.inference.result.fields

    object_field = fields["my_object_field"]
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant l'objet `response` désérialisé issu 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 l'objet `$response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```php
use Mindee\Parsing\V2\InferenceResponse;

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

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

{% endtab %}

{% tab title="Java" %}
En utilisant l'objet `response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```java
import com.mindee.parsing.v2.InferenceResponse;
import com.mindee.parsing.v2.field.ObjectField;

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

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

{% endtab %}

{% tab title=".NET" %}
En utilisant l'objet `response` désérialisé issu 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 %}

### `attribut fields`

Les sous-champs sous la forme d'un 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 l'objet `response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.
{% endtab %}

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

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

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

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

{% tab title=".NET" %}
En utilisant l'objet `response` désérialisé issu 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 a un [#confidence](#confidence "mention") attribut.

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

```python
from mindee import InferenceResponse

def handle_response(response: InferenceResponse):
    fields: dict = response.inference.result.fields

    my_list_field = fields["my_list_field"]
```

{% endtab %}

{% tab title="Node.js" %}
En utilisant l'objet `response` désérialisé issu 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 l'objet `$response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```php
use Mindee\Parsing\V2\InferenceResponse;

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

{% endtab %}

{% tab title="Java" %}
En utilisant l'objet `response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```java
import com.mindee.parsing.v2.InferenceResponse;
import com.mindee.parsing.v2.field.ListField;

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

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

{% endtab %}

{% tab title=".NET" %}
En utilisant l'objet `response` désérialisé issu 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 type tableau à 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 ne **y aura pas** de mélange des deux types dans la même liste.

#### Liste de `SimpleField`

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

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

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

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

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

{% tab title=".NET" %}
En utilisant l'objet `response` désérialisé issu 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 l'objet `response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.
{% endtab %}

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

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

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

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

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

## Attributs de champ facultatifs

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, cependant 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'une des suivantes : `Certain`, `High`, `Medium`, `Low` .\
Le type d'énumération adapté au langage sera disponible pour votre confort, mappé depuis une valeur de chaîne.

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

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

def handle_response(response: InferenceResponse):
    fields: dict = response.inference.result.fields

    confidence = fields["my_simple_field"].confidence

    # compare using the enum `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 l'objet `response` désérialisé issu 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

  // compare using the enum `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 l'objet `$response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```php
use Mindee\Parsing\V2\InferenceResponse;
use Mindee\Parsing\V2\Field\FieldConfidence;

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

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

    // compare using the enum `FieldConfidence`
    $isCertain = $confidence === FieldConfidence::Certain;
    $isLteMedium = $confidence->lessThanOrEqual(FieldConfidence::Medium);
    $isGteLow = $confidence->greaterThanOrEqual(FieldConfidence::Low);
}
```

{% endtab %}

{% tab title="Ruby" %}
En utilisant l'objet `response` désérialisé issu 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 l'objet `response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```java
import com.mindee.parsing.v2.InferenceResponse;
import com.mindee.parsing.v2.field.FieldConfidence;

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

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

  // compare using the enum `FieldConfidence`
  boolean isCertain = confidence === FieldConfidence.Certain;
  boolean isLteMedium = confidence.lessThanOrEqual(FieldConfidence.Medium);
  boolean isGteLow = confidence.greaterThanOrEqual(FieldConfidence.Low);
}
```

{% endtab %}

{% tab title=".NET" %}
En utilisant l'objet `response` désérialisé issu 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 puisque la présence dépend de l'activation de la fonctionnalité
    FieldConfidence? confidence = fields["my_simple_field"]
        .SimpleField.Confidence;

    // compare using the enum `FieldConfidence`
    bool isCertain = confidence == FieldConfidence.Certain;
    // conversion 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`

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.

Un seul champ peut avoir plusieurs emplacements, par exemple lorsqu'un élément de facture s'étend sur deux pages.

Chaque emplacement a 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'index `0` est en haut à gauche.

Les coordonnées X,Y des Points sont des flottants normalisés de 0.0 à 1.0, relatifs aux dimensions de la page.

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

```python
from mindee import InferenceResponse

def handle_response(response: InferenceResponse):
    fields: dict = response.inference.result.fields
    
    locations = fields["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 l'objet `response` désérialisé issu 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 l'objet `$response` désérialisé issu soit de la réponse de polling soit d'une charge utile de webhook.

```php
use Mindee\Parsing\V2\InferenceResponse;
use Mindee\Parsing\V2\Field\FieldConfidence;

public function handleResponse(InferenceResponse $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 l'objet `$response` désérialisé issu 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 l'objet `response` désérialisé issu 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.parsing.v2.InferenceResponse;
import com.mindee.parsing.v2.field.FieldLocation;
import java.util.List;

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

  // choisir 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 l'objet `response` désérialisé issu 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;

    // autre notation, 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.
