Introduction à l'analyse de mise en page des documents
L'analyse de mise en page des documents vise à structurer des éléments textuels et visuels dans des images, telles que des contrats scannés ou des rapports. PP-DocLayoutV3 est un modèle spécialisé qui identifie avec précision des régions comme les titres, le corps du texte, les tableaux et les figures, en fournissant des coordonnées pixel-level pour chaque zone détectée.
Ce guide explique comment déployer le modèle, tester ses fonctionnalités via une interface web, et l'intégrer dans des applications via son API REST, en couvrant des scénarios d'utilisation courants.
Déploiement du modèle avec Docker
Vérifications préalables
Avant de commencer, assurez-vous d'avoir un environnement compatible Docker, comme un serveur cloud ou une machine locale. Un GPU NVIDIA peut accélérer le traitement, mais n'est pas obligatoire.
Étapes de déploiement
Déployez le modèle en trois étapes simples :
- Recherchez l'image Docker nommée
ins-doclayout-paddle33-v1dans votre plateforme de déploiement et lancez l'instance. - Attendez que l'instance démarre (1-2 minutes). Le chargement du modèle en mémoire GPU prend 5-8 secondes au premier lancement.
- Accédez à l'interface web via l'URL fournie. Modifiez le port dans la barre d'adresse pour utiliser le port 8000 (par exemple,
http://<IP_Instance>:8000/docs) afin d'obtenir la documentation interactive de l'API.
Test rapide via l'interface web
Utilisation de l'interface graphique
L'interface web permet de tester le modèle sans code. Uploadez une image contenant du texte (scan de document, capture d'écran de PDF, etc.) au format JPG ou PNG, puis cliquez sur le bouton d'analyse.
Les résultats affichent une image annotée avec des cadres colorés pour chaque type de région détectée (par exemple, rouge pour le texte, vert pour les titres, violet pour les tableaux). Des détails comme les coordonnées [x1, y1, x2, y2] et les scores de confiance sont listés ci-dessous.
Intégration de l'API REST
Présentation de l'endpoint principal
Le modèle expose une API REST via FastAPI avec un endpoint /analyze (méthode POST). Il accepte une image en entrée et retourne une réponse JSON structurée contenant le nombre de régions, leurs étiquettes, coordonnées et niveaux de confiance.
Test avec cURL
Utilisez la commande suivante pour vérifier le fonctionnement, en remplaçant <IP_Instance> par l'adresse IP réelle :
curl -X POST "http://<IP_Instance>:8000/analyze" \
-H "Accept: application/json" \
-F "file=@/chemin/vers/image_document.jpg"
Une réponse JSON typique inclut des champs comme total_areas et un tableau detections avec les métadonnées de chaque région.
Exemple d'intégration en Python
Voici un script Python pour appeler l'API et traiter les résultats :
import requests
# Configuration de l'endpoint
api_endpoint = "http://<IP_Instance>:8000/analyze"
chemin_fichier = "document_a_analyser.jpg"
# Envoi de la requête avec l'image
with open(chemin_fichier, 'rb') as fichier_image:
payload = {'file': fichier_image}
reponse = requests.post(api_endpoint, files=payload)
# Traitement de la réponse
if reponse.status_code == 200:
donnees = reponse.json()
print(f"Nombre de régions détectées : {donnees['total_areas']}")
for idx, zone in enumerate(donnees['detections']):
etiquette = zone['category']
confiance = zone['score']
coordonnees = zone['coordinates'] # [x_min, y_min, x_max, y_max]
print(f"Zone {idx+1}: Type={etiquette}, Confiance={confiance:.2f}, Coordonnées={coordonnees}")
# Logique de traitement selon le type
if etiquette == 'table':
print(" -> Zone tabulaire détectée, peut être envoyée à un modèle de reconnaissance de tableaux")
elif etiquette == 'text':
print(" -> Zone textuelle identifiée, idéale pour l'OCR")
elif etiquette == 'image':
print(" -> Figure détectée, peut être extraite et sauvegardée séparément")
else:
print(f"Échec de la requête, code HTTP : {reponse.status_code}")
print(reponse.text)
Ce code envoie une image, analyse la réponse JSON, et affiche des informations sur chaque région détectée, avec des commentaires pour guider le traitement ultérieur.
Scénarios d'application
Amélioration de la reconnaissance OCR
Utilisez PP-DocLayoutV3 comme prétraitement pour isoler les zones textuelles avant de les soumettre à un moteur OCR comme PaddleOCR. Cela réduit le bruit (tableaux, images) et augmente la précision, tout en conservant la structure du document (titres, paragraphes).
Numérisation et restauration de documents
Pour convertir des archives papier en documents structurés, analysez d'abord les images pour identifier les éléments (titres, corps de texte, en-têtes), puis générez automatiquement des fichiers Word ou HTML avec une mise en page fidèle à l'original.
Extraction automatisée d'informations
Dans des documents à format fixe (contrats, formulaires), utilisez le modèle pour localiser des régions spécifiques (par exemple, une zone de texte sous un titre particulier) et extraire des données clés par OCR, facilitant l'audit ou la saisie automatique.
Considérations importantes
Compatibilité et limitations
Le modèle repose sur PaddlePaddle 3.3+ et nécessite une version compatible pour le chargement. Il détecte des régions au niveau des blocs (paragraphes, tableaux) mais ne reconnaît pas leur contenu textuel – cette tâche incombe à des modèles OCR dédiés. Les performances optimales sont obtenues sur des documents imprimés standards ; les images de mauvaise qualité ou les mises en page artistiuqes peuvent réduire l'efficacité.
Performances et déploiement
L'image Docker fournie convient au traitement par lots offline. Pour des besoins en temps réel avec haute concurrence, déployez plusieurs instances avec un équilibreur de charge. Notez que les étiquettes en chinois dans l'interface web peuvent s'afficher incorrectement, sans affecter les données brutes des coordonnées.