Σύγκριση συμβολαίων

Η HPDFContractCompare συγκρίνει το σημασιολογικό κείμενο και τη γεωμετρία γραμμών δύο φορτωμένων PDF εγγράφων, ευθυγραμμίζει παραγράφους και επιστρέφει ελέγξιμες εγγραφές insert, delete, replace και move

Χρησιμοποιήστε αυτό το helper για έλεγχο διατύπωσης και όρων, και χρησιμοποιήστε THPDFDocComparison για διαφορές σελίδων, objects και rendered αποτελεσμάτων

Σύγκριση φορτωμένων συμβολαίων

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;

Αποθηκεύστε το HTML που επιστρέφεται σε UTF-8, και ελέγξτε τα Report.Status και Report.Note όταν η συνάρτηση σύγκρισης επιστρέψει false

Ευθυγράμμιση παραγράφων και αλλαγές

Αναφορές σελίδων και γεωμετρίας

Τα PageIndex και ParagraphIndex ξεκινούν από το μηδέν, ενώ το CharacterStart είναι θέση UTF-16 από τη μονάδα μέσα στην παράγραφο με normalized whitespace

Η απόν πλευρά μιας insertion ή deletion ολόκληρης παραγράφου έχει δείκτες σελίδας και παραγράφου -1, και μια token insertion ή deletion μέσα σε ταυτισμένη παράγραφο διατηρεί θέση μηδενικού μήκους στην απέναντι πλευρά

Κάθε ορθογώνιο φέρει τον δικό του δείκτη σελίδας και καλύπτει μια τεμνούσα σημασιολογική γραμμή σε PDF user space, και μια παράγραφος που εκτείνεται σε σελίδες μπορεί να έχει ορθογώνια σε πολλές σελίδες

Οι θέσεις περιγράφουν κάλυψη γραμμής και όχι ακριβή character quadrilaterals, οπότε ένα annotated PDF μπορεί να επισημάνει την ίδια γραμμή για πολλές ανεξάρτητες αλλαγές λέξεων

Εξαίρεση επαναλαμβανόμενων στοιχείων σελίδας και boilerplate

Οι προεπιλογές εξαιρούν ταυτόσημες σημασιολογικές γραμμές που εμφανίζονται στις 54 πάνω ή κάτω points σε τουλάχιστον δύο διαφορετικές σελίδες κάθε εισόδου, και κανονικοποιούν τα ψηφία περιθωρίων ώστε οι επαναλαμβανόμενοι αριθμοί σελίδων να μπορούν να ταυτιστούν

Τα έγγραφα before και after φιλτράρονται ανεξάρτητα, και οι επαναλήψεις σώματος παραμένουν επιλέξιμες για σύγκριση ανεξάρτητα από το πόσες φορές εμφανίζονται

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 αφαιρεί μια ολόκληρη σημασιολογική γραμμή με κυριολεκτική ισότητα μετά την κανονικοποίηση whitespace, σέβεται το IgnoreCase, και δεν ερμηνεύει ποτέ regular expressions ή μοτίβα substring

Διαλέξτε περιθώρια και εξαιρέσεις σκόπιμα, γιατί ημερομηνίες ή άλλο συμβατικό κείμενο μέσα σε εξαιρεμένη επαναλαμβανόμενη γραμμή περιθωρίου παραλείπονται από τον έλεγχο διατύπωσης

Όρια και ακύρωση

ΕπιλογήΠροεπιλογήΕύρος
MaxPages500Κάθε έγγραφο
MaxParagraphs4000Κάθε έγγραφο μετά τις εξαιρέσεις
MaxSemanticLines50000Συνδυασμένες σημασιολογικές γραμμές πριν από snapshots και εξαιρέσεις
MaxCharacters2000000Συνδυασμένο εξαγόμενο κείμενο γραμμών πριν τις εξαιρέσεις
MaxTokens200000Συνδυασμένα tokens λέξεων και, σε λειτουργία προτάσεων, tokens προτάσεων
MaxDifferences10000Επιστρεφόμενες εγγραφές, συμπεριλαμβανομένων των moves
MaxAlignmentCells2000000Αθροιστικοί token πίνακες αλλαγμένων παραγράφων
MaxWorkUnits50000000Λογιστική εξαγωγής και εργασία ευθυγράμμισης

Όριο budget επιστρέφει ccsBudgetExceeded, και ακύρωση επιστρέφει ccsCancelled, με μερικά ευρήματα διαθέσιμα για διάγνωση και σημειωμένα ως ελλιπή στο HTML

Η ακύρωση ελέγχεται μεταξύ εξαγωγών σελίδων και σε όλη τη διάρκεια των βρόχων ευθυγράμμισης της βιβλιοθήκης, ενώ ο υποκείμενος σημασιολογικός extractor μίας σελίδας παραμένει synchronous

Το ccsInvalidInput αναφέρει έγγραφα που λείπουν, άκυρα enum ordinals ή άκυρες επιλογές, και το ccsExtractionFailed αναφέρει σελίδες χωρίς εξαγώσιμο κείμενο ή αποτυχημένη σημασιολογική εξαγωγή

OCR ή ρητή αφαίρεση κενών σελίδων απαιτείται πριν τη σύγκριση σελίδων χωρίς εξαγώσιμο κείμενο, και το ccsComplete πιστοποιεί την ολοκλήρωση μόνο αυτής της σύγκρισης κειμένου

Αποτελέσματα επισκόπησης

Το HPDFContractReviewHTML επιστρέφει ένα αυτόνομο έγγραφο με escaped τίτλο, μηνύματα, κείμενο, πλήρη πλαίσιο παραγράφων, είδη αλλαγών και τις δύο θέσεις πηγής, με όριο εξόδου 8388608 UTF-16 χαρακτήρες από προεπιλογή

Ο HTML exporter εγείρει EHPDFContractCompareBudget όταν η έξοδος του υπερβαίνει το ρυθμισμένο όριο, και το cancellation token του εγείρει EHPDFOperationCancelled

Το HPDFSaveContractAnnotatedPDF απαιτεί ολοκληρωμένη αναφορά, φορτώνει ξεχωριστό έγγραφο πηγής, και ελέγχει κάθε σημασιολογικό snapshot σελίδας συμπεριλαμβανομένης της ακριβούς γεωμετρίας γραμμών πριν προσθέσει highlights με αριθμημένα σχόλια επισκόπησης

Ορίστε διακριτές διαδρομές πηγής και εξόδου, επιλέξτε ccsBefore ή ccsAfter, και εξάγετε και τις δύο εκδόσεις όταν θέλετε να δείτε μαζί ολόκληρες deletions και insertions παραγράφων

Σε Windows, οι ταυτότητες αρχείων πηγής και εξόδου ελέγχονται για να απορριφθούν hard-link ή άλλα aliases του αρχείου πηγής

Ο PDF exporter απενεργοποιεί το AutoLaunch, αφήνει τα έγγραφα εισόδου και το αρχείο πηγής αμετάβλητα, και ελέγχει ακύρωση πριν τη φόρτωση, μεταξύ σελίδων και αλλαγών, και πριν την αποθήκευση

Αυτό το helper συγκρίνει εξαγόμενη διατύπωση και αναφορές layout χωρίς να συμπεραίνει νομικό περιεχόμενο, να αναγνωρίζει σαρωμένο κείμενο ή να πιστοποιεί τη νομική ισχύ μιας αναθεώρησης

Σχετικά API

HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF