Plateforme qui tire des données structurées de tout document
Unstract est une plateforme web qui extrait des données structurées de documents : PDF natifs ou scannés, images, fichiers Office et OpenDocument. Dans son Prompt Studio, des prompts décrivent les champs à extraire et le schéma de sortie, et s'essaient sur de vrais documents. Le projet se publie ensuite en API REST, qui reçoit des fichiers et renvoie du JSON, ou en pipeline ETL, qui lit un stockage et écrit dans une base.
La chaîne d'Unstract a deux étages : un extracteur de texte lit le document, OCR compris, puis un LLM tire les champs du texte obtenu. Unstract orchestre les deux et ne fait pas l'OCR lui-même.
MarkItDown s'arrête au premier étage : il convertit un document en Markdown et laisse la suite au code qui l'appelle. Receipt OCR va jusqu'au JSON avec Tesseract puis un LLM, mais pour le seul ticket de caisse. Unstract accepte tout type de document, au prix d'une plateforme entière à héberger.
Le comparatif des outils d'OCR open source situe Unstract parmi les moteurs OCR, les modèles de vision et les convertisseurs vers Markdown.
Prompt écrit une fois au lieu de gabarits par émetteur
- Un prompt plutôt qu'un gabarit par fournisseur : le README oppose sa méthode aux expressions régulières et aux modèles écrits émetteur par émetteur. Un prompt écrit une fois doit encaisser les variations de mise en page.
- LLM au choix, local compris : OpenAI, Anthropic, Bedrock, Gemini, Mistral, tout point d'accès compatible OpenAI, et Ollama, qui peut aussi fournir les embeddings.
- Une API prête à appeler : une URL et une clé par déploiement, jusqu'à 32 fichiers par appel.
- Connecteurs ETL fournis : S3, MinIO, Google Drive, SFTP et d'autres en entrée ; Snowflake, BigQuery, PostgreSQL, Oracle et d'autres en sortie.
- Serveur MCP et nœud n8n : l'extraction s'appelle depuis un agent IA ou depuis un workflow n8n existant.
Vingt-cinq services Docker, OCR à configurer à part
L'OCR passe par un service à configurer. Unstract demande quatre services avant la première extraction : un LLM, un modèle d'embeddings, une base vectorielle et un extracteur de texte. Le README cite trois extracteurs. LLMWhisperer est l'API de l'éditeur : 100 pages gratuites par jour, puis de 1 à 15 dollars les 1 000 pages selon le mode. LlamaParse est l'API cloud de LlamaIndex. Unstructured se branche en API hébergée ou en version communautaire, la seule des trois à tourner en local, dans un profil optionnel du Compose que run-platform.sh ne démarre pas. Pour qu'aucun document ne quitte le serveur, il faut ce conteneur, plus un LLM et des embeddings servis en local, par Ollama par exemple.
Vingt-cinq services Docker et le socket de l'hôte. La documentation demande 8 Go de RAM libres, Linux ou macOS. Le Compose lance par défaut 25 services, dont douze workers, Postgres (image pgvector), Redis, RabbitMQ, MinIO, Qdrant et Traefik. Le runner monte /var/run/docker.sock pour lancer des conteneurs d'outils. La clé ENCRYPTION_KEY de backend/.env chiffre les identifiants des adaptateurs : la perdre rend inaccessibles ceux déjà configurés.
Ce que l'offre payante se réserve. La page de l'édition open source liste cinq absences : LLMChallenge, qui fait vérifier la réponse par un second LLM, les modes SinglePass et Summarized Extraction, qui réduisent la consommation de tokens, l'écran de relecture humaine qui place chaque valeur à côté du document source, et le SSO. Sans SSO, la connexion se fait avec l'identifiant et le mot de passe lus dans backend/.env (unstract / unstract par défaut). La formule Starter du cloud coûte 499 dollars par mois pour 5 000 pages, LLMWhisperer compris. Le code est sous AGPL-3.0 : qui expose une version modifiée en service réseau doit en publier les sources.
Toujours en 0.x, plusieurs versions par semaine. La v0.1.0 date du 26 février 2024 ; la v0.192.7, sortie le 7 octobre 2026, est la quatrième en trois jours. Le dépôt compte 597 versions, dont 128 depuis janvier 2026. run-platform.sh tire l'étiquette latest par défaut ; l'option -v fixe une version.
