Contractvergelijking
HPDFContractCompare vergelijkt de semantische tekst en regelgeometrie van twee geladen PDF-documenten, lijnt alinea's uit en geeft auditbare insert-, delete-, replace- en move-records terug
Gebruik deze helper voor formulering- en clausulereview, en gebruik THPDFDocComparison voor pagina-, object- en weergaveverschillen
Geladen contracten vergelijken
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;
Sla de teruggegeven HTML op als UTF-8 en bekijk Report.Status en Report.Note wanneer de vergelijkfunctie false teruggeeft
Alinea-uitlijning en wijzigingen
- Semantische regels worden gegroepeerd op basis van pagina-, kolom-, lijst- of kopgrenzen en instelbare baseline-afstanden, met genormaliseerde witruimte tussen de regels
- Exacte alinea's worden eerst gekoppeld, en herhaalde identieke clausules in de hoofdtekst behouden voorkomsvolgorde en multipliciteit
- Gewijzigde alinea's worden gematcht op een instelbare multiset-woordsimilariteitsscore, onafhankelijk van de gekozen verschillengranulariteit
- Een langste oplopende reeks gekoppelde alinea's identificeert herschikking zonder de gewone indexverschuivingen door inserties en deleties als moves te rapporteren
- Gewijzigde gematchte alinea's gebruiken een begrensde token-uitlijning om insert-, delete- of replace-records terug te geven met beide volledige alineacontexten
- Woordmodus scheidt interpunctie van woorden, en zinmodus gebruikt een afsluitende punt, uitroepteken of vraagteken gevolgd door witruimte of het einde van de alinea
- Zinsgrenzen zijn lexicaal en kunnen afkortingen of genummerde clausulelabels splitsen, dus woordmodus is de default voor een precieze juridische formuleringreview
JoinPageContinuationsvoegt een onafgemaakte alinea nabij de onderkant van een pagina conservatief samen met een gewone alinea nabij de bovenkant van de volgende pagina, en aanroepers kunnen deze layout-heuristiek uitzetten
Pagina- en geometrieverwijzingen
PageIndex en ParagraphIndex zijn zero-based, terwijl CharacterStart een one-based UTF-16-positie binnen de witruimte-genormaliseerde alinea is
Een afwezige kant van een insertie of deletie van een hele alinea heeft pagina- en alineaindices van -1, en een token-insertie of -deletie binnen een gematchte alinea behoudt een zerolengtepositie aan de tegenoverliggende kant
Elke rechthoek draagt zijn eigen pagina-index en bedekt een snijdende semantische regel in de PDF-gebruikersruimte, en een alinea die over pagina's doorloopt kan rechthoeken op meerdere pagina's hebben
Locaties beschrijven regeldekking in plaats van exacte karaktervierhoeken, dus een geannoteerde PDF kan dezelfde regel highlighten voor meerdere onafhankelijke woordwijzigingen
Terugkerende vaste pagina-elementen en boilerplate uitsluiten
De defaults sluiten matchende semantische regels uit die in de bovenste of onderste 54 points op ten minste twee verschillende pagina's van elke invoer voorkomen, en normaliseren margecijfers zodat herhaalde paginanummers kunnen matchen
De before- en after-documenten worden onafhankelijk gefilterd, en herhalingen in de hoofdtekst blijven vergelijkbaar, ongeacht hoe vaak ze voorkomen
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 verwijdert een complete semantische regel op letterlijke gelijkheid na witruimtenormalisatie, respecteert IgnoreCase en interpreteert nooit reguliere expressies of substringpatronen
Kies marges en uitsluitingen bewust, want datums of andere contractuele tekst binnen een uitgesloten terugkerende margeregel vallen buiten de formuleringreview
Budgetten en annulering
| Optie | Standaard | Bereik |
|---|---|---|
MaxPages | 500 | Per document |
MaxParagraphs | 4000 | Per document, na uitsluitingen |
MaxSemanticLines | 50000 | Gecombineerde semantische regels vóór snapshots en uitsluitingen |
MaxCharacters | 2000000 | Gecombineerde geëxtraheerde regeltekst vóór uitsluitingen |
MaxTokens | 200000 | Gecombineerde woordtokens en, in zinmodus, zinstokens |
MaxDifferences | 10000 | Teruggegeven records, inclusief moves |
MaxAlignmentCells | 2000000 | Cumulatieve tokenmatrices van gewijzigde alinea's |
MaxWorkUnits | 50000000 | Extractieboekhouding en uitlijningswerk |
Een budgetlimiet geeft ccsBudgetExceeded terug en annulering geeft ccsCancelled, waarbij gedeeltelijke bevindingen voor diagnose behouden blijven en in HTML als incompleet worden gemarkeerd
Annulering wordt gecontroleerd tussen pagina-extracties en doorlopend in de uitlijningslussen van de bibliotheek, terwijl de onderliggende single-page semantische extractor synchroon blijft
ccsInvalidInput rapporteert ontbrekende documenten, ongeldige enum-ordinalen of ongeldige opties, en ccsExtractionFailed rapporteert pagina's zonder extraheerbare tekst of met een gefaalde semantische extractie
OCR of expliciete verwijdering van blanco pagina's is vereist vóór het vergelijken van pagina's zonder extraheerbare tekst, en ccsComplete certificeert uitsluitend de voltooiing van deze tekstvergelijking
Review-artefacten
HPDFContractReviewHTML geeft een standalone document terug met geëscapete titel, messages, tekst, volledige alineacontexten, wijzigingstypen en beide bronlocaties, met standaard een uitvoerlimiet van 8388608 UTF-16-tekens
De HTML-exporter gooit EHPDFContractCompareBudget wanneer diens uitvoer de geconfigureerde limiet overschrijdt, en diens annuleringstoken gooit EHPDFOperationCancelled
HPDFSaveContractAnnotatedPDF vereist een voltooid rapport, laadt een apart brondocument en controleert elke semantische pagina-snapshot, inclusief diens exacte regelgeometrie, voordat highlights met genummerde review-opmerkingen worden toegevoegd
Geef verschillende bron- en uitvoerpaden op, kies ccsBefore of ccsAfter en exporteer beide versies wanneer je deleties en inserties van hele alinea's samen wilt reviewen
Onder Windows worden de identiteiten van bron- en uitvoerbestand gecontroleerd om hard-link- of andere aliassen van het bronbestand af te wijzen
De PDF-exporter zet AutoLaunch uit, laat de invoerdocumenten en het bronbestand onaangetast en controleert annulering vóór het laden, tussen pagina's en wijzigingen en vóór het opslaan
Deze helper vergelijkt geëxtraheerde formulering en layoutverwijzingen zonder juridische betekenis af te leiden, gescande tekst te herkennen of het juridische effect van een revisie te certificeren
Gerelateerde API's
HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF