Детерминированные дифференциальные regression-пробы
HPDFCompareRegressionResultsDeterministic многократно прогоняет два адаптера движков по выбранным доменам, отбраковывает нестабильные или упавшие прогоны и записывает один упорядоченный машиночитаемый результат
API
function HPDFCompareRegressionResultsDeterministic(
const Input: TBytes;
Domains: THPDFRegressionDomains;
const LeftProbe, RightProbe: THPDFRegressionProbe;
const Options: THPDFDifferentialProbeOptions;
out AInfo: THPDFDifferentialRegressionInfo): Boolean;
function HPDFProbeHotPDFDocument(
Domain: THPDFRegressionDomain;
const Input: TBytes): AnsiString;
function HPDFDifferentialRegressionInfoToJSON(
const AInfo: THPDFDifferentialRegressionInfo): AnsiString;
Домены
| Домен | Встроенная сигнатура HotPDF |
|---|---|
rgdParser | Сводка по страницам, объектам, версии, аннотациям, шрифтам, изображениям, формам, подписям, encryption, AcroForm и структуре |
rgdRenderer | SHA-256 пикселей BGR сверху вниз на фиксированном DPI без альфы и выравнивания scan line |
rgdText | SHA-256 UTF-8 с разделителями по страницам после нормализации CRLF и CR |
rgdSave | SHA-256 и длина в байтах ограниченного вывода, созданного с детерминированным порядком словарей |
Устаревшие значения rgdSignature и rgdConformance остаются доступными, чтобы существующие адаптеры проб сохраняли свои порядковые значения и совместимость исходников
HPDFRegressionDomainName(Domain) возвращает стабильное имя в нижнем регистре для одного значения THPDFRegressionDomain, например parser или renderer, для журналов и полей отчётов
Контракт стабильности
HPDFDefaultDifferentialProbeOptions задаёт три прогона, лимит входа 256 MiB и стабильные запасные имена движков
RepeatCount принимает от 2 до 64 прогонов; изменение сигнатуры внутри одного движка помечает домен нестабильным, даже если его первая сигнатура совпала со вторым движком
Исключения в пробах конвертируются в стабильные сигнатуры ошибок с классом исключения и SHA-256 сообщения, а любая ошибка заставляет домен с расхождением безопасно отказывать
Один и тот же неизменяемый вход подаётся в фиксированном порядке доменов и движков, а каждый выбранный домен попадает в JSON-отчёт ровно один раз
Встроенные ограничения
Настраиваемая перегрузка HPDFProbeHotPDFDocument принимает DPI рендеринга, максимум страниц и максимум байтов вывода
Render-fingerprint исключает альфу и выравнивание строк, текстовые fingerprint нормализуют представление переводов строк, а вывод сохранения перед хэшированием идёт через ограниченный stream
Отчёт
THPDFDifferentialRegressionInfo несёт множества сравненных и различающихся доменов, левые и правые сигнатуры, множества нестабильных и ошибочных доменов, имена движков, число повторов и SHA-256 входа
HPDFDifferentialRegressionInfoToJSON выдаёт фиксированную схему hotpdf.differential.v1 со стабильным порядком полей и доменов для CI, разбора корпуса и аудиторского хранения
Хелпер совместимости
HPDFCompareRegressionResults сохраняет исходное поведение с одним прогоном и callback для вызывающих, кто уже получает внешне стабилизированные сигнатуры