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
- Semantische Zeilen werden über Seiten-, Spalten-, Listen- oder Überschriftengrenzen sowie konfigurierbare Basislinienabstände gruppiert, wobei Whitespace zwischen Zeilen normalisiert wird
- Exakte Absätze werden zuerst gepaart, und wiederholt identische Haupttext-Klauseln behalten Vorkommensreihenfolge und Multiplizität
- Geänderte Absätze werden über einen konfigurierbaren Multiset-Wortähnlichkeitswert gematcht, unabhängig von der gewählten Differenzgranularität
- Eine längste zunehmende Folge gepaarter Absätze erkennt Umordnungen, ohne gewöhnliche Indexverschiebungen aus Einfügungen und Löschungen als Moves zu melden
- Geänderte gepaarte Absätze nutzen ein begrenztes Token-Alignment und liefern Insert-, Delete- oder Replace-Einträge mit beiden vollständigen Absatzkontexten
- Der Wortmodus trennt Interpunktion von Wörtern, und der Satzmodus nutzt abschließenden Punkt, Ausrufezeichen oder Fragezeichen gefolgt von Whitespace oder dem Absatzende
- Satzgrenzen sind lexikalisch und können Abkürzungen oder nummerierte Klauselbezeichnungen zerschneiden, deshalb ist der Wortmodus der Standard für präzises Review juristischer Formulierungen
JoinPageContinuationsverbindet konservativ einen unvollendeten Absatz nahe des Endes einer Seite mit einem schlichten Absatz nahe des Anfangs der Folgeseite; Aufrufer können diese Layout-Heuristik abschalten
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
| Option | Standardwert | Geltungsbereich |
|---|---|---|
MaxPages | 500 | Je Dokument |
MaxParagraphs | 4.000 | Je Dokument nach Ausklammerungen |
MaxSemanticLines | 50.000 | Semantische Zeilen beider Dokumente vor Snapshots und Ausklammerungen |
MaxCharacters | 2.000.000 | Extrahierter Zeilentext beider Dokumente vor Ausklammerungen |
MaxTokens | 200.000 | Wort- und im Satzmodus Satztokens beider Dokumente |
MaxDifferences | 10.000 | Zurückgegebene Einträge, einschließlich Moves |
MaxAlignmentCells | 2.000.000 | Kumulative Token-Matrizen geänderter Absätze |
MaxWorkUnits | 50.000.000 | Extraktionsabrechnung 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