API scanner de documents – Extraire automatiquement des documents depuis des photos

Créez une application de scanner de documents avec l'API MaraDocs. Reconnaissez, recadrez et extrayez automatiquement des documents depuis des photos smartphone – sans OpenCV ni modèles ML. (Avec exemples de code)

Martin Kurtz
APITraitement de documentsScannerPDFDéveloppeurs
API scanner de documents – Extraire automatiquement des documents depuis des photos

Recevez-vous des documents sous forme de photos en pièces jointes d'e-mails ? Dans le cabinet de nos fondateurs, c'était un problème non négligeable qui mobilisait du temps de travail manuel. Les clients photographient des factures, des constats d'accident et des contrats sur la table de la cuisine et appuient sur envoyer. Vous recevez des JPG déformés qui doivent être recadrés, corrigés en perspective et convertis en PDF avant archivage.

Une API d'application de scanner de documents qui reconnaît les contours du document, corrige la perspective et génère un PDF propre ferait économiser des heures. Cela semble simple – mais le développer soi-même l'est rarement.

Pourquoi développer sa propre application de scanner de documents prend des semaines

Ceux qui souhaitent créer une solution d'extraction de documents en interne se tournent rapidement vers OpenCV pour la détection de contours et les transformations de perspective, Tesseract ou un OCR cloud pour la reconnaissance de texte, PyMuPDF ou reportlab pour la génération de PDF et Pillow pour le traitement d'images. Peut-être qu'un modèle de reconnaissance de documents (par exemple, Layout-Transformer ou segmenteurs basés sur SAM) s'ajoute pour une détection robuste. Chaque composant fonctionne isolément ; les assembler en un pipeline fiable avec gestion correcte des erreurs, antivirus et validation de format prend des semaines. Les modèles ML nécessitent une infrastructure GPU, l'hébergement de modèles et la maintenance. La plupart des développeurs se rendent vite compte qu'il faut plus qu'un hack de week-end.

Comment l'API scanner de documents MaraDocs résout cela en quelques minutes

L'API de traitement de documents MaraDocs transforme ce workflow en quelques appels API. Même téléchargement, validation et traitement en chaîne – mais sans l'effort d'intégration. Téléchargez une photo, validez-la (antivirus et vérifications de format inclus), détectez les documents dans l'image, extrayez et corrigez en perspective chacun d'eux et convertissez en PDF – le tout via une seule API REST. Pas d'infrastructure ML, pas de chaos de dépendances Python.

Workflow du scanner de documents : Télécharger, Valider, Extraire, Convertir

Chaque workflow MaraDocs suit le même schéma : télécharger un fichier, le valider (antivirus + validation de format), puis enchaîner les opérations. La validation est obligatoire et s'effectue avant tout traitement. Si un fichier est infecté ou endommagé, vous recevez un message d'erreur clair – aucun traitement de données non fiables.

Après validation, les opérations sont enchaînées en passant des handles. Pour un flux de scanner de documents : validez l'image, appelez findDocuments pour obtenir les coordonnées quadrilatérales, appelez extractQuadrilateral pour chaque document détecté, puis convertissez en PDF avec toPdf ou ocrToPdf pour une sortie consultable. L'ensemble du pipeline reste côté serveur ; le même fichier n'est jamais retéléchargé.

Get your API key in under a minute

Register for a free account and get your API key in under a minute. Of course we'll provide you with some developer credits.

Try MaraDocs API now →

Ce qui distingue MaraDocs : Workspaces, Webview et droit allemand de la protection des données

La plupart des API de documents obligent à télécharger, télécharger à nouveau pour chaque étape de traitement. Cela signifie des allers-retours supplémentaires, plus de code pour suivre les identités de fichiers et une latence plus élevée. MaraDocs utilise à la place des Workspaces : votre serveur crée un workspace avec une clé secrète et reçoit un workspace_secret. Le client (navigateur ou backend) utilise ce token pour toutes les opérations. Les fichiers restent côté serveur ; les handles sont transmis entre les étapes. Vous enchaînez valider → chercher → extraire → toPdf → télécharger avec des handles fluides – pas de nouveau téléchargement, moins d'appels réseau, code plus simple.

Les Workspaces MaraDocs sont un concept supérieur.
Les Workspaces MaraDocs sont un concept supérieur.

Parfois, l'automatisation rencontre un cas particulier : un angle difficile, plusieurs documents dans une photo ou un format nécessitant un ajustement manuel. Avec MaraDocs, vous pouvez ouvrir app.maradocs.io pour, avec le workspace-secret, visualiser, réorganiser et modifier directement les fichiers. Les utilisateurs obtiennent un contrôle manuel complet lorsque le pipeline nécessite une intervention humaine – un avantage rare par rapport aux API qui n'offrent qu'un accès programmatique.

Tout le traitement s'effectue sur des serveurs en Allemagne sous le contrôle de Maramia GmbH. Les données sont chiffrées au repos (SSE-C) et en transit (TLS). Les workspaces expirent après 7 jours. Aucune donnée ne quitte l'UE. Un contrat de sous-traitance est disponible sur demande. Pour les charges de travail sensibles au RGPD et au BDSG, c'est pertinent.

Code TypeScript pour extraire des documents depuis des photos

Le SDK TypeScript MaraDocs gère le polling pour les jobs asynchrones. Flux complet avec téléchargement, validation, traitement et téléchargement.

Référence API : workspace, data/upload, img/validate, img/find/documents, img/extract/quadrilateral, img/ocr/to/pdf, data/download/pdf

import { MaraDocsServer, MaraDocsClient } from "@maramia/maradocs-sdk-ts";
import { okImg } from "@maramia/maradocs-sdk-ts/models/img";

// Serveur : créer un workspace
const server = new MaraDocsServer({ secretKey: process.env.MARADOCS_SECRET_KEY! });
const { workspace_secret } = await server.workspace.create({});

// Client : télécharger, valider, chercher des documents, extraire, OCR, télécharger
const client = new MaraDocsClient({ workspaceSecret: workspace_secret });
const uploaded = await client.data.upload(imageFile);
const validated = await client.img.validate({
  unvalidated_file_handle: uploaded.unvalidated_file_handle,
});
const imgHandle = okImg(validated);

const docs = await client.img.findDocuments({ img_handle: imgHandle });
if (docs.documents.length > 0) {
  const extracted = await client.img.extractQuadrilateral({
    img_handle: imgHandle,
    quadrilateral: docs.documents[0].quadrilateral,
  });
  const pdf = await client.img.ocrToPdf({
    img_handle: extracted.img_handle,
  });
  const blob = await client.data.downloadPdf({ pdf_handle: pdf.pdf_handle });
}

Ou utilisez flow.ocrImg pour un pipeline complet (télécharger, valider, chercher, extraire, aligner, OCR, optimiser) en un seul appel :

const pdfHandle = await client.flow.ocrImg(imageFile);
const blob = await client.data.downloadPdf({ pdf_handle: pdfHandle });

Code Python pour l'extraction de documents

Référence API : data/upload, img/validate, img/find/documents, img/extract/quadrilateral, img/ocr/to/pdf, data/download/pdf

import requests
import time

API_URL = "https://api.maradocs.io/v1"
WORKSPACE_SECRET = "..."  # depuis votre serveur
headers = {"Authorization": f"Bearer {WORKSPACE_SECRET}"}

def poll(job_url, job_id):
    while True:
        r = requests.get(f"{job_url}/{job_id}", headers=headers).json()
        if r["status"] == "complete":
            return r["response"]["response"]
        time.sleep(1)

# 1. Télécharger
with open("photo.jpg", "rb") as f:
    upload = requests.post(f"{API_URL}/data/upload", headers=headers,
        files={"file": ("photo.jpg", f, "image/jpeg")}).json()
handle = upload["unvalidated_file_handle"]

# 2. Valider
val = requests.post(f"{API_URL}/img/validate", headers=headers,
    json={"unvalidated_file_handle": handle}).json()
img_handle = poll(f"{API_URL}/img/validate", val["job_id"])["img_handle"]

# 3. Chercher des documents, 4. Extraire, 5. OCR vers PDF (simplifié ; chaque job est pollé)
find_res = requests.post(f"{API_URL}/img/find/documents", headers=headers,
    json={"img_handle": img_handle}).json()
find_data = poll(f"{API_URL}/img/find/documents", find_res["job_id"])
if find_data.get("documents"):
    quad = find_data["documents"][0]["quadrilateral"]
    ext_res = requests.post(f"{API_URL}/img/extract/quadrilateral", headers=headers,
        json={"img_handle": img_handle, "quadrilateral": quad}).json()
    extracted = poll(f"{API_URL}/img/extract/quadrilateral", ext_res["job_id"])
    ocr_res = requests.post(f"{API_URL}/img/ocr/to/pdf", headers=headers,
        json={"img_handle": extracted["img_handle"]}).json()
    ocr_data = poll(f"{API_URL}/img/ocr/to/pdf", ocr_res["job_id"])
    pdf_handle = ocr_data["pdf_handle"]

    # 6. Télécharger
    pdf_resp = requests.get(f"{API_URL}/data/download/pdf", headers=headers,
        params={"pdf_handle": pdf_handle})
    with open("output.pdf", "wb") as out:
        out.write(pdf_resp.content)

Résumé : API scanner de documents sans effort d'intégration

Une API d'application de scanner de documents qui extrait des documents depuis des photos, corrige la perspective et génère des PDF est à portée de main. Avec MaraDocs, l'intégration d'OpenCV, Tesseract et de modèles ML qui prend des semaines disparaît. La validation, les workspaces, la webview et le stockage de données en Allemagne sont inclus directement.

Autres cas d'usage : Traitement PDF – Fusionner, Séparer, Rotation automatique, Rotation automatique et détection d'orientation, Reconnaissance de texte (OCR) et Placer une image ou un PDF sur une page A4 vierge.


Essayez maintenant : API MaraDocs | SDK TypeScript


Abonnez-vous à notre newsletter

Restez au courant et recevez les dernières nouvelles, articles et ressources par e-mail.