Porovnání smluv

HPDFContractCompare porovná sémantický text a geometrii řádků dvou načtených PDF dokumentů, spáruje odstavce a vrátí auditovatelné záznamy insert, delete, replace a move

Tento pomocník použijte na revizi formulací a doložek a THPDFDocComparison na rozdíly stránek, objektů a renderu

Porovnání načtených smluv

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;

Vrácené HTML uložte v UTF-8 a když porovnávací funkce vrátí false, prohlédněte si Report.Status a Report.Note

Párování odstavců a změny

Odkazy na stránky a geometrii

PageIndex a ParagraphIndex jsou číslované od nuly, zatímco CharacterStart je pozice v UTF-16 číslovaná od jedničky uvnitř odstavce s normalizovanými bílými znaky

Chybějící strana insertu či deletu celého odstavce má index stránky a odstavce -1 a insert či delet tokenu uvnitř spárovaného odstavce si na opačné straně ponechá pozici nulové délky

Každý obdélník nese vlastní index stránky a pokrývá protínající se sémantický řádek v PDF user space a odstavec přecházející přes stránky může mít obdélníky na více stránkách

Pozice popisují pokrytí řádků, nikoli přesné čtyřúhelníky znaků, takže anotované PDF může zvýraznit týž řádek pro několik nezávislých změn slov

Vyloučení opakujících se prvků stránek a boilerplate

Výchozí nastavení vyloučí shodné sémantické řádky, které se objeví v horních či dolních 54 bodech na nejméně dvou odlišných stránkách každého vstupu, a normalizuje číslice na okrajích, aby se opakovaná čísla stránek mohla párovat

Dokumenty před a po se filtrují nezávisle a opakování v těle zůstávají pro porovnání způsobilá bez ohledu na to, kolikrát se objeví

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 odstraní kompletní sémantický řádek podle literální shody po normalizaci bílých znaků, respektuje IgnoreCase a nikdy neinterpretuje regulární výrazy ani vzory podřetězců

Okraje a vyloučení volte záměrně, protože data či jiný smluvní text uvnitř vyloučeného opakovaného okrajového řádku z revize formulací zmizí

Meze a zrušení

VolbaVýchozíRozsah
MaxPages500Každý dokument
MaxParagraphs4000Každý dokument po vyloučeních
MaxSemanticLines50000Sémantické řádky dohromady před snapshoty a vyloučeními
MaxCharacters2000000Extrahovaný text řádků dohromady před vyloučeními
MaxTokens200000Tokeny slov dohromady a v režimu vět i tokeny vět
MaxDifferences10000Vrácené záznamy, včetně move
MaxAlignmentCells2000000Kumulativní token matice změněných odstavců
MaxWorkUnits50000000Účtování extrakce a práce zarovnávání

Dosažení limitu vrátí ccsBudgetExceeded a zrušení vrátí ccsCancelled, přičemž částečné nálezy zůstanou zachované pro diagnostiku a v HTML se označí jako nekompletní

Zrušení se kontroluje mezi extrakcemi stránek a v celých smyčkách zarovnávání vlastněných knihovnou, zatímco podkladový sémantický extraktor jedné stránky zůstává synchronní

ccsInvalidInput hlásí chybějící dokumenty, neplatné enum ordinály či neplatné volby a ccsExtractionFailed stránky bez extrahovatelného textu nebo nezdařenou sémantickou extrakci

Stránky bez extrahovatelného textu je před porovnáním potřeba projít OCR nebo explicitně odstranit jako prázdné a ccsComplete osvědčuje dokončení jen tohoto textového porovnání

Revizní artefakty

HPDFContractReviewHTML vrací samostatný dokument s escapovaným titulkem, zprávami, textem, kompletními kontexty odstavců, druhy změn i oběma zdrojovými pozicemi, s výchozím limitem výstupu 8388608 znaků UTF-16

HTML exporter vyhodí EHPDFContractCompareBudget, když výstup překročí nakonfigurovaný limit, a svůj token zrušení promítne jako EHPDFOperationCancelled

HPDFSaveContractAnnotatedPDF vyžaduje dokončený report, načte samostatný zdrojový dokument a před přidáním zvýraznění s číslovanými revizními komentáři zkontroluje každý sémantický snapshot stránky včetně jeho přesné geometrie řádků

Zadejte odlišné cesty zdroje a výstupu, zvolte ccsBefore či ccsAfter a exportujte obě verze, když chcete delety a inserty celých odstavců revizovat společně

Na Windows se ověří identity zdrojového a výstupního souboru, aby se odmítly hardlinkové či jiné aliasy zdrojového souboru

PDF exporter vypne AutoLaunch, vstupní dokumenty i zdrojový soubor ponechá beze změny a zrušení kontroluje před načtením, mezi stránkami a změnami i před uložením

Tento pomocník porovnává extrahované formulace a odkazy na layout, aniž by odvozoval právní význam, rozpoznával naskenovaný text nebo osvědčoval právní účinek revize

Související API

HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF