Kontractsammenligning
HPDFContractCompare sammenligner den semantiske tekst og linjegeometrien i to indlæste PDF-dokumenter, justerer afsnit og returnerer reviderbare insert-, delete-, replace- og move-records
Brug denne helper til gennemgang af formuleringer og klausuler, og brug THPDFDocComparison til side-, objekt- og renderede forskelle
Sammenlign indlæste kontrakter
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;
Gem det returnerede HTML som UTF-8, og undersøg Report.Status og Report.Note, når sammenligningsfunktionen returnerer false
Afsnitsjustering og ændringer
- Semantiske linjer grupperes ud fra side-, kolonne-, liste- eller overskriftgrænser og konfigurerbare baseline-afstande, med whitespace normaliseret mellem linjer
- Eksakt ens afsnit parres først, og gentagne identiske brødtekstklausuler bevarer forekomstrækkefølge og multipllicitet
- Ændrede afsnit matches med en konfigurerbar multiset-lighedsscore for ord, uafhængigt af den valgte forskelsgranularitet
- En længste voksende sekvens af parrede afsnit identificerer omrokering uden at rapportere almindelige indeksforskydninger fra indsættelser og sletninger som moves
- Ændrede matchede afsnit bruger en afgrænset token-alignment til at returnere insert-, delete- eller replace-records med begge fulde afsnitskontekster
- Ordtilstand adskiller tegnsætning fra ord, og sætningstilstand bruger afsluttende punktum, udråbstegn eller spørgsmålstegn efterfulgt af whitespace eller afsnittets slutning
- Sætningsgrænser er leksikalske og kan dele forkortelser eller nummererede klausulmærker, så ordtilstand er standarden til præcis juridisk gennemgang af formuleringer
JoinPageContinuationsforbinder konservativt et uafsluttet afsnit nær bunden af en side med et almindeligt afsnit nær toppen af den næste side, og kalderen kan deaktivere denne layoutheuristik
Side- og geometrireferencer
PageIndex og ParagraphIndex er nulbaserede, mens CharacterStart er en 1-baseret UTF-16-position inden i det whitespace-normaliserede afsnit
En fraværende side af en helafsnits-indsættelse eller -sletning har side- og afsnitsindeks -1, og en token-indsættelse eller -sletning inden i et matchet afsnit bevarer en position med længden nul på den modsatte side
Hvert rektangel bærer sit eget sideindeks og dækker en skærende semantisk linje i PDF-brugerrummet, og et afsnit, der spænder over sider, kan have rektangler på flere sider
Lokationer beskriver linjedækning frem for præcise tegnkvadrilateraler, så en annoteret PDF kan fremhæve samme linje for flere uafhængige ordændringer
Udelad tilbagevendende sideelementer og boilerplate
Standardværdierne udelader matchende semantiske linjer, der optræder inden for de øverste eller nederste 54 punkter på mindst to forskellige sider af hvert input, og normaliserer margin-cifre, så gentagne sidetal kan matche
Før- og efterdokumenterne filtreres uafhængigt, og gentagelser i brødteksten forbliver kvalificerede til sammenligning uanset hvor mange gange de optræder
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 fjerner en komplet semantisk linje ved bogstavelig lighed efter whitespace-normalisering, respekterer IgnoreCase og fortolker aldrig regulære udtryk eller substring-mønstre
Vælg marginer og udeladelser bevidst, fordi datoer eller anden kontrakttekst inde i en udeladt tilbagevendende marginlinje udelades fra gennemgangen af formuleringer
Budgetter og annullering
| Tilvalg | Standard | Omfang |
|---|---|---|
MaxPages | 500 | Hvert dokument |
MaxParagraphs | 4000 | Hvert dokument efter udeladelser |
MaxSemanticLines | 50000 | Kombinerede semantiske linjer før snapshots og udeladelser |
MaxCharacters | 2000000 | Kombineret udtrukket linjetekst før udeladelser |
MaxTokens | 200000 | Kombinerede ord- og, i sætningstilstand, sætningstokens |
MaxDifferences | 10000 | Returnerede records, inklusive moves |
MaxAlignmentCells | 2000000 | Kumulative token-matricer for ændrede afsnit |
MaxWorkUnits | 50000000 | Udtræksbogholderi og alignment-arbejde |
En budgetgrænse returnerer ccsBudgetExceeded, og annullering returnerer ccsCancelled, med delvise fund gemt til diagnostik og markeret som ufuldstændige i HTML
Annullering tjekkes mellem sideudtræk og gennem hele biblioteksejet alignment-arbejde, mens den underliggende enkeltside-semantiske ekstraktor forbliver synkron
ccsInvalidInput rapporterer manglende dokumenter, ugyldige enum-ordinals eller ugyldige tilvalg, og ccsExtractionFailed rapporterer sider uden udtrækkelig tekst eller fejlet semantisk udtræk
OCR eller eksplicit fjernelse af tomme sider kræves, før sider uden udtrækkelig tekst sammenlignes, og ccsComplete attesterer kun fuldførelsen af denne tekstsammenligning
Review-artefakter
HPDFContractReviewHTML returnerer et selvstændigt dokument med escaped titel, beskeder, tekst, fulde afsnitskontekster, ændringstyper og begge kildelokationer, med en outputgrænse på 8388608 UTF-16-tegn som standard
HTML-eksportøren udløser EHPDFContractCompareBudget, når dens output overskrider den konfigurerede grænse, og dens cancellation token udløser EHPDFOperationCancelled
HPDFSaveContractAnnotatedPDF kræver en fuldført rapport, indlæser et separat kildedokument og tjekker hvert semantisk side-snapshot inklusive dets præcise linjegeometri, før der tilføjes fremhævninger med nummererede review-kommentarer
Angiv forskellige kilde- og outputstier, vælg ccsBefore eller ccsAfter, og eksportér begge versioner, når du skal gennemgå helafsnits-sletninger og -indsættelser sammen
På Windows tjekkes kilde- og outputfilidentiteter for at afvise hardlink- eller andre aliasser af kildefilen
PDF-eksportøren deaktiverer AutoLaunch, lader inputdokumenter og kildefil stå uændrede og tjekker annullering før indlæsning, mellem sider og ændringer samt før gemning
Denne helper sammenligner udtrukne formuleringer og layoutreferencer uden at udlede juridisk betydning, genkende skannet tekst eller attestere en revisions juridiske effekt
Relaterede API'er
HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF