CERFA
Vos formulaires administratifs remplis à partir de vos documents.
L'agent lit vos pièces, pré-remplit le CERFA correspondant et signale les incohérences entre les champs. Vous relisez, vous signez, vous avez gagné une matinée.
Tester en ligneNotre moteur ne recopie pas des mots : il reconstruit les tableaux, rétablit les données derrière un graphique, restitue les formules en LaTeX et respecte l'ordre de lecture des documents multi-colonnes. Puis les champs partent dans votre ERP, et les cas douteux vers un humain.
Ce n'est jamais sur les documents propres. C'est sur ceux qui portent la valeur.
La plupart des extracteurs aplatissent un tableau en suite de mots. Les en-têtes fusionnés, les cellules propagées et les blocs qui démarrent en C4 disparaissent — et avec eux la seule chose que vous vouliez lire.
Les chiffres qui pilotent la décision sont dans une courbe, pas dans une phrase. Un extracteur classique rend le titre de la figure et s'arrête là. La donnée reste enfermée dans l'image.
Trente fournisseurs, trente mises en page, plus des scans de travers et des archives ZIP. Les modèles rigides tombent en panne dès qu'une colonne se déplace, et il faut recommencer le paramétrage.
Un type inconnu n'échoue pas : il repasse par le décodage texte s'il est lisible. Les formats texte, HTML, XML, CSV et tableur sont traités localement, sans appel API et sans coût.
| Famille | Extensions | Chemin d'extraction |
|---|---|---|
| PDF numérique | pdf | OCR → Markdown par page, tableaux préservés ; repli sur la couche texte |
| PDF scanné | pdf | OCR complet ; découpe en lots pour les documents de 1 000 pages et plus, recousus dans l'ordre |
| Images | png jpg jpeg gif webp bmp tiff heic | Modèle de vision : transcription, tableaux et données de graphiques |
| Word | docx docm dotx doc rtf odt | LibreOffice → PDF → OCR, mise en page réelle ; repli natif |
| PowerPoint | pptx pptm ppsx ppt pps odp | LibreOffice → PDF → OCR, notes du présentateur incluses |
| Excel | xlsx xlsm xls xlsb ods | Une table Markdown par feuille, blocs décalés recadrés |
| OpenDocument | odt ods odp odg | LibreOffice → PDF → OCR |
| Web et balisage | html htm xhtml xml | Texte propre, scripts et styles supprimés, entités décodées — local, 0 $ |
| Texte et code | txt md csv tsv json yaml toml ini py js ts java c cpp go rs sh sql | Décodage direct, instantané — local, 0 $ |
| Livres | epub | Chapitres dans l'ordre du spine OPF, hors ligne |
| E-mails | eml | En-têtes, corps (texte préféré, HTML nettoyé) et pièces jointes listées |
| Audio | mp3 wav m4a ogg flac aac opus amr | Découpe ffmpeg → transcription parallèle → transcript horodaté |
| Vidéo | mp4 mov webm avi mkv m4v mpeg wmv | Piste audio extraite puis transcrite, horodatage absolu |
| Archives | zip | Expansion récursive : chaque fichier interne devient un document |
Garde-fous anti-bombe zip (nombre d'entrées, taille décompressée, profondeur) et limite de 300 Mo par fichier, configurable.
Chaque étape peut refuser de continuer. C'est ce qui empêche une donnée douteuse d'entrer dans votre système.
Le document arrive par mail, dépôt sur un espace surveillé, scan ou appel d'API. Avant tout traitement, une estimation locale compte les pages et le type — sans upload, sans appel API, gratuitement. Sur un lot de plusieurs milliers de pages, c'est ce qui vous permet de connaître la facture avant de la déclencher.
Les PDF natifs sont lus directement, les scans passent par une reconnaissance optique tolérante aux documents de travers, tachés ou en faible résolution. Les documents de plus de mille pages sont découpés en lots puis recousus dans l'ordre. Les tableaux sont reconstruits en tant que tableaux, pas aplatis en suite de mots.
Chaque page dont l'OCR paraît faible — vide, charabia, trop peu de vrais mots — est re-rendue en 300 dpi et relue par un modèle de vision plus fort. Deux garde-fous : une page propre n'est jamais relue, donc le surcoût est proche de zéro sur un corpus imprimé ; et le texte vision ne remplace l'OCR que s'il récupère davantage de contenu. La sortie ne peut jamais empirer.
En-têtes fusionnés sur plusieurs lignes, cellules propagées, blocs décalés recadrés, lignes et colonnes vides purgées. Chaque figure est lue par un modèle de vision et décrite sur sa page — les scans pleine page sont exclus automatiquement, jamais relus deux fois. Les mathématiques scannées ressortent en LaTeX, et les documents multi-colonnes sont restitués colonne par colonne.
Les valeurs sont vérifiées entre elles et contre vos référentiels : le fournisseur existe-t-il, le total correspond-il aux lignes, la référence de commande est-elle valide. Les documents conformes partent dans l'ERP, le CRM ou l'outil métier via API. Les cas douteux arrivent dans une file humaine, avec le document, les champs extraits et la raison précise du doute.
C'est la différence entre un texte lisible et une donnée exploitable.
Tableaux Markdown avec en-têtes fusionnés sur plusieurs lignes, cellules fusionnées propagées, blocs décalés recadrés — un tableau qui démarre en C4 est retrouvé — et lignes ou colonnes vides purgées.
Pour chaque graphique : type, titre, titres et unités des axes y compris labels tournés, légende complète, et une table qui reconstruit les données sous-jacentes, une ligne par graduation et une colonne par série. Les valeurs lues à l'échelle sont marquées ≈.
Les mathématiques scannées ressortent en LaTeX exploitable, pas en approximation typographique.
Les documents multi-colonnes sont restitués colonne par colonne, pas ligne par ligne à travers la page — la différence entre un texte cohérent et un texte mélangé.
Testé sur documents réels, jusqu'à des écritures cursives dégradées du XIXe siècle, avec un profil dédié qui transcrit sans moderniser.
Français, anglais et arabe en écriture droite-à-gauche. 96 % de rappel sur scan arabe au banc interne, là où l'état de l'art public en PDF vers Markdown arabe plafonne autour de 65 %.
Un modèle de vision transcrit bien mieux « Dig. 0,25 mg » quand il sait qu'il lit une ordonnance. Vous décrivez le document avant de le parser, et le contexte est ajouté au prompt d'extraction — jamais substitué aux règles.
| Profil | Ce qu'il amorce |
|---|---|
medical | DCI et noms commerciaux, posologies (mg, µg, mL, UI, 1-0-1, bid, per os), analyses et valeurs de référence, codes CIM, constantes vitales. Ne normalise jamais une dose. |
finance | Séparateurs de milliers selon la locale, devises, négatifs entre parenthèses, TVA/HT/TTC, débit/crédit, amortissements, références de facture. Ne recalcule jamais un total. |
legal | Références d'articles et d'alinéas, citations de lois et de jurisprudence, termes définis, formules consacrées, hiérarchie de numérotation préservée. |
technical | Références de pièces alphanumériques, tolérances (±0,05 mm), unités SI, normes ISO/DIN/ASTM, repères de câblage ; distinction 0/O, 1/l/I, 5/S, 8/B. |
academic | Résumé, sections numérotées, formules en LaTeX, légendes de figures, citations et bibliographie. |
historical | Écriture d'époque, abréviations et ligatures, s long (ſ), monnaies anciennes, encre passée. Transcrit sans moderniser, marque [?] l'illisible. |
administrative | Champs étiquetés, cases à cocher avec leur état, numéros de dossier, tampons, annotations marginales, champs vides signalés. |
Effet mesuré sur un mémoire d'apothicaire de 1831 avec le profil historique : accents d'époque restitués, abréviations développées, s long conservé (ſoin, deſſus).
Le coût observé ci-dessous porte sur une même facture, traitée par chaque moteur. Vous arbitrez entre précision, prix et souveraineté sans changer une ligne de code.
| Moteur | Mode | Coût sur la même facture |
|---|---|---|
| Mistral small | API managée | 0,00040 $ |
| Mistral medium | API managée — manuscrits et documents dégradés | 0,00288 $ |
| Google Gemini | API managée | 0,00020 $ |
| OpenAI | API managée, votre clé | 0,00405 $ |
| Ollama | Local, sur votre machine | 0 $ |
| vLLM / GPU (Qwen2.5-VL) | Local, sur votre GPU | 0 $ |
| PaddleOCR-VL | Local, vLLM | 0 $ |
| Hugging Face | Routeur managé | selon le modèle |
Mode 100 % local : avec un endpoint local, texte, HTML, XML, CSV, Office, Excel, images, EPUB, e-mails et PDF sont traités sans qu'aucune donnée ne quitte la machine. Contrat de sécurité : une URL choisie par le client ne reçoit jamais les clés du serveur — sans clé fournie, la clé envoyée est vide.
Chaque chiffre provient d'un banc reproductible sur un corpus déterministe au contenu exactement connu, pas d'une estimation.
de rappel sur 20 des 21 familles de documents du corpus de référence
sur scan arabe droite-à-gauche, contre environ 65 % pour l'état de l'art public
par page en mode local : texte, Office, images et PDF traités sans quitter vos murs
Ces ordres de grandeur viennent de ce que nous mesurons au pilote sur des périmètres comparables. Sur votre corpus, ils sont mesurés avant industrialisation, pas promis avant.
Banc de vérité-terrain : corpus déterministe au contenu exactement connu, 21 familles de documents, métriques de rappel mots / cellules / ordre de lecture. Docling tournait sur CPU en pipeline par défaut.
| Métrique | Notre moteur | Docling |
|---|---|---|
| Fichiers traités | 19 / 19 | 17 / 19 |
| Score moyen | 99,9 % | 75,4 % |
| Temps total | 29 s | 258 s |
| Données de graphiques rétablies | 100 % | 0 % |
| Formules scannées | 100 % | 0 % |
| Scan arabe (RTL) | 96 % | 0 % |
Fair-play : Docling reste 100 % local en configuration par défaut, tandis que notre meilleur chemin appelle une API OCR commerciale — notre mode local existe aussi, et il est mesuré séparément. Le corpus complet est consultable document par document, source à côté du Markdown extrait.
Le SDK seul suffit pour démarrer : il appelle les API directement et traite texte, HTML, XML et CSV localement. Le service, lui, débloque la bureautique, l'audio et la vidéo, l'EPUB, les PDF géants, la description des figures et les modèles locaux — et le SDK le détecte automatiquement, repassant en direct s'il est absent.
pip install z-parser-sdk
import zparser as zp
# 1. Connaître le coût avant de le dépenser — local, aucun appel API, gratuit.
est = zp.estimate("catalogue.pdf")
print(est) # ~$0.7000 (175 page(s), ocr:mistral-ocr-latest)
# 2. Parser en donnant le contexte métier : la précision vient du vocabulaire.
doc = zp.parse(
"bilan.pdf",
domain="finance",
context="Bilan algérien, montants en DZD, plan comptable SCF.",
)
print(doc.text) # Markdown : tableaux, graphiques rétablis, LaTeX
print(doc.cost) # 0.0533 — coût réel, toutes unités comprises
print(doc.usage) # détail des unités facturées
print(doc.cost_unpriced) # signale tout modèle au tarif inconnunpm install z-parser
import { parse } from 'z-parser';
const doc = await parse('ordonnance.jpg', {
domain: 'medical', // amorce DCI, posologies, valeurs de référence
visionProvider: 'mistral',
});
console.log(doc.text);
console.log(doc.cost);
// Zéro dépendance, typages TypeScript fournis, CLI incluse.# Mode 100 % local : aucune donnée ne quitte la machine.
# Texte, HTML, XML, CSV, Office, Excel, images, EPUB, e-mails ET PDF.
doc = zp.parse(
"dossier_patient.pdf",
doc_vision=True,
vision_base_url="http://gpu-interne:8000/v1", # vLLM, Qwen2.5-VL
)
print(doc.cost) # 0.0 — moteur local, aucune facturation
# Contrat de sécurité : une URL choisie par vous ne reçoit jamais
# les clés du serveur. Sans clé fournie, la clé envoyée est vide.docker run -d -p 4056:4056 -e MISTRAL_API_KEY=xxx yatchiyax/z-parser
# fichier -> {status, kind, parser, num_chars, usage, text}
curl -F file=@facture.pdf http://localhost:4056/v1/parse
# Office -> PDF affichable (page N = diapositive N)
curl -F file=@deck.pptx http://localhost:4056/v1/render -o deck.pdf
# PDF -> figures extraites (artwork / page / embedded)
curl -F file=@rapport.pdf http://localhost:4056/v1/images
# supervision
curl http://localhost:4056/healthz
curl http://localhost:4056/metrics # métriques PrometheusJamais de 500 sur un document bancal : le service répond 200 avec status "error", pour qu'un fichier isolé ne casse pas un pipeline d'ingestion. Replis en cascade — OCR indisponible, on garde la couche texte ; LibreOffice absent, on passe au parser natif ; vision en échec, on conserve le texte OCR.
Le service comptable saisit trois cents factures par mois, arrivées par mail dans une dizaine de mises en page différentes.
Lecture automatique avec profil finance, extraction des champs, rapprochement avec les bons de commande de l'ERP, écriture des factures conformes et file d'exception pour le reste.
La saisie disparaît sur la majorité du flux. L'équipe traite les écarts, avec la pièce et le motif du doute sous les yeux.
Quinze ans de fiches techniques, normes et notes de calcul, dont beaucoup de scans, avec les valeurs enfermées dans des tableaux et des graphiques.
Reprise du fonds ancien avec profil technique, reconstruction des tableaux et rétablissement des données de graphiques, extraction structurée vers un tableau exploitable.
Les données techniques redeviennent interrogeables, y compris celles qui n'existaient que sous forme de courbe dans un PDF scanné.
Les comptes rendus et ordonnances contiennent des posologies que personne n'accepte de voir transiter par un service externe.
Déploiement local avec modèle de vision auto-hébergé et profil medical, qui amorce DCI, posologies et valeurs de référence sans jamais normaliser une dose.
L'extraction tourne dans les murs, à coût nul par page, avec un vocabulaire qui rend la transcription des posologies fiable.
Ces produits sont déjà construits. Certains sont accessibles en ligne, les autres se montrent en démonstration sur demande.
Vos formulaires administratifs remplis à partir de vos documents.
L'agent lit vos pièces, pré-remplit le CERFA correspondant et signale les incohérences entre les champs. Vous relisez, vous signez, vous avez gagné une matinée.
Tester en ligneVotre mémoire technique rédigé sur votre propre trame.
L'agent lit le cahier des charges, va chercher vos références et rédige selon votre structure et votre charte. Vous passez de la page blanche à la relecture.
Demander une démoNon. L'extraction se fait par compréhension du document, pas par position sur la page. C'est ce qui permet d'absorber une mise en page nouvelle sans reparamétrer, et ce qui distingue cette approche des gabarits rigides.
Un modèle de vision lit la figure et reconstruit une table : une ligne par graduation, une colonne par série, avec le type, le titre, les axes et leurs unités, et la légende. Les valeurs lues à l'échelle plutôt qu'étiquetées sont marquées ≈ — vous voyez ce qui est certain et ce qui est estimé.
Elle est d'abord re-rendue en 300 dpi et relue par un modèle plus fort. Si cela ne suffit pas, elle part dans la file d'exception avec le motif. Une donnée incertaine n'entre jamais en base : c'est la règle qui rend le reste exploitable.
Non, et c'est le point de conception : une page propre n'est jamais relue. Sur un corpus imprimé standard, le surcoût de l'escalade est proche de zéro. Vous pouvez de toute façon connaître la facture avant de la déclencher, l'estimation étant locale et gratuite.
Oui. Avec un endpoint de vision local — Ollama, vLLM sur votre GPU, PaddleOCR-VL — texte, HTML, XML, CSV, Office, Excel, images, EPUB, e-mails et PDF sont traités sans qu'aucune donnée ne quitte la machine, à coût nul par page.
96 % de rappel sur scan arabe à notre banc interne, là où l'état de l'art public en PDF vers Markdown arabe plafonne autour de 65 % au benchmark KITAB-bench. Le sens de lecture droite-à-gauche est respecté, y compris dans les tableaux.
Par API quand elle existe : le service expose des endpoints de parsing, de rendu et d'extraction de figures, avec des métriques Prometheus pour la supervision. Quand l'ERP n'a pas d'API, le pôle logiciel construit le connecteur — c'est souvent le vrai sujet du projet.
Le service répond 200 avec un statut d'erreur plutôt qu'un 500, pour qu'un fichier isolé ne casse pas votre pipeline d'ingestion. Des garde-fous anti-bombe zip et une limite de taille par fichier protègent le service des archives piégées.
Nous ne visons pas zéro intervention humaine, et nous nous méfions de qui le promet. Sur un flux réel, une part des pièces sera toujours ambiguë : notre objectif est que cette part soit identifiée et escaladée, jamais écrite en base sans contrôle. Le moteur ne normalise jamais une posologie et ne recalcule jamais un total — il transcrit ce qui est écrit, et signale ce qu'il n'a pas su lire. Enfin, le mode 100 % local est plus lent et demande un GPU : nous le recommandons quand la sensibilité l'exige, pas par principe.
Apportez-en vingt, les plus moches compris : scans de travers, tableaux à en-têtes fusionnés, graphiques sans table de données. Nous vous rendrons le Markdown extrait et le coût réel par page.