Let’s Build : pipeline d’analyse documentaire avec Transloadit
Transformez un document PDF ou DOCX en fichier JSON local contenant son titre, son résumé et des informations complémentaires facultatives. Cet exemple combine la conversion de documents et l’extraction par IA guidée par un schéma. Vous vérifiez le résultat enregistré en le comparant à l’original avant de l’utiliser ailleurs.
L’application TypeScript téléchargeable s’exécute en dehors de ce dépôt. Elle accepte un document local, l’envoie à Transloadit et à un fournisseur d’IA, puis enregistre la réponse dans un nouveau fichier de sortie. Pour votre premier essai, utilisez un document de test au contenu inventé ou un document non sensible que vous avez l’autorisation de téléverser. Le traitement est facturé, y compris lorsque vous sélectionnez explicitement les informations d’identification de test pour l’IA fournies par Transloadit.
Ce que recouvre réellement l’analyse intelligente de documents
Un flux de travail documentaire peut analyser du texte, séparer des pages et extraire des champs structurés. Ce sont des opérations distinctes : l’application présentée ici envoie les PDF directement à /ai/chat et convertit d’abord les fichiers DOCX en PDF. Elle n’effectue pas d’OCR et ne découpe pas les documents en blocs.
Le résultat constitue un point de départ pour la vérification ou l’indexation, plutôt qu’une preuve que chaque fait a été extrait correctement. Son schéma décrit des informations tirées du document, pas des totaux de facture, des postes de facturation ou des scores de confiance.
Configurer votre projet TypeScript
Suivez les instructions d’installation et d’accès de l’application depuis un répertoire vide et indépendant, en dehors d’un projet Node.js ou d’un espace de travail Yarn existant. Aucun checkout privé ni téléchargement de données de test n’est nécessaire : vous fournissez votre propre PDF ou DOCX. Les exemples de commandes utilisent Bash.
La combinaison testée comprend Node.js 26.12.1, Yarn
4.12.0 via Corepack, @transloadit/node 4.14.0, zod 3.25.76 et zod-to-json-schema 3.25.2.
Ces versions sont figées pour reproduire l’exemple, sans prétendre être les plus récentes. Node 26
est une branche de versions maintenue ; tenez compte des mises à jour
de sécurité lorsque vous adaptez l’exemple. Corepack est un prérequis distinct avec Node 26 :
suivez ses instructions d’installation si
corepack n’est pas disponible. Vous avez également besoin de cURL pour les téléchargements.
Le README installe les paquets aux versions fixées et télécharge à la fois document-intelligence-pipeline/run.ts
et shared/runtime.ts. Conservez ces répertoires côte à côte, car le programme importe
../shared/runtime.ts. Sa commande finale --help doit fonctionner avant que vous fournissiez des données d’accès.
Si la configuration échoue, examinez le répertoire partiellement créé avant de réessayer : la création
initiale de package.json refuse d’écraser un fichier. Ne la répétez pas sur une application existante.
Configurez TRANSLOADIT_AUTH_KEY et TRANSLOADIT_AUTH_SECRET dans le shell qui exécute l’application,
comme indiqué dans le README. Ces valeurs servent à authentifier votre Workspace Transloadit.
Gardez-les hors du contrôle de version et du code exécuté dans le navigateur. Le programme lit les
variables d’environnement du processus et ne charge pas de fichier d’environnement.
L’accès à l’IA fait l’objet d’un choix distinct. Définissez TRANSLOADIT_AI_CREDENTIALS sur le nom d’un
jeu d’informations d’identification pour l’IA existant contenant une clé Anthropic, ou passez explicitement
--test-credentials pour utiliser les clés de test fournies par Transloadit, dont l’utilisation est facturée.
Sélectionnez un seul mode. Le programme ne crée ni ne modifie d’informations d’identification ; consultez la
documentation de /ai/chat pour l’accès aux fournisseurs et la facturation.
Étape 1 : analyser les documents avec l’OCR (facultatif)
Le Robot
/document/ocr est utile lorsque votre flux de travail distinct a besoin
de texte reconnu ou d’informations de mise en page provenant d’un PDF. Cette application utilise
plutôt la prise en charge des PDF en entrée par anthropic/claude-sonnet-4-6, sélectionné explicitement dans son
Step d’extraction.
Pour une entrée DOCX, le Robot /document/convert produit le PDF envoyé au modèle. La conversion et l’OCR répondent à des objectifs différents ; l’ajout d’un Step d’OCR nécessiterait de déterminer comment intégrer sa sortie à votre propre flux de travail d’extraction.
Étape 2 : fractionner les documents
Le Robot /document/split peut sélectionner des pages pour un autre flux de travail. L’exemple ci-dessous traite un fichier entier. Découper un contrat en requêtes indépendantes peut faire perdre des définitions ou des clauses figurant sur d’autres pages. Ne supposez donc pas que combiner les réponses obtenues page par page restitue le sens du document entier.
Étape 3 : extraire des données par IA selon un schéma
L’application exporte example et documentInsightsSchema. Réutilisez ces éléments lorsque
vous examinez ou adaptez l’application, plutôt que de maintenir une seconde copie de sa configuration
de traitement ou de son schéma. Le Step d’extraction utilise format: 'json', un JSON Schema sérialisé,
et result: true pour rendre le fichier de réponse accessible.
title et summary sont des chaînes obligatoires. Les champs facultatifs sont
author, publication_date, document_type, key_topics et key_points.
Le type de document, lorsqu’il est présent, est l’une des valeurs suivantes : whitepaper,
report, contract, invoice, receipt, statement ou manual.
Un champ facultatif peut être omis ; une chaîne obligatoire peut néanmoins être vide ou contenir des
informations inexactes. La validation du schéma vérifie la structure, pas l’exactitude des faits.
Créer un pipeline complet
Placez un document à l’emplacement document.pdf dans le répertoire local de votre projet,
ou remplacez --input par son chemin réel. Choisissez un chemin de sortie accessible
en écriture et qui n’existe pas encore. Si l’authentification du Workspace est déjà configurée et
que TRANSLOADIT_AI_CREDENTIALS n’est pas défini, cette commande autorise un traitement facturé avec
les clés de test :
node document-intelligence-pipeline/run.ts --input ./document.pdf --output ./result.json --test-credentials
Pour un jeu d’informations d’identification pour l’IA Anthropic existant, définissez TRANSLOADIT_AI_CREDENTIALS comme indiqué
plus haut et omettez --test-credentials. Le programme d’exécution accepte une entrée non vide
d’au plus 20 MiB et télécharge au plus 20 MiB de sortie. Ces limites sont propres au tutoriel. Il
accorde cinq minutes à l’Assembly et un délai distinct de 30 secondes au téléchargement du résultat ;
les limites du fournisseur peuvent néanmoins entraîner le refus d’un fichier respectant la limite
de taille locale.
En cas de réussite, le terminal affiche Saved suivi du chemin de sortie.
L’entrée reste inchangée et result.json est un fichier local, pas une URL de résultat temporaire.
Une sortie existante est refusée avant la soumission d’une Assembly. Pour des exécutions successives,
utilisez une autre destination ; ne supprimez pas votre résultat précédent simplement pour répéter
une commande.
Enregistrez ce script d’inspection sous inspect.ts, à côté de package.json.
Il lit la sortie enregistrée avec le même schéma exporté, rejette les champs textuels obligatoires
vides et affiche les deux champs que vous devez vérifier :
import { readFile } from 'node:fs/promises'
import { documentInsightsSchema } from './document-intelligence-pipeline/run.ts'
const saved = JSON.parse(await readFile('./result.json', 'utf8'))
const insights = documentInsightsSchema.parse(saved)
if (!insights.title.trim() || !insights.summary.trim()) {
throw new Error('The title or summary is blank. Review the source and Assembly before retrying.')
}
console.log(insights.title)
console.log(insights.summary)
node inspect.ts
Comparez les noms, les dates, les quantités et les principales affirmations du résumé à votre source. Un rapport sur la réparation de 12 vélos avec 240 $ de pièces détachées ne doit pas devenir un résumé portant sur la vente de vélos ou une dépense de 24 $. Le script d’inspection ne peut pas porter ce jugement factuel à votre place. Vérifiez aussi les champs facultatifs du JSON et gardez les résultats sensibles privés.
Si une exécution échoue après avoir affiché un identifiant d’Assembly, examinez cette Assembly dans la Console avant de réessayer. Un dépassement de délai ou une interruption ne prouve pas que le traitement distant s’est arrêté, et une exécution ayant échoué peut tout de même être facturée. Le programme d’exécution désactive les nouvelles tentatives du SDK et supprime sa sortie locale inachevée après un échec intercepté ; il ne peut pas garantir ce nettoyage après un arrêt forcé. Examinez tout fichier restant avant de choisir une nouvelle destination.
Traiter plusieurs types de documents
Le programme d’exécution accepte les noms de fichiers .pdf et .docx,
y compris les extensions en majuscules. Le Robot
/file/filter dirige les fichiers dont le type MIME est PDF directement
vers l’extraction ; l’autre branche les convertit d’abord en PDF. Cela ne signifie pas que cette
interface en ligne de commande accepte tous les formats autres que PDF en entrée. Renommer un
fichier endommagé ne répare pas son contenu, et une conversion réussie ne prouve pas que le résumé
est exact.
Déterminer les ajouts à l’exemple local
Traitez les documents successivement avec des noms de fichiers de sortie distincts tout en évaluant les résultats et les coûts. Cette interface en ligne de commande ne comporte ni ordonnanceur de traitements par lots, ni file de vérification, ni export vers un stockage cloud. Avant de traiter une collection, consultez les tarifs actuels et la documentation des Robots.
Les Templates peuvent rendre réutilisable un ensemble adapté d’Assembly Instructions. Ils ne sont pas nécessaires pour cette exécution locale. Enregistrer une configuration de traitement dans un Template ou ajouter du stockage ne suffit pas, en soi, à assurer une vérification humaine, des contrôles d’accès pour votre application ou une politique d’extraction fiable.
Quand utiliser cette approche
Cette approche est utile lorsque vous voulez maîtriser les Steps de conversion et d’extraction dans un flux de travail sur fichiers et que vous pouvez fournir l’application qui les entoure. Comparez-la à un produit d’IA documentaire dédié avec vos propres documents si vous avez besoin d’une interface de vérification prête à l’emploi ou d’une qualité d’extraction mesurée. Ce petit exemple ne démontre ni une équivalence fonctionnelle ni une aptitude à la production.
Envie de vous lancer ?
Commencez par le README de l’application et un document non sensible dont vous connaissez le contenu. Conservez le JSON enregistré avec votre source pour les vérifier, puis utilisez la documentation des Robots d’IA pour préparer les modifications du flux de travail d’extraction.

