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

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çenekVarsayılanKapsam
MaxPages500Her belge
MaxParagraphs4000Dışlamalardan sonra her belge
MaxSemanticLines50000Snapshot'lar ve dışlamalar öncesinde birleşik semantik satırlar
MaxCharacters2000000Dışlamalar öncesinde birleşik çıkarılmış satır metni
MaxTokens200000Birleşik kelime ve cümle modunda cümle token'ları
MaxDifferences10000Move'lar dahil döndürülen kayıtlar
MaxAlignmentCells2000000Kümülatif değişen-paragraf token matrisleri
MaxWorkUnits50000000Extraction 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