Sözleşme Karşılaştırması
HPDFContractCompare, iki yüklenmiş PDF belgesinin semantik metnini ve satır geometrisini karşılaştırır, paragrafları hizalar ve denetlenebilir insert, delete, replace ve move kayıtları döndürür
İfade ve madde incelemesi için bu helper'ı kullanın; sayfa, object ve rendered farkları için THPDFDocComparison'ı kullanın
Yüklenmiş sözleşmeleri karşılaştırma
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;
Dönen HTML'i UTF-8 ile kaydedin ve karşılaştırma fonksiyonu false döndürdüğünde Report.Status ve Report.Note'u inceleyin
Paragraf hizalaması ve değişiklikler
- Semantik satırlar; sayfa, kolon, liste veya başlık sınırları ve yapılandırılabilir baseline boşlukları kullanılarak gruplanır, satırlar arası whitespace normalize edilir
- Birebir aynı paragraflar önce eşleştirilir ve tekrarlanan özdeş gövde maddeleri oluş sırasını ve çokluğunu korur
- Değişen paragraflar, seçilen fark granularity'sinden bağımsız olarak, yapılandırılabilir bir multiset kelime benzerlik skoruyla eşleştirilir
- Eşleşen paragrafların en uzun artan dizisi yeniden sıralamayı tespit eder; insert ve delete'lerden kaynaklanan sıradan indeks kaymaları move olarak raporlanmaz
- Değişen eşleşmiş paragraflar, sınırlı bir token alignment ile her iki tam paragraf bağlamını da taşıyan insert, delete veya replace kayıtları döndürür
- Kelime modu noktalamayı kelimelerden ayırır; cümle modu ise whitespace veya paragraf sonuyla izlenen bitiş noktası, ünlem veya soru işaretini kullanır
- Cümle sınırları leksikseldir ve kısaltmaları ya da numaralı madde etiketlerini bölebilir; bu yüzden hassas hukuki ifade incelemesi için varsayılan kelime modudur
JoinPageContinuations, bir sayfanın altına yakın bitmemiş paragrafı muhafazakâr biçimde sonraki sayfanın üstüne yakın düz bir paragrafa birleştirir; caller'lar bu layout sezgiselini devre dışı bırakabilir
Sayfa ve geometri referansları
PageIndex ve ParagraphIndex zero-based'dir; CharacterStart ise whitespace-normalize edilmiş paragraf içinde one-based bir UTF-16 konumudur
Tam paragraf insert veya delete'te bulunmayan taraf, -1 sayfa ve paragraf indekslerine sahiptir; eşleşmiş paragraf içindeki token insert veya delete ise karşı tarafta sıfır uzunluklu bir konum korur
Her rectangle kendi sayfa indeksini taşır ve PDF user space'te kesişen bir semantik satırı kapsar; sayfalar arasında uzanan bir paragrafın birkaç sayfada rectangle'ları olabilir
Konumlar, tam karakter dörtgenleri yerine satır kapsamını tanımlar; bu yüzden annotate edilmiş PDF, birkaç bağımsız kelime değişikliği için aynı satırı vurgulayabilir
Yinelenen sayfa öğelerini ve kalıp metinleri hariç tutma
Varsayılanlar, her girdinin en az iki farklı sayfasında üstte veya alttaki 54 point içinde yer alan eşleşen semantik satırları hariç tutar ve tekrarlanan sayfa numaralarının eşleşebilmesi için marj rakamlarını normalize eder
Before ve after belgeleri bağımsız filtrelenir ve gövde tekrarları kaç kez geçtiğinden bağımsız olarak karşılaştırmaya uygun kalır
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 normalizasyonundan sonra literal eşitlikle eksiksiz bir semantik satırı kaldırır, IgnoreCase'e uyar ve asla regular expression veya substring örüntüsü yorumlamaz
Marjları ve dışlamaları bilinçli seçin; hariç tutulan yinelenen bir marj satırı içindeki tarihler veya başka sözleşme metinleri ifade incelemesinden çıkar
Bütçeler ve iptal
| Seçenek | Varsayılan | Kapsam |
|---|---|---|
MaxPages | 500 | Her belge |
MaxParagraphs | 4000 | Dışlamalardan sonra her belge |
MaxSemanticLines | 50000 | Snapshot'lar ve dışlamalar öncesinde birleşik semantik satırlar |
MaxCharacters | 2000000 | Dışlamalar öncesinde birleşik çıkarılmış satır metni |
MaxTokens | 200000 | Birleşik kelime ve cümle modunda cümle token'ları |
MaxDifferences | 10000 | Move'lar dahil döndürülen kayıtlar |
MaxAlignmentCells | 2000000 | Kümülatif değişen-paragraf token matrisleri |
MaxWorkUnits | 50000000 | Extraction muhasebesi ve alignment işi |
Bütçe limiti ccsBudgetExceeded döndürür, iptal ise ccsCancelled döndürür; kısmi bulgular tanı için saklanır ve HTML'de eksik işaretlenir
İptal, sayfa extraction'ları arasında ve kütüphaneye ait alignment döngüleri boyunca denetlenir; altta yatan tek sayfalık semantik extractor senkron kalır
ccsInvalidInput, eksik belgeleri, geçersiz enum ordinal'lerini veya geçersiz seçenekleri raporlar; ccsExtractionFailed, çıkarılabilir metni olmayan veya semantik extraction'ı başarısız sayfaları raporlar
Çıkarılabilir metni olmayan sayfaları karşılaştırmadan önce OCR veya açık boş sayfa temizliği gerekir ve ccsComplete yalnızca bu metin karşılaştırmasının tamamlandığını belirtir
İnceleme çıktıları
HPDFContractReviewHTML; escape edilmiş başlık, mesajlar, metin, tam paragraf bağlamları, değişiklik türleri ve her iki kaynak konumuyla bağımsız bir belge döndürür; varsayılan çıktı limiti 8388608 UTF-16 karakterdir
HTML exporter'ı, çıktısı yapılandırılan limiti aştığında EHPDFContractCompareBudget fırlatır; cancellation token'ı ise EHPDFOperationCancelled fırlatır
HPDFSaveContractAnnotatedPDF tamamlanmış bir rapor ister, ayrı bir kaynak belge yükler ve numaralı inceleme yorumlarıyla highlight'ları eklemeden önce kesin satır geometrisi dahil her semantik sayfa snapshot'ını denetler
Farklı kaynak ve çıktı yolları belirtin, ccsBefore veya ccsAfter seçin ve tam paragraf silme ile eklemeleri birlikte incelemeniz gerektiğinde iki sürümü de dışa aktarın
Windows'ta, kaynak dosyanın hard-link veya başka takma adlarını reddetmek için kaynak ve çıktı dosya kimlikleri denetlenir
PDF exporter'ı AutoLaunch'ı devre dışı bırakır, girdi belgelerini ve kaynak dosyayı değiştirmeden bırakır ve yükleme öncesinde, sayfalar ve değişiklikler arasında ve kaydetmeden önce iptali denetler
Bu helper; hukuki anlam çıkarmadan, taranmış metni tanımadan veya revizyonun hukuki etkisini onaylamadan çıkarılmış ifadeyi ve layout referanslarını karşılaştırır
İlgili API'ler
HPDFCompareContracts · THPDFContractCompareOptions · THPDFContractCompareReport · HPDFContractReviewHTML · HPDFSaveContractAnnotatedPDF