Porównanie kontraktów

HPDFContractCompare porównuje semantyczny tekst i geometrię linii dwóch załadowanych dokumentów PDF, wyrównuje akapity i zwraca audytowalne rekordy wstawienia, usunięcia, zamiany i przeniesienia

Tego helpera użyj do przeglądu brzmienia i klauzul, a THPDFDocComparison do różnic stron, obiektów i renderowania

Porównanie załadowanych kontraktów

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;

Zapisz zwrócony HTML w UTF-8, a gdy funkcja porównania zwróci false, obejrzyj Report.Status i Report.Note

Wyrównywanie akapitów i zmiany

Odwołania do stron i geometrii

PageIndex i ParagraphIndex są liczone od zera, a CharacterStart to pozycja UTF-16 liczona od jednego w obrębie akapitu ze znormalizowanymi białymi znakami

Brakująca strona wstawienia lub usunięcia całego akapitu ma indeks strony i akapitu -1, a wstawienie lub usunięcie tokenu w sparowanym akapicie zachowuje pozycję o zerowej długości po przeciwnej stronie

Każdy prostokąt niesie własny indeks strony i pokrywa przecinającą linię semantyczną w przestrzeni użytkownika PDF, a akapit rozciągający się na strony może mieć prostokąty na kilku stronach

Lokalizacje opisują pokrycie linii, a nie dokładne czworokąty znaków, więc adnotowany PDF może podświetlić tę samą linię dla kilku niezależnych zmian słów

Wykluczanie powtarzających się elementów stron i boilerplate'u

Domyślne ustawienia wykluczają pasujące linie semantyczne występujące w górnych lub dolnych 54 punktach na co najmniej dwóch różnych stronach każdego wejścia i normalizują cyfry marginesów, żeby powtarzające się numery stron mogły się dopasować

Dokumenty przed i po są filtrowane niezależnie, a powtórzenia w treści pozostają dopuszczalne do porównania niezależnie od liczby wystąpień

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 usuwa kompletną linię semantyczną przez dosłowną równość po normalizacji białych znaków, respektuje IgnoreCase i nigdy nie interpretuje wyrażeń regularnych ani wzorców podłańcuchów

Marginesy i wykluczenia dobieraj świadomie, bo daty lub inny tekst kontraktowy wewnątrz wykluczonej powtarzającej się linii marginesu nie trafiają do przeglądu brzmienia

Budżety i anulowanie

OpcjaDomyślnieZakres
MaxPages500Każdy dokument
MaxParagraphs4000Każdy dokument po wykluczeniach
MaxSemanticLines50000Łączne linie semantyczne przed snapshotami i wykluczeniami
MaxCharacters2000000Łączny tekst wyekstrahowanych linii przed wykluczeniami
MaxTokens200000Łączne tokeny słów, a w trybie zdań także tokeny zdań
MaxDifferences10000Zwracane rekordy, włącznie z przeniesieniami
MaxAlignmentCells2000000Skumulowane macierze tokenów zmienionych akapitów
MaxWorkUnits50000000Rozliczanie ekstrakcji i praca wyrównywania

Przekroczenie budżetu zwraca ccsBudgetExceeded, a anulowanie ccsCancelled, przy czym częściowe znaleziska pozostają zachowane do diagnozy i w HTML są oznaczone jako niekompletne

Anulowanie jest sprawdzane między ekstrakcjami stron i w pętlach wyrównywania należących do biblioteki, podczas gdy leżący u podstaw ekstraktor semantyczny pojedynczej strony pozostaje synchroniczny

ccsInvalidInput raportuje brakujące dokumenty, nieprawidłowe ordynały enumów lub nieprawidłowe opcje, a ccsExtractionFailed strony bez tekstu nadającego się do ekstrakcji albo z nieudaną ekstrakcją semantyczną

Przed porównywaniem stron bez tekstu nadającego się do ekstrakcji wymagane jest OCR albo jawne usunięcie pustych stron, a ccsComplete poświadcza wyłącznie ukończenie tego porównania tekstu

Artefakty przeglądu

HPDFContractReviewHTML zwraca samodzielny dokument z escapowanym tytułem, komunikatami, tekstem, pełnymi kontekstami akapitów, rodzajami zmian i obiema lokalizacjami źródłowymi, z domyślnym limitem wyjścia 8388608 znaków UTF-16

Eksporter HTML podnosi EHPDFContractCompareBudget, gdy jego wyjście przekroczy skonfigurowany limit, a jego token anulowania podnosi EHPDFOperationCancelled

HPDFSaveContractAnnotatedPDF wymaga ukończonego raportu, ładuje osobny dokument źródłowy i sprawdza każdy snapshot strony semantycznej wraz z dokładną geometrią linii, zanim doda podświetlenia z numerowanymi komentarzami przeglądu

Podaj różne ścieżki źródłową i wyjściową, wybierz ccsBefore albo ccsAfter, a gdy chcesz przeglądać razem usunięcia i wstawienia całych akapitów, wyeksportuj obie wersje

W Windows tożsamości plików źródłowego i wyjściowego są sprawdzane, aby odrzucić hardlinki i inne aliasy pliku źródłowego

Eksporter PDF wyłącza AutoLaunch, zostawia dokumenty wejściowe i plik źródłowy bez zmian oraz sprawdza anulowanie przed ładowaniem, między stronami i zmianami oraz przed zapisem

Ten helper porównuje wyekstrahowane brzmienie i odwołania układu bez wnioskowania o znaczeniu prawnym, rozpoznawania tekstu ze skanów i poświadczania skutku prawnego rewizji

Powiązane API

HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF