Σύγκριση συμβολαίων
Η 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
Ευθυγράμμιση παραγράφων και αλλαγές
- Οι σημασιολογικές γραμμές ομαδοποιούνται με βάση σελίδα, στήλη, όρια λίστας ή επικεφαλίδας και ρυθμιζόμενα baseline κενά, με normalized whitespace μεταξύ γραμμών
- Οι ακριβείς παράγραφοι ταυτίζονται πρώτες, και οι επαναλαμβανόμενες ίδιες παράγραφοι σώματος διατηρούν σειρά εμφάνισης και πολλαπλότητα
- Οι αλλαγμένες παράγραφοι ταυτίζονται με ένα ρυθμιζόμενο σκορ multiset ομοιότητας λέξεων, ανεξάρτητα από το επιλεγμένο granularity των διαφορών
- Μια μέγιστη αύξουσα ακολουθία ταυτισμένων παραγράφων εντοπίζει αναδιάταξη χωρίς να αναφέρει συνηθισμένες μετατοπίσεις δεικτών από insertions και deletions ως moves
- Οι αλλαγμένες ταυτισμένες παράγραφοι χρησιμοποιούν πεπερασμένη token ευθυγράμμιση για να επιστρέψουν εγγραφές insert, delete ή replace με πλήρη πλαίσιο και των δύο παραγράφων
- Η λειτουργία λέξεων διαχωρίζει τη στίξη από τις λέξεις, και η λειτουργία προτάσεων χρησιμοποιεί τελική τελεία, θαυμαστικό ή ερωτηματικό ακολουθούμενα από whitespace ή το τέλος της παραγράφου
- Τα όρια προτάσεων είναι λεξικά και μπορεί να κόψουν συντομογραφίες ή αριθμημένες ετικέτες όρων, οπότε η λειτουργία λέξεων είναι η προεπιλογή για ακριβή έλεγχο νομικής διατύπωσης
- Το
JoinPageContinuationsενώνει συντηρητικά μια μη ολοκληρωμένη παράγραφο κοντά στο κάτω μέρος μιας σελίδας με μια απλή παράγραφο κοντά στην κορυφή της επόμενης, και οι callers μπορούν να απενεργοποιήσουν αυτή τη layout ευρετική
Αναφορές σελίδων και γεωμετρίας
Τα 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
Διαλέξτε περιθώρια και εξαιρέσεις σκόπιμα, γιατί ημερομηνίες ή άλλο συμβατικό κείμενο μέσα σε εξαιρεμένη επαναλαμβανόμενη γραμμή περιθωρίου παραλείπονται από τον έλεγχο διατύπωσης
Όρια και ακύρωση
| Επιλογή | Προεπιλογή | Εύρος |
|---|---|---|
MaxPages | 500 | Κάθε έγγραφο |
MaxParagraphs | 4000 | Κάθε έγγραφο μετά τις εξαιρέσεις |
MaxSemanticLines | 50000 | Συνδυασμένες σημασιολογικές γραμμές πριν από snapshots και εξαιρέσεις |
MaxCharacters | 2000000 | Συνδυασμένο εξαγόμενο κείμενο γραμμών πριν τις εξαιρέσεις |
MaxTokens | 200000 | Συνδυασμένα tokens λέξεων και, σε λειτουργία προτάσεων, tokens προτάσεων |
MaxDifferences | 10000 | Επιστρεφόμενες εγγραφές, συμπεριλαμβανομένων των moves |
MaxAlignmentCells | 2000000 | Αθροιστικοί token πίνακες αλλαγμένων παραγράφων |
MaxWorkUnits | 50000000 | Λογιστική εξαγωγής και εργασία ευθυγράμμισης |
Όριο 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