Analyse des reçus à l'aide de l'API d'apprentissage automatique de Mindee

Doug Sillars

Doug Sillars

Quiconque a déposé une note de dépenses peut vous le dire : le suivi des reçus et l'enregistrement des dépenses sont un casse-tête. Entrez l'API d'analyse des reçus de Mindee, qui utilise l'apprentissage en profondeur pour analyser automatiquement, précisément et instantanément les détails de vos reçus.

Dans ce didacticiel, nous allons suivre les étapes à suivre pour utiliser l'API d'analyse des reçus de Mindee. Commençons !

Prérequis de l'API

  1. Vous aurez besoin d'un compte Mindee gratuit. INSCRIVEZ-VOUS et confirmez votre adresse e-mail pour vous connecter.
  2. Un reçu. Cherchez un article récent dans votre sac/portefeuille, ou faites un Recherche d'images sur Google pour obtenir un reçu et téléchargez-en quelques-uns pour les tester.

Configuration de l'API

Connectez-vous à votre compte Mindee et accédez à votre environnement API Expense Receipt en cliquant sur Reçus de dépenses carte :

Pour activer l'API, cliquez sur le bouton « Essayer gratuitement » pour accéder à notre offre gratuite généreuse. Vous arriverez sur la page du tableau de bord, où vous pourrez rapidement voir l'utilisation de l'API (vous n'en avez pas pour le moment, mais cela va changer). Dans la barre de navigation de gauche, vous trouverez des liens vers « Documentation », « Informations d'identification » et « Interface dynamique ». L'onglet Documents contient tous les détails techniques dont vous aurez besoin pour créer pour le point de terminaison de l'API des reçus, et l'interface en direct est une démonstration interactive intéressante. Plutôt que d'essayer la démo, nous voulons créer avec l'API. Cliquez donc sur « Identifiants » pour créer un jeton d'API.

Ajoutez un nouveau jeton. Dans cet exemple, je l'ai nommé « Tutoriel » :

Cliquez sur « Ajouter une nouvelle clé » et vous pourrez voir votre jeton d'API.

Nous sommes maintenant prêts à passer un appel d'API. Dans cet exemple, nous utiliserons cURL.

curl -X POST \ https://api.mindee.net/products/expense_receipts/v2/predict \
 -H 'X-Inferuser-Token: {apiToken}’ \
 -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
 -F file=@/path/to/your/file.png

Il suffit de remplacer {Token API} avec votre nouveau jeton d'API et /chemin/vers/votre/fichier/png avec le chemin d'accès à votre reçu.

REMARQUE : Vous pouvez également copier ce code directement depuis l'onglet documentation de l'API en insérant votre jeton d'API pour vous.

Dans cet exemple, j'ai utilisé un reçu de l'épicerie de l'aéroport de Cologne (mon dernier voyage d'affaires en 2020) :

En collant l'échantillon cURL dans mon terminal, j'ai appuyé sur Entrée et environ une seconde plus tard, j'ai reçu une réponse JSON avec les détails du reçu. Le JSON complet est accessible ici. La réponse étant assez détaillée, nous allons parcourir les différents champs section par section.

Réponse de l'API : analyse des résultats

Section Résumé et documents :

Les deux premières sections de la réponse contiennent des informations sur l'appel d'API effectué :

"call": {
    "endpoint": {
        "name": "expense_receipts",
        "version": "2.1"
    },
    "finished_at": "2020-08-29T18:01:22+00:00",
    "id": "e47d8654-0df7-4839-a282-2c04bf293886",
    "n_documents": 1,
    "n_inputs": 1,
    "processing_time": 1.087,
    "started_at": "2020-08-29T18:01:21+00:00"
},
"documents": [
    {
    "id": "66d9adc6-76cf-4c42-8622-3dadb660ac32",
    "name": "IMG_20200301_073354.jpg"
    }
],

La section des appels nous indique que nous avons téléchargé un document d'une page sur le terminal des reçus de dépenses et que le fichier a été traité au bout d'une seconde environ. La section documents fournit l'identifiant Mindee du fichier et le nom du fichier.

Prédictions :

Nous passons maintenant aux choses passionnantes. La section Prédictions est divisée en plusieurs sections. Plusieurs d'entre eux identifient les champs du reçu, tandis que d'autres utilisent l'apprentissage automatique pour déduire des informations du reçu. Passons en revue chaque section :

Catégorie

category": {
     "probability": 0.51,
     "value": "miscellaneous"
},

L'API fait une prédiction sur le type d'achat. Dans ce cas, elle est sûre à 51 % qu'il s'agit d'un problème divers. Les catégories possibles sont [péage, nourriture, parking, transport, hébergement, essence, divers].

Date

Identifié à partir du texte du reçu et converti au format ISO. Cet achat a été effectué le 3 février 2020 et le modèle est confiant à 99 % dans ce choix. Le cadre de segmentation fournit 4 coordonnées (x, y) indiquant où la date a été extraite du reçu [(0,0) est le coin supérieur gauche, (1,1) est le coin inférieur droit].

"date": {
    "iso": "2020-02-03",
    "probability": 0.99,
    "raw": "03-02-2020",
    "segmentation": {
    "bounding_box": [
      [0.64,0.661],
      [0.801,0.661],
      [0.801,0.686],
      [0.64,0.686]
  ]
}

Local

À l'aide des données du reçu, l'API peut prédire où l'achat a été effectué, la langue et la devise :. Consultez la documentation pour obtenir le support le plus récent. Au moment de la rédaction de cet article, le soutien était centré sur l'Europe et l'Amérique du Nord.

"locale": {
    "country": "DE",
    "currency": "EUR",
    "language": "de",
    "probability": 0.77,
    "value": "de-DE"
},

Dans le cas de mon reçu, je suis sûre à 77 % que l'achat est en allemand, fabriqué en Allemagne et en euros.

Marchand

"merchant": {
    "name": "REWE",
    "probability": 0.91,
    "segmentation": {
    "bounding_box": [
      [0.279, 0.135],
      [0.719, 0.135],
      [0.719,0.23],
      [0.279,0.23]
     ]
}

L'API a correctement prédit (elle était sûre à 91 %) qu'il s'agissait d'une boutique REWE. Encore une fois, quatre points (x, y) marquent l'emplacement du texte désignant le marchand sur l'image.

Orientation

"orientation": {
   "degrees":0,
   "probability": 0.99
},

Le document a-t-il nécessité une rotation avant d'être analysé ? Mesuré par incréments de 90 degrés [0,90.180.270]. Dans ce cas, il n'a nécessité aucune rotation.

Impôts

"taxes": [],

Si des taxes sont identifiées sur le reçu, elles apparaîtront ici. Dans ce cas, aucune taxe n'a été trouvée (mais c'est le bon résultat).

Heure

"time": {
    "iso": "15:50",
    "probability": 0.99,
    "raw": "15:50",
    "segmentation": {
    "bounding_box": [
      [0.649,0.898],
      [0.732,0.898],
      [0.732,0.925],
      [0.649,0.925]
    ]
}

Heure à laquelle le reçu a été imprimé, fiabilité et coordonnées (x, y) qui délimitent le champ de l'image.

Total

Peut-être la partie la plus importante du reçu, le total des dépenses, ainsi que la confiance et la case indiquant l'emplacement sur le reçu.

"total": {
    "amount": 17.74,
    "probability": 0.99,
    "segmentation": {
    "bounding_box": [
     [0.663,0.589],
     [0.765,0.589],
     [0.765,0.617],
     [0.663,0.617]
   ]
}

Résumé :

En un peu plus d'une seconde, un reçu a été chargé, analysé et la réponse a été renvoyée à l'utilisateur final. Nous savons que 17,74€ ont été dépensés dans un REWE en Allemagne le 3 février 2020 à 15h50. À l'aide des cadres de délimitation, nous pouvons demander à l'utilisateur de valider les valeurs, puis de saisir ces données dans un système de gestion des dépenses.

Conclusion

À l'aide du API d'analyse des reçus Mindee, vous pouvez valider rapidement les reçus, ce qui permet une gestion des dépenses plus rapide, plus précise (et moins pénible) pour nos utilisateurs. Si vous avez des questions, veuillez nous contacter via le widget de chat en bas à droite.

À propos

Qu'il s'agisse de simples photos, de fichiers PDF complexes ou de fichiers manuscrits, l'API de Mindee transforme les données de vos documents en JSON structuré de manière hautement fiable. Aucune formation sur les modèles n'est requise. Tous les alphabets et toutes les langues sont pris en charge.

,
,

Key Takeway

Key Takeway