語料庫最小化函式
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
縮減器先移除完整的間接物件區段,然後套用逐步變小的位元組範圍縮減
只有當述詞仍然回報原始的失敗特徵碼時,候選結果才會被接受
AInfo 回報嘗試次數、被接受的縮減、移除的物件區段、移除的位元組範圍、原始與最終大小,以及被保留的特徵碼
持續語料庫儲存
function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;
function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate;
const CorpusDirectory: string;
const Options: THPDFCorpusStoreOptions;
out AInfo: THPDFCorpusCaseInfo): Boolean;
function HPDFCorpusCaseInfoToJSON(
const AInfo: THPDFCorpusCaseInfo): AnsiString;
type
THPDFCorpusStoreAction = (csaAdded, csaReplaced, csaKeptExisting);
THPDFCorpusStoreOptions = record
MaximumAttempts: Integer;
MaximumInputBytes: Int64;
MaximumStoredBytes: Int64;
LockRetryCount: Integer;
end;
儲存庫從失敗特徵碼的 SHA-256 摘要衍生出穩定的案例 ID、重新驗證任何既有案例、同時最小化既有與新來的候選,並保留最小的結果
跨處理程序的鎖為同一個語料庫目錄序列化決策,而直寫暫存檔與原子取代讓讀取端不會看到部分的 PDF 或中繼資料檔
THPDFCorpusStoreOptions 限制最小化嘗試次數、輸入位元組、儲存位元組與鎖定重試,THPDFCorpusCaseInfo.Action 則回報案例是被加入、取代還是保留
附屬結構 hotpdf.corpus.case.v1 以穩定的欄位順序記錄案例 ID、精確的失敗特徵碼、內容 SHA-256 與儲存位元組數
HPDFCompareRegressionResultsDeterministic 在解析、轉譯、文字與儲存範疇之間比較重複的跨引擎特徵碼,並拒絕不穩定或失敗的執行