Factures France : PDF et Factur-X vers JSON, avec contrôles
Pricing
from $20.00 / 1,000 invoice parseds
Factures France : PDF et Factur-X vers JSON, avec contrôles
Lit des factures PDF : données structurées Factur-X / ZUGFeRD quand elles sont présentes, sinon règles sur le texte, avec une confiance par champ. Contrôles français : SIREN, TVA, HT + TVA = TTC, mentions obligatoires. Aucun modèle de langage.
Pricing
from $20.00 / 1,000 invoice parseds
Rating
0.0
(0)
Developer
Gecko Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Factures France : PDF et Factur-X vers JSON
Lit des factures PDF et renvoie un JSON normalisé, une confiance par champ et des contrôles propres à la France. Aucun modèle de langage, aucune clé d'API dans cette version.
Ordre de lecture
- Factur-X / ZUGFeRD 2.x : le XML CII embarqué (pièce jointe PDF/A-3
factur-x.xml,zugferd-invoice.xml,xrechnung.xml) est lu directement. Profils reconnus : MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED. Confiance « haute » pour chaque champ présent. - Couche texte (lecture
pypdf, mise en page conservée, 20 premières pages par défaut) + règles : SIREN/SIRET (clé vérifiée), TVA FR (cohérence avec le SIREN), IBAN (clé vérifiée), numéro, dates d'émission et d'échéance, totaux HT / TVA / TTC, noms vendeur et acheteur (heuristique, confiance basse). - PDF sans texte (scan) : statut
non_lisible_sans_modele, non facturé.
Confiance par champ : haute (étiquette + validation), moyenne (étiquette ou validation),
basse (déduction par position), champ_non_trouve (valeur null, jamais inventée). La liste
champs_non_trouves reprend les champs absents.
Non pris en charge dans cette version : XML UBL, ZUGFeRD 1.0, images (JPG/PNG), lignes de facture en lecture texte, factures en plusieurs devises.
Contrôles (sans appel réseau)
| Code | Vérifie |
|---|---|
SIREN_VENDEUR, SIREN_ACHETEUR | Clé de Luhn du SIREN ou du SIRET (exception La Poste) |
TVA_VENDEUR_COHERENTE, TVA_ACHETEUR_COHERENTE | Le numéro de TVA FR porte ce SIREN et la bonne clé |
TOTAUX_COHERENTS | HT + TVA = TTC à 0,02 € près |
VENTILATION_TVA | Somme des montants de TVA par taux = total TVA (Factur-X) |
MENTIONS_OBLIGATOIRES | Numéro, date, nom et SIREN/SIRET du vendeur, TVA du vendeur si TVA facturée, nom de l'acheteur, totaux, échéance ; en lecture texte : pénalités de retard et indemnité forfaitaire de 40 € |
SIREN_ACHETEUR_PRESENT | SIREN de l'acheteur, une des nouvelles mentions de la facturation électronique (les autres ne sont pas vérifiées) |
Statut de chaque contrôle : ok, echec ou non_verifiable. La liste des mentions est volontairement
limitée à ce qui se lit de façon fiable ; elle ne vaut pas audit de conformité.
Option checkSupplier (désactivée par défaut) : contrôle du vendeur par le paquet commun (même moteur
que l'Actor « Contrôle fournisseur » : identité, TVA VIES, BODACC, verdict). Pas d'événement facturé en plus.
Entrée
| Champ | Défaut | Rôle |
|---|---|---|
pdfUrls | – | Liens http(s) publics |
pdfFile | – | Un PDF déposé dans le formulaire |
keyValueStoreKeys | – | « cle » (magasin par défaut) ou « magasin/cle » (magasin nommé) |
checkSupplier | false | Contrôle du vendeur |
maxPdfMb | 10 | Taille maximale d'un PDF (1 à 25 Mo) |
maxPages | 20 | Pages lues en mode texte (1 à 50) |
maxItems | 100 | Nombre maximal de factures (≤ 1000) |
maxConcurrency | 2 | Factures en parallèle (1 à 4) |
Les liens d'enregistrement Apify (https://api.apify.com/v2/key-value-stores/<id>/records/<clé>) sont
lus par le SDK sur la plateforme (avec les droits de l'exécution), téléchargés comme un lien ordinaire en local.
Sécurité
- Téléchargement : http/https, ports 80 et 443, sans identifiants dans l'URL ; toutes les adresses
résolues doivent être publiques (refus de localhost, 127.0.0.0/8, 10/8, 172.16/12, 192.168/16,
169.254/16, 100.64/10, ::1, fc00::/7, fe80::/10, NAT64 64:ff9b::/96 et 64:ff9b:1::/48, IPv4 dans IPv6...).
La connexion TCP part vers l'adresse IP déjà vérifiée (backend réseau
PinnedPublicBackend, TLS sur le nom d'origine) : pas de seconde résolution DNS hors contrôle. L'adresse jointe est revérifiée après connexion. 3 redirections au plus, chacune revérifiée ; aucun proxy implicite. - Délai global de 90 s par téléchargement, abandon sous 10 Ko/s après 10 s, 15 s au plus sans recevoir
d'octet ; contenu compressé refusé (
Accept-Encoding: identity) ; taille bornée. - Analyse de chaque PDF dans un interpréteur jetable (
factures_france/worker.py) : espace mémoire plafonné à 300 Mo, temps CPU plafonné, aucun fichier écrit ; arrêt net (kill) à l'expiration du délai de 60 s. Le programme appelant n'est pas ré-importé (pas demultiprocessing). - Plafonds pypdf abaissés (
limits.py) : 10 Mo par flux décompressé, appliqués à chaque lecture. - Texte tronqué à 200 000 caractères et blancs réduits avant les expressions régulières, dont les répétitions de blancs sont bornées.
- XML lu sans entités externes, sans DTD, sans réseau, 5 Mo au plus. PDF chiffrés et non-PDF refusés.
- Un XML Factur-X presque vide (moins de 3 champs clés) n'est pas une facture extraite : repli sur le
texte, sinon
extraction_insuffisante, non facturé. - Journal : index, statut, méthode, taille et 12 premiers caractères du SHA-256. Jamais d'URL, de nom, d'IBAN, de SIREN ni de montant, y compris en cas d'erreur imprévue (seul le type d'erreur est noté).
- Mémoire : environ 150 Mo pour le processus principal + 300 Mo au plus par analyse. La concurrence effective est bornée par la mémoire allouée (512 Mo : 1 ; 1 Go : 2 ; 2 Go : 4). Mesure locale avec 512 Mo et les PDF de preuve de la revue : 329 Mo au plus au total.
Facturation
Un événement : invoice-parsed, facturé seulement si statut = extrait, c'est-à-dire XML Factur-X lu,
ou, en lecture texte, au moins 3 des 4 champs clés trouvés (numéro, date d'émission, total TTC, SIREN ou
TVA du vendeur). Non facturés : extraction_insuffisante, non_lisible_sans_modele, erreur, doublon.
Budget vérifié avant chaque lot, arrêt propre à la limite de dépense. Ne pas activer dans la console
l'événement synthétique apify-default-dataset-item.
Données personnelles
Les factures contiennent des données personnelles (noms, adresses, IBAN). Les entrées, le jeu de données
et le relevé BILAN restent dans les stockages du compte Apify de l'utilisateur ; le journal ne contient ni
lien, ni nom, ni IBAN, ni SIREN, ni montant (journaux httpx et httpcore forcés au niveau WARNING).
Avec checkSupplier, le SIREN/SIRET et le numéro de TVA du vendeur, et eux seuls, partent vers l'API
Recherche d'entreprises, VIES et l'API du BODACC.
Sortie Factur-X bornée : 1 000 lignes, 50 taux de TVA, textes de
1 000 caractères ; un résultat refusé par le stockage devient une erreur ELEMENT_TROP_GROS non facturée
et le lot continue.
Conditions d'utilisation / Terms
Outil destiné aux professionnels. Aucune valeur n'est inventée : un champ non lu vaut null, mais un champ lu peut être erroné, surtout en lecture du texte (d'où la confiance par champ). Vérifiez les résultats avant tout usage comptable, fiscal ou de paiement, en particulier l'IBAN. Les contrôles signalent des incohérences ; ils ne valent ni audit, ni attestation de conformité, ni conseil juridique, fiscal ou financier. Les factures fournies restent sous votre responsabilité et ne sont enregistrées que dans votre compte Apify. Dans les limites permises par la loi, l'éditeur ne répond pas des décisions prises sur la seule base de ces résultats, ni de l'usage que l'utilisateur en fait. Cette clause n'écarte aucun droit que la loi réserve aux consommateurs, notamment la garantie légale de conformité des contenus et services numériques.
Intended for business use. No value is invented, but a value read may be wrong: check results before any accounting, tax or payment use, especially the IBAN. Checks flag inconsistencies; they are not an audit or legal, tax or financial advice. To the extent permitted by law, the developer is not liable for decisions based solely on these results or for the user's use of them. Nothing here limits statutory consumer rights.
Mentions légales / Legal notice
- Éditeur et vendeur / Publisher and seller : Audric Moussaoui, entrepreneur individuel (EI), nom commercial / trade name « geckostar »
- Adresse / Address : 88 rue Oberkampf, 75011 Paris, France
- Téléphone / Phone : +33 6 95 11 28 15
- Courriel / E-mail : audricmm@gmail.com
- SIREN : en cours d'attribution, déclaration d'activité déposée le 24/10/2026 / being assigned, registration filed on 24 October 2026
- Directeur de la publication / Publication director : Audric Moussaoui
- TVA non applicable, art. 293 B du CGI / VAT not applicable (French VAT franchise, art. 293 B CGI)
- Hébergement / Hosting : Apify Technologies s.r.o., Vodičkova 704/36, 110 00 Prague 1, République tchèque / Czech Republic (hello@apify.com)