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
- Linie semantyczne są grupowane według granic stron, kolumn, list i nagłówków oraz konfigurowalnych odstępów baseline, z normalizacją białych znaków między liniami
- Najpierw parowane są identyczne akapity, a powtarzające się identyczne klauzule merytoryczne zachowują kolejność wystąpień i krotność
- Zmienione akapity są dopasowywane konfigurowalnym wynikiem podobieństwa słów w ujęciu multiset, niezależnie od wybranej granularności różnic
- Najdłuższy rosnący podciąg sparowanych akapitów wykrywa przestawienia bez raportowania zwykłych przesunięć indeksów po wstawieniach i usunięciach jako przeniesień
- Dla zmienionych sparowanych akapitów ograniczone wyrównanie tokenów zwraca rekordy insert, delete albo replace z pełnymi kontekstami obu akapitów
- Tryb słów oddziela interpunkcję od wyrazów, a tryb zdań uznaje za granicę końcową kropkę, wykrzyknik lub znak zapytania, po których następuje biały znak albo koniec akapitu
- Granice zdań są leksykalne i mogą przecinać skróty czy numerowane etykiety klauzul, więc domyślnym trybem dla precyzyjnego przeglądu prawnego brzmienia jest tryb słów
JoinPageContinuationskonserwatywnie łączy niedokończony akapit przy dole jednej strony ze zwykłym akapitem przy górze następnej, a wywołujący może wyłączyć tę heurystykę układu
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
| Opcja | Domyślnie | Zakres |
|---|---|---|
MaxPages | 500 | Każdy dokument |
MaxParagraphs | 4000 | Każdy dokument po wykluczeniach |
MaxSemanticLines | 50000 | Łączne linie semantyczne przed snapshotami i wykluczeniami |
MaxCharacters | 2000000 | Łączny tekst wyekstrahowanych linii przed wykluczeniami |
MaxTokens | 200000 | Łączne tokeny słów, a w trybie zdań także tokeny zdań |
MaxDifferences | 10000 | Zwracane rekordy, włącznie z przeniesieniami |
MaxAlignmentCells | 2000000 | Skumulowane macierze tokenów zmienionych akapitów |
MaxWorkUnits | 50000000 | Rozliczanie 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