# Tutoriel: Créer une Fonctionnalité d'Upload et d'Extraction de PDF avec FastAPI

Tutoriel: Créer une Fonctionnalité d'Upload et d'Extraction de PDF avec FastAPI

Dans ce tutoriel, nous allons vous guider à travers la création d'une fonctionnalité d'upload et d'extraction de texte à partir de fichiers PDF en utilisant FastAPI. Nous utiliserons également la bibliothèque pdfminer pour extraire le texte des fichiers PDF.

Prérequis

Avant de commencer, assurez-vous d'avoir les éléments suivants installés sur votre machine :

  • Python 3.8 ou supérieur
  • FastAPI
  • Uvicorn (serveur ASGI pour exécuter FastAPI)
  • pdfminer.six (pour extraire le texte des PDF)

Vous pouvez installer les dépendances nécessaires en utilisant pip :

pip install fastapi uvicorn pdfminer.six

Étape 1: Créer le Projet

Créez un nouveau répertoire pour votre projet et naviguez à l'intérieur :

mkdir pdf_extractor
cd pdf_extractor

Créez un fichier nommé main.py dans ce répertoire. Ce fichier contiendra le code de votre application FastAPI.

Étape 2: Écrire le Code de l'Application

Ouvrez main.py dans votre éditeur de texte préféré et ajoutez le code suivant :

from fastapi import FastAPI, File, UploadFile, HTTPException
from pdfminer.high_level import extract_text
import io

app = FastAPI()

@app.get("/")
def home():
    return {"Hello": "World"}

@app.post("/upload-pdf/")
async def upload_and_extract_pdf(file: UploadFile = File(...)):
    if not file.filename.lower().endswith('.pdf'):
        raise HTTPException(status_code=400, detail="Le fichier doit être un PDF")

    try:
        # Lire le contenu du fichier
        content = await file.read()

        # Utiliser BytesIO pour traiter le contenu en mémoire
        pdf_file = io.BytesIO(content)

        # Extraire le texte du PDF
        text = extract_text(pdf_file)

        # Afficher le résultat dans la console
        print(f"Contenu extrait du PDF '{file.filename}':")
        print("-" * 50)
        print(text)
        print("-" * 50)

        # Retourner un résumé au client
        return {
            "filename": file.filename,
            "content_length": len(text),
            "preview": text[:200] + "..." if len(text) > 200 else text
        }

    except Exception as e:
        print(f"Erreur lors du traitement du PDF: {str(e)}")
        raise HTTPException(status_code=500, detail=f"Erreur lors du traitement du PDF: {str(e)}")

Explication du Code

  1. Importations:

    • FastAPI, File, UploadFile, HTTPException : Modules de FastAPI pour créer l'API et gérer les fichiers uploadés.
    • extract_text : Fonction de pdfminer pour extraire le texte des fichiers PDF.
    • io : Module pour gérer les flux de données en mémoire.
  2. Création de l'Application FastAPI:

    • app = FastAPI() : Crée une instance de l'application FastAPI.
  3. Route de Bienvenue:

    • @app.get("/") : Définit une route GET pour la racine de l'API qui retourne un message de bienvenue.
  4. Route d'Upload et d'Extraction de PDF:

    • @app.post("/upload-pdf/") : Définit une route POST pour uploader et extraire le texte des fichiers PDF.
    • async def upload_and_extract_pdf(file: UploadFile = File(...)) : Fonction asynchrone pour gérer l'upload et l'extraction de texte.
    • Vérifie que le fichier uploadé est un PDF.
    • Lit le contenu du fichier.
    • Utilise BytesIO pour traiter le contenu en mémoire.
    • Extrait le texte du PDF.
    • Affiche le texte extrait dans la console.
    • Retourne un résumé du texte extrait au client.
    • Gère les exceptions et retourne une erreur en cas de problème.

Étape 3: Démarrer le Serveur

Pour démarrer le serveur FastAPI, utilisez la commande suivante dans votre terminal :

uvicorn main:app --reload

Cette commande démarre le serveur Uvicorn et charge l'application FastAPI définie dans main.py. L'option --reload permet de recharger automatiquement le serveur lorsque vous modifiez le code.

Étape 4: Tester l'API

Vous pouvez tester l'API en utilisant un outil comme curl, Postman, ou directement via l'interface utilisateur de FastAPI accessible à l'adresse http://127.0.0.1:8000/docs.

Exemple de Requête avec curl

Pour tester l'upload d'un fichier PDF, vous pouvez utiliser la commande suivante :

curl -X 'POST' \
  'http://127.0.0.1:8000/upload-pdf/' \
  -H 'accept: application/json' \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@path/to/your/file.pdf'

Remplacez path/to/your/file.pdf par le chemin vers votre fichier PDF.

Conclusion

Dans ce tutoriel, nous avons vu comment créer une fonctionnalité d'upload et d'extraction de texte à partir de fichiers PDF en utilisant FastAPI et pdfminer. Vous avez appris à configurer votre projet, écrire le code de l'application, démarrer le serveur, et tester l'API. Cette fonctionnalité peut être utile dans de nombreux cas d'utilisation, comme l'analyse de documents, l'extraction de données, et bien plus encore.

Related Posts

# Tutoriel: Créer une Fonctionnalité d'Upload et d'Extraction de PDF avec FastAPI

# Tutoriel: Créer une Fonctionnalité d'Upload et d'Extraction de PDF avec FastAPI Dans ce tutoriel, nous allons vous guider à travers la création d'une fonctionnalité d'upload et d'extraction de texte à parti ...

Lire plus ...

# Utilisation de Bootstrap avec Next.js 14

# Utilisation de Bootstrap avec Next.js 14 Next.js est un framework React populaire pour le développement d'applications web, et Bootstrap est une bibliothèque CSS et JavaScript largement utilisée pour le des ...

Lire plus ...

# Parlons de PHP 8 - les nouveautés

Chaque nouvelle version d'un langage de programmation suscite la curiosité et évidemment des attentes pour les praticiens. PHP 8, en tant que mise à jour majeure, ne fait pas exception. Avec son lot de nouvell ...

Lire plus ...