{
  "benchmarkId": "einvoi-factur-x-2026-v1",
  "version": "1.0.0",
  "publishedAt": "2026-08-16",
  "generatedAt": "2026-08-17T10:02:22.545Z",
  "scope": "Controlled synthetic corpus for deterministic invoice extraction, accounting controls and relationship classification.",
  "scopeType": "controlled_synthetic_corpus",
  "realWorldEvidence": "not_measured",
  "canonicalUrl": "https://einvoi.com/fr/research/factur-x-benchmark-2026",
  "methodologyUrl": "https://einvoi.com/fr/research/methodology",
  "termsUrl": "https://einvoi.com/fr/research/conditions-utilisation",
  "productStatus": "production",
  "productStatusUrl": "https://einvoi.com/research/production-status.json",
  "productionReleaseSha": "97f56a49ee08e708048be3ff3348a35dbbddbbe4",
  "benchmarkStatus": "passed",
  "fixturePolicy": "All inputs are synthetic. PDF and XML fixtures are generated or curated locally; relationship-only records are generated deterministically by the benchmark runner.",
  "sourceRevision": "36f0cff5689bd2b80d5ef44a9166c171bf193698",
  "execution": {
    "node": "v24.15.0",
    "platform": "win32",
    "architecture": "x64"
  },
  "counts": {
    "scenarios": 20,
    "uniqueFixtureIds": 22,
    "expectedAnomalyScenarios": 9,
    "expectedValidScenarios": 11,
    "passed": 20,
    "failed": 0
  },
  "confusionMatrix": {
    "truePositive": 9,
    "trueNegative": 11,
    "falsePositive": 0,
    "falseNegative": 0
  },
  "metrics": { "precision": 1, "recall": 1, "accuracy": 1 },
  "limitations": [
    "Results apply only to this controlled synthetic corpus and benchmark version.",
    "Scenario-level metrics are not estimates of field performance or customer error rates.",
    "Image-only inputs report the deterministic OCR-required boundary in Node; browser OCR quality is validated separately.",
    "Native-text PDF extraction scenarios score the declared identity/amount extraction target; separately listed accounting-control failures are not silently reclassified as extraction failures.",
    "No real customer invoice is included or persisted by this benchmark."
  ],
  "results": [
    {
      "id": "pdf-fr",
      "label": "French native-text PDF",
      "expectedAnomaly": false,
      "fixtureIds": ["01_french_comma.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=FR-2026-0001",
        "grossAmountMinor=186379",
        "failedControls=EN16931-BR-CO-13|EN16931-BR-CO-14"
      ],
      "passed": true,
      "durationMs": 2007.6
    },
    {
      "id": "pdf-en",
      "label": "English native-text PDF",
      "expectedAnomaly": false,
      "fixtureIds": ["02_english_dot.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=EN-2026-0002",
        "grossAmountMinor=150000",
        "failedControls=EN16931-BR-CO-13|EN16931-BR-CO-14"
      ],
      "passed": true,
      "durationMs": 12.89
    },
    {
      "id": "pdf-de",
      "label": "German native-text PDF",
      "expectedAnomaly": false,
      "fixtureIds": ["03_german.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=DE-2026-0003",
        "grossAmountMinor=95200",
        "failedControls=EN16931-BR-CO-13|EN16931-BR-CO-14"
      ],
      "passed": true,
      "durationMs": 10.85
    },
    {
      "id": "pdf-es",
      "label": "Spanish native-text PDF",
      "expectedAnomaly": false,
      "fixtureIds": ["04_spanish.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=ES-2026-0004",
        "grossAmountMinor=108900",
        "failedControls=EN16931-BR-CO-13|EN16931-BR-CO-14"
      ],
      "passed": true,
      "durationMs": 9.15
    },
    {
      "id": "pdf-mixed-vat",
      "label": "Mixed VAT PDF",
      "expectedAnomaly": false,
      "fixtureIds": ["05_mixed_vat.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=FR-MIXED-0005",
        "grossAmountMinor=130550",
        "failedControls=EN16931-BR-CO-13"
      ],
      "passed": true,
      "durationMs": 10.33
    },
    {
      "id": "pdf-missing-due-date",
      "label": "Missing due date",
      "expectedAnomaly": true,
      "fixtureIds": ["06_missing_due_date.pdf"],
      "detectedAnomaly": true,
      "outcome": "MISSING_DUE_DATE",
      "evidence": ["Échéance non trouvée."],
      "passed": true,
      "durationMs": 7.58
    },
    {
      "id": "pdf-credit-note",
      "label": "Credit note",
      "expectedAnomaly": false,
      "fixtureIds": ["07_credit_note.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=AV-2026-0007",
        "grossAmountMinor=-12000",
        "failedControls=EN16931-BR-CO-13|EN16931-BR-CO-14"
      ],
      "passed": true,
      "durationMs": 7.97
    },
    {
      "id": "pdf-multipage",
      "label": "Multi-page PDF",
      "expectedAnomaly": false,
      "fixtureIds": ["08_multi_page.pdf"],
      "detectedAnomaly": false,
      "outcome": "EXPECTED_EXTRACTION",
      "evidence": [
        "format=PDF",
        "provenance=PDF_TEXT",
        "documentNumber=FR-MULTI-0008",
        "grossAmountMinor=240000",
        "failedControls=EN16931-BR-CO-13|EN16931-BR-CO-14"
      ],
      "passed": true,
      "durationMs": 9.19
    },
    {
      "id": "pdf-visual-duplicate",
      "label": "Same invoice in two visual layouts",
      "expectedAnomaly": true,
      "fixtureIds": ["09_layout_a.pdf", "10_layout_b.pdf"],
      "detectedAnomaly": true,
      "outcome": "EXACT_DUPLICATE",
      "evidence": [
        "Clé métier normalisée identique.",
        "matched=supplier|buyer|documentNumber|currency|grossAmount",
        "conflicting=none"
      ],
      "passed": true,
      "durationMs": 27.96
    },
    {
      "id": "pdf-amount-conflict",
      "label": "Same invoice with conflicting totals",
      "expectedAnomaly": true,
      "fixtureIds": ["11_amount_conflict_a.pdf", "12_amount_conflict_b.pdf"],
      "detectedAnomaly": true,
      "outcome": "CONFLICT",
      "evidence": [
        "Même identité de facture, mais les montants TTC sont contradictoires.",
        "matched=supplier|buyer|documentNumber|currency",
        "conflicting=grossAmount"
      ],
      "passed": true,
      "durationMs": 10.71
    },
    {
      "id": "pdf-password",
      "label": "Password-protected PDF",
      "expectedAnomaly": true,
      "fixtureIds": ["13_password_protected.pdf"],
      "detectedAnomaly": true,
      "outcome": "PDF_PASSWORD_REQUIRED",
      "evidence": ["Protected input stopped before extraction."],
      "passed": true,
      "durationMs": 44.4
    },
    {
      "id": "pdf-blank",
      "label": "Blank PDF",
      "expectedAnomaly": true,
      "fixtureIds": ["14_blank.pdf"],
      "detectedAnomaly": true,
      "outcome": "SCAN_OCR_REQUIRED",
      "evidence": [
        "SCAN_OCR_REQUIRED: PDF numérisé sans couche texte exploitable; OCR local requis."
      ],
      "passed": true,
      "durationMs": 4.7
    },
    {
      "id": "pdf-image-only",
      "label": "Image-only PDF without browser OCR",
      "expectedAnomaly": true,
      "fixtureIds": ["15_image_only_scan.pdf"],
      "detectedAnomaly": true,
      "outcome": "SCAN_OCR_REQUIRED",
      "evidence": [
        "SCAN_OCR_REQUIRED: PDF numérisé sans couche texte exploitable; OCR local requis."
      ],
      "passed": true,
      "durationMs": 6.15
    },
    {
      "id": "cii-valid",
      "label": "Valid CII invoice",
      "expectedAnomaly": false,
      "fixtureIds": ["cii-valid.xml"],
      "detectedAnomaly": false,
      "outcome": "VALID_DOCUMENT",
      "evidence": ["syntax=CII", "failedControls=none"],
      "passed": true,
      "durationMs": 3.22
    },
    {
      "id": "cii-tax-mismatch",
      "label": "CII declared tax mismatch",
      "expectedAnomaly": true,
      "fixtureIds": ["cii-valid.xml#tax-mismatch"],
      "detectedAnomaly": true,
      "outcome": "ACCOUNTING_CONTROL_FAILURE",
      "evidence": [
        "syntax=CII",
        "failedControls=EN16931-BR-CO-14|EN16931-BR-CO-15"
      ],
      "passed": true,
      "durationMs": 0.67
    },
    {
      "id": "ubl-valid",
      "label": "Valid UBL invoice",
      "expectedAnomaly": false,
      "fixtureIds": ["ubl-valid.xml"],
      "detectedAnomaly": false,
      "outcome": "VALID_DOCUMENT",
      "evidence": ["syntax=UBL", "documentType=invoice", "failedControls=none"],
      "passed": true,
      "durationMs": 1.1
    },
    {
      "id": "ubl-credit-note",
      "label": "UBL credit note",
      "expectedAnomaly": false,
      "fixtureIds": ["ubl-valid.xml#credit-note"],
      "detectedAnomaly": false,
      "outcome": "VALID_DOCUMENT",
      "evidence": [
        "syntax=UBL",
        "documentType=credit_note",
        "failedControls=none"
      ],
      "passed": true,
      "durationMs": 0.63
    },
    {
      "id": "factur-x-valid",
      "label": "Factur-X embedded CII",
      "expectedAnomaly": false,
      "fixtureIds": ["cii-valid.xml#factur-x"],
      "detectedAnomaly": false,
      "outcome": "VALID_FACTUR_X",
      "evidence": [
        "syntax=CII",
        "presentation=Factur-X (PDF + CII)",
        "failedControls=none"
      ],
      "passed": true,
      "durationMs": 10.36
    },
    {
      "id": "date-conflict",
      "label": "Same identity with different issue dates",
      "expectedAnomaly": true,
      "fixtureIds": ["relationship-date-a", "relationship-date-b"],
      "detectedAnomaly": true,
      "outcome": "LIKELY_DUPLICATE",
      "evidence": [
        "Même identité de facture, mais les dates d’émission sont différentes.",
        "Vérifiez s’il s’agit de deux versions de la même facture ou d’une réémission.",
        "matched=supplier|buyer|documentNumber|currency|grossAmount",
        "conflicting=issueDate"
      ],
      "passed": true,
      "durationMs": 0.35
    },
    {
      "id": "multichannel-copy",
      "label": "Same invoice received through two channels",
      "expectedAnomaly": true,
      "fixtureIds": ["cii-valid.xml", "cii-valid.xml#factur-x"],
      "detectedAnomaly": true,
      "outcome": "MULTI_CHANNEL_COPY",
      "evidence": [
        "Même clé métier reçue par plusieurs canaux.",
        "matched=supplier|buyer|documentNumber|currency|grossAmount",
        "conflicting=none"
      ],
      "passed": true,
      "durationMs": 21.59
    }
  ]
}
