1. Extraire et parser le XML embarqué
Le fichier factur-x.xml est attaché au PDF (pièce jointe PDF/A-3). Extraction Python via facturx get_facturx_xml_from_pdf, puis détection du profil via l'URN du GuidelineSpecifiedDocumentContextParameter.
from facturx import get_facturx_xml_from_pdf
with open('facture.pdf', 'rb') as f:
name, xml = get_facturx_xml_from_pdf(f.read(), check_xsd=False)2. Validation XSD
Chaque profil (MINIMUM à EXTENDED) a ses schémas XSD officiels (FNFE-MPE). Une facture EN16931 validée avec le XSD BASIC peut passer à tort — utilisez le XSD du profil déclaré.
3. Règles Schematron EN 16931
Les règles BR-* vérifient la cohérence métier : totaux (BR-CO-*), TVA par catégorie (BR-S-*, BR-E-*), présence des champs obligatoires. Notre moteur retourne chaque échec avec code, sévérité et message français (catalogue).
4. Conformité PDF/A-3 avec veraPDF
veraPDF est le validateur de référence. Les erreurs les plus fréquentes : polices non intégrées (§6.2.11.4.1) et espaces colorimétriques sans OutputIntent (§6.2.4.3).
verapdf --format json facture-facturx.pdf | jq '.report.jobs[0].validationResult'
Automatiser via l'API FacturBridge
L'endpoint interne /internal/validate exécute la chaîne complète et retourne un ValidationReport structuré — voir référence API.