Document Comparison

THPDFDocComparison compare deux documents THotPDF chargés et renvoie un rapport JSON déterministe

Comparaison structurelle

cmStructural démarre à partir de chaque catalogue de document, suit les références indirectes, et assigne des chemins à partir des clés de dictionnaire triées et des index de tableaux tels que $Catalog/Pages/Kids[0]/Contents

Les valeurs scalaires et les octets de flux décodés sont hachés avec SHA-256, de sorte que les grands flux sont comparés de manière incrémentale sans matérialiser une autre copie complète

Les objets avec le même chemin mais des signatures différentes sont signalés comme objectChanged ; les signatures égales à des chemins différents sont objectMoved ; les objets restants non appariés sont objectInserted ou objectDeleted

Alignement des pages

Les pages avec un texte extractible utilisent une signature de texte sémantique pour l'alignement et replient sur une signature structurelle lorsque le texte est vide ou indisponible

Un passage de plus longue sous-séquence croissante préserve l'ordre des pages entre insertions et suppressions tout en signalant un véritable réordonnancement comme pageMoved

Les pages alignées non appariées deviennent pageChanged, pageInserted ou pageDeleted ; les métadonnées de page sont signées indépendamment de /Parent, /Contents et /Resources pour éviter le bruit d'encodage des sous-ensembles de polices

Comparaison rendue

cmRenderedImage et cmFull rendent les pages communes à la DPI configurée et scannent chaque bitmap une fois pour calculer les pixels modifiés, le rapport de pixels modifiés, l'erreur de couleur absolue moyenne, le delta de couleur maximal et un score de luminance globale de type SSIM

THPDFRenderedCompareOptions sélectionne la différence RGB ou luminance, la tolérance de couleur par pixel, la similarité minimale, le rapport maximal de pixels modifiés, la taille de tuile, la rétention de région modifiée, les budgets de pixels et les superpositions PNG facultatives

Une page est similaire uniquement lorsque les critères de rapport de pixels modifiés et de similarité passent tous deux ; les métriques sont évaluées en pleine précision et arrondies à six décimales uniquement pour le rapport JSON déterministe

Les tuiles modifiées sont réunies en régions quatre-connexes déterministes et signalées avec des bornes d'espace pixel, des compteurs de pixels modifiés et des deltas de couleur maximaux

Lorsque les cartes thermiques sont activées, les pixels modifiés sont fusionnés du jaune au rouge sur le document A et enregistrés sous des fichiers de style page-000001-diff.png dans le répertoire choisi par l'appelant

Limites et exhaustivité

THPDFStructuralCompareLimits contrôle les limites d'objets, d'arêtes, de pages, de profondeur, de différences, d'octets de flux, d'octets de valeurs et d'octets de chemins

Si la traversée atteint une limite, le rapport inclut comparisonBudget, définit comparisonComplete sur false, et ne peut pas signaler les documents comme identiques

Le travail rendu est estimé avant allocation et borné par page et par comparaison ; les échecs de rendu, d'allocation ou de superposition ajoutent renderBudget ou renderError, définissent renderComparisonComplete et comparisonComplete sur false, et échouent en fail-closed

Modes de comparaison

Format du résultat

Le rapport inclut les compteurs sources, la télémétrie de traversée, les limites structurelles et de rendu normalisées, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical et un tableau differences

Les modes rendus renvoient également un tableau renderedPages avec le statut de page, les dimensions, les métriques, les régions modifiées et les chemins de superposition facultatifs, plus les compteurs agrégés de pages et de pixels rendus

Chaque différence peut inclure des valeurs stables pathA et pathB, des index de pages, des numéros d'objets, un type et une chaîne de détails

API associées

THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments