語料庫最小化函式

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 在解析、轉譯、文字與儲存範疇之間比較重複的跨引擎特徵碼,並拒絕不穩定或失敗的執行