{
  "version": "2026-09-24-v21",
  "scope": "Cinq essais exécutés sur un document artificiel ; sources, sorties, réglages, versions et empreintes publiés. Aucun document utilisateur. Les douze essais V16/V18 conservent leur date et leurs observations d’origine.",
  "trials": [
    {
      "page": "pdf-word",
      "software": "Chromium 153.0.8010.0 ; PDF.js 6.3.289 ; moteur local V21",
      "platform": "Linux x86_64, navigateur automatisé Playwright",
      "date": "2026-09-24",
      "dateLabel": "24 septembre 2026",
      "heading": "Essai PDF vers DOCX : texte, signes et pages",
      "source": "document-controle.pdf",
      "output": "pdf-word.docx",
      "sourceUrl": "/donnees/exemples/v16/document-controle.pdf",
      "outputUrl": "/donnees/exemples/v21/pdf-word.docx",
      "sourceBytes": 54948,
      "bytes": 2418,
      "sourceSha256": "23b1bf3dfb898ba652dc43e8e1a64cbd7b1ee3450a5f4070e7078c4bb70494a1",
      "sha256": "e60be40155e6eba343727055983b2db1c59af20fbcc2c98abaa097efdf85b0b5",
      "settings": {
        "pages": "toutes",
        "expectedPages": 2,
        "observedCharacters": 1542,
        "outputTables": 0
      },
      "result": "Deux pages traitées. Les accents, les codes 00123 et 00456, le signe moins, la négation et le repère de la seconde page sont présents dans le DOCX. Le document obtenu a été ouvert et rendu avec LibreOffice : deux pages lisibles. Les cellules du tableau deviennent des lignes de texte.",
      "limitations": "Un PDF textuel de contrôle, sans mise en page complexe. Le tableau ne reste pas un tableau Word. Les scans et pages sans texte sont refusés ; aucune reconnaissance OCR. Le résultat ne prouve pas la conservation de toutes les polices, colonnes ou ligatures.",
      "manifestUrl": "/donnees/exemples/v21/essais-fichiers.json",
      "additionalInputs": [
        {
          "url": "/donnees/exemples/v21/scan-sans-texte.pdf",
          "label": "Télécharger le scan de contrôle : refus attendu pour le texte"
        },
        {
          "url": "/donnees/exemples/v21/texte-et-scan.pdf",
          "label": "Télécharger le PDF mixte : les pages sans texte ne doivent pas être ignorées"
        }
      ]
    },
    {
      "page": "pdf-excel",
      "software": "Chromium 153.0.8010.0 ; PDF.js 6.3.289 ; moteur XLSX local V21",
      "platform": "Linux x86_64, navigateur automatisé Playwright",
      "date": "2026-09-24",
      "dateLabel": "24 septembre 2026",
      "heading": "Essai PDF vers XLSX : codes et total contrôlés",
      "source": "document-controle.pdf",
      "output": "pdf-excel.xlsx",
      "sourceUrl": "/donnees/exemples/v16/document-controle.pdf",
      "outputUrl": "/donnees/exemples/v21/pdf-excel.xlsx",
      "sourceBytes": 54948,
      "bytes": 3253,
      "sourceSha256": "23b1bf3dfb898ba652dc43e8e1a64cbd7b1ee3450a5f4070e7078c4bb70494a1",
      "sha256": "d74cd251c908632a7ab86ca00bda99461d61c9d51773f2263c998d7d8235fba3",
      "settings": {
        "page": 1,
        "table": 1,
        "numbers": true,
        "decimal": ",",
        "rows": 4,
        "columns": 3
      },
      "result": "Le classeur contient 4 lignes et 3 colonnes. Les codes 00123 et 00456 restent du texte. Avec la reconnaissance des nombres activée, les cellules 12,50, −3,20 et 9,30 sont numériques ; 12,50 − 3,20 = 9,30. Le total est une valeur, pas une formule reconstruite.",
      "limitations": "Un tableau simple de contrôle. Les cellules fusionnées, images, formules, tableaux imbriqués et mises en page complexes ne sont pas validés par cet essai. Les puces sous le tableau sont exclues du bloc aligné.",
      "manifestUrl": "/donnees/exemples/v21/essais-fichiers.json"
    },
    {
      "page": "word-excel",
      "software": "Chromium 153.0.8010.0 ; moteur XLSX local V21",
      "platform": "Linux x86_64, navigateur automatisé Playwright",
      "date": "2026-09-24",
      "dateLabel": "24 septembre 2026",
      "heading": "Essai DOCX vers XLSX : codes et total contrôlés",
      "source": "document-controle.docx",
      "output": "word-excel.xlsx",
      "sourceUrl": "/donnees/exemples/v16/document-controle.docx",
      "outputUrl": "/donnees/exemples/v21/word-excel.xlsx",
      "sourceBytes": 37952,
      "bytes": 3253,
      "sourceSha256": "d3ee9a6c24f3fe297224ea723ae8a888b1dd3d9bad1a4bf1ae3a5836f6795ddb",
      "sha256": "d74cd251c908632a7ab86ca00bda99461d61c9d51773f2263c998d7d8235fba3",
      "settings": {
        "page": 1,
        "table": 1,
        "numbers": true,
        "decimal": ",",
        "rows": 4,
        "columns": 3
      },
      "result": "Le classeur contient 4 lignes et 3 colonnes. Les codes 00123 et 00456 restent du texte. Avec la reconnaissance des nombres activée, les cellules 12,50, −3,20 et 9,30 sont numériques ; 12,50 − 3,20 = 9,30. Le total est une valeur, pas une formule reconstruite.",
      "limitations": "Un tableau simple de contrôle. Les cellules fusionnées, images, formules, tableaux imbriqués et mises en page complexes ne sont pas validés par cet essai. Seul le format DOCX est pris en charge ; le texte hors tableau n’est pas exporté.",
      "manifestUrl": "/donnees/exemples/v21/essais-fichiers.json"
    },
    {
      "page": "pdf-jpg",
      "software": "Chromium 153.0.8010.0 ; PDF.js 6.3.289",
      "platform": "Linux x86_64, navigateur automatisé Playwright",
      "date": "2026-09-24",
      "dateLabel": "24 septembre 2026",
      "heading": "Essai PDF vers JPG : deux pages séparées",
      "source": "document-controle.pdf",
      "output": "pdf-jpg.zip",
      "sourceUrl": "/donnees/exemples/v16/document-controle.pdf",
      "outputUrl": "/donnees/exemples/v21/pdf-jpg.zip",
      "sourceBytes": 54948,
      "bytes": 301296,
      "sourceSha256": "23b1bf3dfb898ba652dc43e8e1a64cbd7b1ee3450a5f4070e7078c4bb70494a1",
      "sha256": "173079c53aeeb5606676fdf4c9eef1f5a55c9dba7c75f666aff5d905f24208f2",
      "settings": {
        "pages": "toutes",
        "dpi": 150,
        "jpegQuality": 0.92,
        "images": [
          {
            "filename": "document-controle-page-001.jpg",
            "width": 1275,
            "height": 1651,
            "sha256": "183570fad09702a9da86818d31b188630539e127884d221b49919bdb697e9035"
          },
          {
            "filename": "document-controle-page-002.jpg",
            "width": 1275,
            "height": 1651,
            "sha256": "f2326a53401bfda7d9e674249dd02a158c607fa096096dec6e9e728113ddd491"
          }
        ]
      },
      "result": "Deux images JPEG de 1 275 × 1 651 pixels à 150 ppp sont réunies dans le ZIP. Les deux pages ont été relues visuellement : accents, tableau, codes et repère de fin restent lisibles.",
      "limitations": "Un document artificiel de deux pages. Les JPEG sont des images avec compression ; ils ne contiennent pas de texte sélectionnable. Cet essai ne valide pas un OCR ni la conservation des propriétés interactives du document.",
      "manifestUrl": "/donnees/exemples/v21/essais-fichiers.json"
    },
    {
      "page": "word-jpg",
      "software": "LibreOfficeDev 26.8.0.0.alpha0 (environnement de contrôle) ; Chromium 153.0.8010.0 ; PDF.js 6.3.289",
      "platform": "Linux x86_64, navigateur automatisé Playwright",
      "date": "2026-09-24",
      "dateLabel": "24 septembre 2026",
      "heading": "Essai Word vers JPG : deux pages séparées",
      "source": "document-controle.docx",
      "output": "word-jpg.zip",
      "sourceUrl": "/donnees/exemples/v16/document-controle.docx",
      "outputUrl": "/donnees/exemples/v21/word-jpg.zip",
      "sourceBytes": 37952,
      "bytes": 301296,
      "sourceSha256": "d3ee9a6c24f3fe297224ea723ae8a888b1dd3d9bad1a4bf1ae3a5836f6795ddb",
      "sha256": "56384f869ea47186336d047c0c75ac1495292cad7c2f6a7b922c615c30a38db1",
      "settings": {
        "pages": "toutes",
        "dpi": 150,
        "jpegQuality": 0.92,
        "images": [
          {
            "filename": "document-controle-page-001.jpg",
            "width": 1275,
            "height": 1651,
            "sha256": "183570fad09702a9da86818d31b188630539e127884d221b49919bdb697e9035"
          },
          {
            "filename": "document-controle-page-002.jpg",
            "width": 1275,
            "height": 1651,
            "sha256": "f2326a53401bfda7d9e674249dd02a158c607fa096096dec6e9e728113ddd491"
          }
        ]
      },
      "result": "Deux images JPEG de 1 275 × 1 651 pixels à 150 ppp sont réunies dans le ZIP. Les deux pages ont été relues visuellement : accents, tableau, codes et repère de fin restent lisibles.",
      "limitations": "Un document artificiel de deux pages. Les JPEG sont des images avec compression ; ils ne contiennent pas de texte sélectionnable. Cet essai ne valide pas un OCR ni la conservation des propriétés interactives du document.",
      "manifestUrl": "/donnees/exemples/v21/essais-fichiers.json",
      "additionalInputs": [
        {
          "url": "/donnees/exemples/v21/word-export-pdf.pdf",
          "label": "Télécharger le PDF intermédiaire exporté depuis Word avec LibreOffice"
        }
      ],
      "intermediateSha256": "0a3f3ece1b5557acc17760e419ac0d44c45661a5db71f9fd571337daad67bc9c",
      "steps": [
        "Ouvrir le DOCX dans LibreOffice et exporter les deux pages en PDF.",
        "Ouvrir PDF vers JPG sur Convertisseur.com, sélectionner le PDF exporté, toutes les pages et 150 ppp.",
        "Créer les images puis ouvrir les deux JPEG du ZIP."
      ]
    }
  ],
  "additionalBrowserChecks": [
    {
      "name": "suite publique",
      "passed": true,
      "result": "1481 / 1481 tests réussis\n\nAucune régression détectée par la suite publique."
    },
    {
      "name": "scan-sans-texte.pdf",
      "passed": true,
      "status": "La page 1 ne contient pas de texte extractible. Un scan nécessite une reconnaissance OCR ; aucune page n’est ignorée silencieusement."
    },
    {
      "name": "texte-et-scan.pdf",
      "passed": true,
      "status": "La page 2 ne contient pas de texte extractible. Un scan nécessite une reconnaissance OCR ; aucune page n’est ignorée silencieusement."
    },
    {
      "name": "protege.pdf",
      "passed": true,
      "status": "PDF protégé : indiquez son mot de passe dans les options."
    },
    {
      "name": "mot de passe incorrect refusé",
      "passed": true,
      "status": "PDF protégé : indiquez son mot de passe dans les options."
    },
    {
      "name": "mot de passe correct",
      "passed": true,
      "status": "2 page(s) traitée(s), 1542 caractères extraits. Aperçu limité à 5 000 caractères ; le DOCX contient tout le texte extrait. Relisez notamment les colonnes et les caractères accentués."
    },
    {
      "name": "sélection textuelle dans PDF mixte",
      "passed": true,
      "status": "1 page(s) traitée(s), 679 caractères extraits. Aperçu limité à 5 000 caractères ; le DOCX contient tout le texte extrait. Relisez notamment les colonnes et les caractères accentués."
    },
    {
      "name": "page inexistante refusée",
      "passed": true,
      "status": "Les pages doivent être comprises entre 1 et 2, avec 100 pages maximum."
    },
    {
      "name": "scan vers JPEG",
      "passed": true,
      "status": "1 image(s) JPG créée(s) à 150 ppp. Le texte est désormais une image ; le PDF original reste inchangé."
    },
    {
      "name": "page tournée vers JPEG",
      "passed": true,
      "status": "1 image(s) JPG créée(s) à 150 ppp. Le texte est désormais une image ; le PDF original reste inchangé."
    },
    {
      "name": "chaîne DOCX → PDF LibreOffice → JPG local",
      "passed": true,
      "status": "2 image(s) JPG créée(s) à 150 ppp. Le texte est désormais une image ; le PDF original reste inchangé."
    },
    {
      "name": "ancien téléchargement supprimé après changement de pages",
      "passed": true
    },
    {
      "name": "sélection de la seconde page",
      "passed": true,
      "status": "1 image(s) JPG créée(s) à 150 ppp. Le texte est désormais une image ; le PDF original reste inchangé."
    },
    {
      "name": "annulation sans résultat tardif",
      "passed": true
    },
    {
      "name": "export DOCX avec codes et nombres conservés comme texte",
      "passed": true,
      "status": "1 tableau(x) trouvé(s). Vérifiez le tableau choisi avant de créer le XLSX."
    },
    {
      "name": "édition manuelle et formule maintenue en texte",
      "passed": true
    },
    {
      "name": "archive Word invalide refusée",
      "passed": true,
      "status": "Le fichier est invalide ou endommagé. Vérifiez que son contenu correspond bien au format indiqué."
    },
    {
      "name": "fichier vide refusé",
      "passed": true,
      "status": "Le fichier est vide."
    },
    {
      "name": "lien partagé restaure la durée composée",
      "passed": true
    },
    {
      "name": "exemple décimal rétablit son format",
      "passed": true
    }
  ],
  "localRequestsOnly": true,
  "fixtures": [
    {
      "name": "word-export-pdf.pdf",
      "sha256": "0a3f3ece1b5557acc17760e419ac0d44c45661a5db71f9fd571337daad67bc9c",
      "bytes": 54948
    },
    {
      "name": "texte-et-scan.pdf",
      "sha256": "e63e3f1e4f4b66078d15611c3cde10edca315ca07f534256a526d17c09108f0a",
      "bytes": 3311315
    },
    {
      "name": "scan-sans-texte.pdf",
      "sha256": "b5ece38ebd65051c34b461d30ecb257c3e8a4de726fc16d86267e52dd2c1805b",
      "bytes": 3275261
    }
  ]
}
