Comparaison de contrats

HPDFContractCompare compare le texte sémantique et la géométrie des lignes de deux documents PDF chargés, aligne les paragraphes et renvoie des enregistrements auditables d'insertion, de suppression, de remplacement et de déplacement

Utilisez cet assistant pour la revue de formulation et de clauses, et THPDFDocComparison pour les différences de pages, d'objets et de rendu

Comparer des contrats chargés

uses HPDFDoc, HPDFTypes, HPDFContractCompare;

Options := HPDFDefaultContractCompareOptions;
Options.Granularity := ccgWord;
BeforePDF.LoadFromFile('contract-before.pdf');
AfterPDF.LoadFromFile('contract-after.pdf');
if HPDFCompareContracts(BeforePDF, AfterPDF, Options, Report, Token) then
begin
  HTML := HPDFContractReviewHTML(Report, 'Services agreement review',
    8388608, Token);
  HPDFSaveContractAnnotatedPDF('contract-before.pdf',
    'contract-before-review.pdf', Report, ccsBefore, Token);
  HPDFSaveContractAnnotatedPDF('contract-after.pdf',
    'contract-after-review.pdf', Report, ccsAfter, Token);
end;

Enregistrez le HTML renvoyé en UTF-8 et inspectez Report.Status et Report.Note lorsque la fonction de comparaison renvoie false

Alignement des paragraphes et changements

Références de pages et de géométrie

PageIndex et ParagraphIndex sont en base zéro, tandis que CharacterStart est une position UTF-16 en base un au sein du paragraphe normalisé en espaces

Le côté absent d'une insertion ou suppression de paragraphe entier porte des index de page et de paragraphe de -1, et une insertion ou suppression de token au sein d'un paragraphe apparié conserve une position de longueur nulle du côté opposé

Chaque rectangle porte son propre index de page et couvre une ligne sémantique en intersection dans l'espace utilisateur PDF, et un paragraphe à cheval sur plusieurs pages peut avoir des rectangles sur plusieurs pages

Les emplacements décrivent la couverture de lignes plutôt que des quadrilatères de caractères exacts, si bien qu'un PDF annoté peut mettre en surbrillance la même ligne pour plusieurs changements de mots indépendants

Exclure les éléments de page récurrents et les clauses types

Par défaut, les lignes sémantiques identiques apparaissant dans les 54 points supérieurs ou inférieurs d'au moins deux pages distinctes de chaque entrée sont exclues, et les chiffres de marge sont normalisés pour que des numéros de page répétés puissent correspondre

Les documents avant et après sont filtrés indépendamment, et les répétitions du corps restent éligibles à la comparaison quel que soit leur nombre d'occurrences

Options.IgnoreRepeatedHeadersFooters := False;
Options.NormalizeMarginDigits := False;
Options.HeaderMarginPoints := 40;
Options.FooterMarginPoints := 35;
SetLength(Options.ExcludedLineTexts, 1);
Options.ExcludedLineTexts[0] :=
  'The parties shall maintain an accurate register of approved subcontractors.';

ExcludedLineTexts supprime une ligne sémantique complète par égalité littérale après normalisation des espaces, respecte IgnoreCase et n'interprète jamais d'expressions régulières ni de motifs de sous-chaînes

Choisissez marges et exclusions avec soin, car des dates ou d'autres textes contractuels situés dans une ligne de marge récurrente exclue sont absents de la revue de formulation

Budgets et annulation

OptionDéfautPortée
MaxPages500Chaque document
MaxParagraphs4000Chaque document après exclusions
MaxSemanticLines50000Lignes sémantiques combinées avant instantanés et exclusions
MaxCharacters2000000Texte de lignes extrait combiné avant exclusions
MaxTokens200000Tokens de mots et, en mode phrase, de phrases combinés
MaxDifferences10000Enregistrements renvoyés, déplacements compris
MaxAlignmentCells2000000Matrices de tokens cumulées des paragraphes modifiés
MaxWorkUnits50000000Comptabilité d'extraction et travail d'alignement

Une limite de budget renvoie ccsBudgetExceeded et une annulation renvoie ccsCancelled, avec conservation des constatations partielles pour diagnostic et marquage d'incomplétude en HTML

L'annulation est contrôlée entre les extractions de pages et dans toutes les boucles d'alignement de la bibliothèque, tandis que l'extracteur sémantique mono-page sous-jacent reste synchrone

ccsInvalidInput signale des documents manquants, des ordinaux d'enum invalides ou des options invalides, et ccsExtractionFailed signale des pages sans texte extractible ou un échec d'extraction sémantique

Un OCR ou une suppression explicite des pages blanches est requis avant de comparer des pages sans texte extractible, et ccsComplete ne certifie que l'achèvement de cette comparaison de texte

Artefacts de revue

HPDFContractReviewHTML renvoie un document autonome avec titre échappé, messages, textes, contextes complets de paragraphes, types de changements et les deux emplacements source, avec une limite de sortie de 8388608 caractères UTF-16 par défaut

L'exporteur HTML lève EHPDFContractCompareBudget lorsque sa sortie dépasse la limite configurée, et son jeton d'annulation lève EHPDFOperationCancelled

HPDFSaveContractAnnotatedPDF exige un rapport terminé, charge un document source séparé et vérifie chaque instantané de page sémantique, géométrie exacte des lignes comprise, avant d'ajouter des surbrillances avec des commentaires de revue numérotés

Spécifiez des chemins source et sortie distincts, choisissez ccsBefore ou ccsAfter, et exportez les deux versions lorsque vous devez passer en revue ensemble les suppressions et insertions de paragraphes entiers

Sous Windows, les identités des fichiers source et sortie sont vérifiées pour rejeter les liens physiques ou autres alias du fichier source

L'exporteur PDF désactive AutoLaunch, laisse les documents d'entrée et le fichier source inchangés, et contrôle l'annulation avant le chargement, entre les pages et les changements, et avant l'enregistrement

Cet assistant compare la formulation extraite et les références de mise en page sans inférer de sens juridique, reconnaître du texte scanné ni certifier l'effet juridique d'une révision

API associées

HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF