Vertragsvergleich

HPDFContractCompare vergleicht semantischen Text und Zeilengeometrie zweier geladener PDF-Dokumente, gleicht Absätze ab und liefert prüfbare Insert-, Delete-, Replace- und Move-Einträge

Diesen Helfer nehmen Sie für Formulierungs- und Klausel-Review; für Seiten-, Objekt- und gerenderte Unterschiede nehmen Sie THPDFDocComparison

Geladene Verträge vergleichen

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;

Speichern Sie das zurückgegebene HTML als UTF-8, und sehen Sie sich Report.Status und Report.Note an, wenn die Vergleichsfunktion False liefert

Absatzabgleich und Änderungen

Seiten- und Geometriereferenzen

PageIndex und ParagraphIndex sind nullbasiert, während CharacterStart eine einsbasierte UTF-16-Position innerhalb des whitespace-normalisierten Absatzes ist

Die fehlende Seite einer Absatz-Einfügung oder -Löschung trägt Seiten- und Absatzindex -1, und eine Token-Einfügung oder -Löschung innerhalb eines gepaarten Absatzes behält eine Position mit Länge null auf der Gegenseite

Jedes Rechteck trägt seinen eigenen Seitenindex und deckt eine sich schneidende semantische Zeile im PDF-User Space ab; ein über Seiten reichender Absatz kann Rechtecke auf mehreren Seiten haben

Positionen beschreiben Zeilenabdeckung statt exakter Zeichen-Quadrilateralen, deshalb kann ein annotiertes PDF dieselbe Zeile für mehrere unabhängige Wortänderungen hervorheben

Wiederkehrende Seitenelemente und Boilerplate ausklammern

Die Standards klammern übereinstimmende semantische Zeilen aus, die in den oberen oder unteren 54 Punkt auf mindestens zwei verschiedenen Seiten jeder Eingabe auftreten, und normalisieren Randziffern, damit wiederholte Seitenzahlen matchen können

Vorher- und Nachher-Dokument werden unabhängig voneinander gefiltert, und Wiederholungen im Haupttext bleiben ungeachtet ihrer Häufigkeit für den Vergleich wählbar

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 entfernt eine komplette semantische Zeile per literaler Gleichheit nach Whitespace-Normalisierung, respektiert IgnoreCase und interpretiert nie reguläre Ausdrücke oder Teilzeichenkettenmuster

Wählen Sie Ränder und Ausklammerungen bewusst, denn Datumsangaben oder anderer Vertragstext innerhalb einer ausgeklammerten wiederkehrenden Randzeile fließen nicht ins Formulierungs-Review ein

Budgets und Abbruch

OptionStandardwertGeltungsbereich
MaxPages500Je Dokument
MaxParagraphs4.000Je Dokument nach Ausklammerungen
MaxSemanticLines50.000Semantische Zeilen beider Dokumente vor Snapshots und Ausklammerungen
MaxCharacters2.000.000Extrahierter Zeilentext beider Dokumente vor Ausklammerungen
MaxTokens200.000Wort- und im Satzmodus Satztokens beider Dokumente
MaxDifferences10.000Zurückgegebene Einträge, einschließlich Moves
MaxAlignmentCells2.000.000Kumulative Token-Matrizen geänderter Absätze
MaxWorkUnits50.000.000Extraktionsabrechnung und Alignierungsarbeit

Eine Budgetgrenze liefert ccsBudgetExceeded, ein Abbruch ccsCancelled; Teilergebnisse bleiben zur Diagnose erhalten und werden im HTML als unvollständig markiert

Der Abbruch wird zwischen Seitenextraktionen und in allen Alignierungsschleifen der Bibliothek geprüft, während der zugrunde liegende einseitige semantische Extraktor synchron bleibt

ccsInvalidInput meldet fehlende Dokumente, ungültige Enum-Ordinale oder ungültige Optionen, und ccsExtractionFailed meldet Seiten ohne extrahierbaren Text oder fehlgeschlagene semantische Extraktion

OCR oder explizites Entfernen leerer Seiten ist nötig, bevor Seiten ohne extrahierbaren Text verglichen werden, und ccsComplete bescheinigt nur den Abschluss dieses Textvergleichs

Review-Artefakte

HPDFContractReviewHTML liefert ein eigenständiges Dokument mit escaptem Titel, Meldungen, Text, vollständigen Absatzkontexten, Änderungsarten und beiden Quellpositionen; die Ausgabegrenze liegt standardmäßig bei 8.388.608 UTF-16-Zeichen

Der HTML-Exporter wirft EHPDFContractCompareBudget, wenn seine Ausgabe die konfigurierte Grenze überschreitet, und sein Abbruchtoken wirft EHPDFOperationCancelled

HPDFSaveContractAnnotatedPDF verlangt einen abgeschlossenen Bericht, lädt ein separates Quelldokument und prüft jeden semantischen Seitensnapshot samt exakter Zeilengeometrie, bevor Hervorhebungen mit nummerierten Review-Kommentaren ergänzt werden

Geben Sie unterschiedliche Quell- und Ausgabepfade an, wählen Sie ccsBefore oder ccsAfter, und exportieren Sie beide Versionen, wenn Sie Absatz-Löschungen und -Einfügungen gemeinsam reviewen wollen

Unter Windows werden Quell- und Ausgabedatei-Identitäten geprüft, um Hard-Link- und andere Aliase der Quelldatei zurückzuweisen

Der PDF-Exporter deaktiviert AutoLaunch, lässt Eingabedokumente und Quelldatei unverändert und prüft den Abbruch vor dem Laden, zwischen Seiten und Änderungen sowie vor dem Speichern

Dieser Helfer vergleicht extrahierte Formulierung und Layoutreferenzen, leitet aber keine juristische Bedeutung ab, erkennt keinen gescannten Text und bescheinigt keine Rechtswirkung einer Revision

Verwandte APIs

HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF