Envoyer des documents en production

Envoyer des documents en production

Pour charger un document dans un Agent donné, vous avez besoin :

  • du headers pour vous authentifier (voir Authentification)

  • du doc_type_id (int), c’est-à-dire l’ID de l'Agent dans lequel vous souhaitez charger les documents. Il se trouve à droite du nom de l'Agent (#)

  • du folder_path, c’est-à-dire le répertoire dans lequel sont stockés les documents

  • de callback_url, c’est à dire l’adresse à laquelle seront renvoyées les valeurs extraites des documents. Voir Récupérer les résultats de l'extraction.

Si l'extrait de code ci-dessous s'exécute correctement, la variable file_id est incrémentée avec les ID des fichiers envoyés.

import os
import requests

URL_SERVER = 'https://extract.api.recital.ai/extract/api/v1'
doc_type_id = ...
folder_path = "..."
callback_url = "..."

files    = os.listdir(folder_path)
files_id = []
for file_name in files:
    file_path = folder_path+file_name
    with open(file_path, "rb") as file:
        file_post = requests.post(
            url=f'{URL_SERVER}/production/files/',
            files={"file_in": (file_name, file, "application/pdf")},
            data={"doctype_id": doc_type_id, "callback_url":callback_url},
            headers=headers
        )
        if file_post.status_code == 201:
            files_id.append(file_post.json()) # JSON response contains the files_id
        else:
            raise Exception(f'{file_path} has not been uploaded - {file_post.status_code} - {file_post.reason} - {file_post.content}')

Récupérer les résultats de l’extraction

Le traitement des documents étant asynchrone, les résultats de l'extraction ne seront pas envoyés directement en réponse à l'appel.

Via un callback (recommandé)

from fastapi import FastAPI, Request
import json

app = FastAPI()

@app.post("/callback")
async def receive_callback(request: Request):
    data = await request.json()  # Récupérer les données envoyées avec la requête
    # Sauvegarder les données dans un fichier
    with open("response.json", "w") as f:
        json.dump(data, f, indent=4)  # Ecrire les données dans un fichier JSON formaté
    return {"message": "Données reçues et sauvegardées"}

Via une méthode GET (non recommandé)

Il est possible de récupérer les résultats d'une prédiction via 2 routes API :

  • GET values : Permet de récupérer les champs non-groupés d'une extraction

  • GET groups : Permet de récupérer les groupes d'une extraction

Dernière mise à jour