volkthienpreecha/crackedpdfs
GitHub: volkthienpreecha/crackedpdfs
面向 PDF 隐藏提示词注入的可复现基准测试与检测器评估框架,提供大规模配对数据集及端到端实验流水线。
Stars: 0 | Forks: 0
# 破解的 PDF
## 针对 PDF 中隐藏提示词注入的受控基准测试
[](https://arxiv.org/abs/2607.19396)
[](https://doi.org/10.5281/zenodo.21735803)
[](https://www.python.org/downloads/release/python-3137/)
[](LICENSE)
[](https://arxiv.org/abs/2607.19396)
[](https://huggingface.co/datasets/volkthienpreecha/crackedpdfs)
[](https://github.com/volkthienpreecha/crackedpdfs)
[](paper-v1/RESULTS.md)
[](#citation)
CrackedPDFs 是一个受控基准测试,用于在 pipeline 将文件扁平化为纯文本之前,测试 PDF 文档层的隐藏提示词注入。
| 语料库 | 基础文档 | 混合 F1 | 论文报告的配对结果 |
| ---: | ---: | ---: | ---: |
| **29,322 PDFs** | **4,983** | **0.960** | **95.9%** |
该语料库包含 9,774 个注入的 PDF 和 19,548 个良性原件或匹配的良性干扰项。在 2,919 个文档的留出测试集上,经过净化的混合检测器达到了 0.960 的 F1 分数、0.998 的 ROC-AUC 和 0.997 的 PR-AUC。
论文将 95.9% 描述为配对排名。冻结的评估产物在平衡的注入与匹配干扰项集合上,将其分类准确率记录为 0.958890,而其显式的成对排名字段为 1.000。[结果溯源说明](paper-v1/RESULTS.md#paired-result-provenance) 记录了这一区别,以便后续工作不会在不经意间更改指标定义。
良性源文档是使用 [PDFAutoGen](https://github.com/volkthienpreecha/PDFAutoGen) 生成的,这是一个确定性的良性文档生成器,包含十四个模板、种子布局变化和结构化内容库。
## 本仓库包含的内容
| 路径 | 用途 |
| --- | --- |
| [`paper-v1/`](paper-v1/) | 论文表格、精确的指标产物、冻结的划分、可复现性元数据、环境捕获以及示例三元组元数据。 |
| `tools/PDFautogenerator/` | 本实验栈使用的内置确定性良性 PDF 生成器。独立的生成器是 [PDFAutoGen](https://github.com/volkthienpreecha/PDFAutoGen)。 |
| `src/backend/services/dataset-mode/` | 配对基准测试的构建与验证。 |
| `src/backend/services/processing/layers/02-watermarking/` | PDF 注入机制与验证辅助工具。 |
| `lightweight-detector/` | 特征提取、分组划分、基线、学习模型、审计与评估。 |
| `scripts/run_crackedpdfs_experiment.ps1` | 当前的端到端实验运行器。 |
生成的 PDF、本地数据库、模型二进制文件和完整的特征表仍然被排除在 Git 之外。它们发布在 [Hugging Face 数据集](https://huggingface.co/datasets/volkthienpreecha/crackedpdfs) 中;`paper-v1/` 是紧凑且可审查的论文记录。
## 基准测试设计
每个基准测试组都以一份良性基础文档开始,可能包含:
1. 良性原件;
2. 共享非标签溯源特征的匹配良性干扰项;以及
3. 通过 PDF 结构或渲染隐藏机器可见指令的注入对应物。
数据集划分按 `base_pdf_id` 分组。相关变体不能跨越训练、验证和测试的边界。
| 划分 | PDF 数量 |
| --- | ---: |
| 训练集 | 23,766 |
| 验证集 | 2,637 |
| 测试集 | 2,919 |
| **总计** | **29,322** |
评估包括:
- PDF 规则基线;
- 对提取文本进行检测的 PromptGuard;
- 仅限结构的逻辑回归和 XGBoost;
- 仅限文本的 TF-IDF 捷径比较器;
- 主力净化文本加结构混合检测器;
- 标签置换检查;
- 捷径和泄漏审计;
- 配对的良性干扰项控制;以及
- 针对未知攻击族别的压力测试。
有关面向论文的表格和确切的产物键,请参见 [`paper-v1/RESULTS.md`](paper-v1/RESULTS.md)。
## Linux 复现
要求:
- Python 3.13;
- Node.js 22 和 npm;
- GNU Make;以及
- Git。
```
git clone https://github.com/volkthienpreecha/crackedpdfs.git
cd crackedpdfs
make smoke
```
`make smoke` 会验证 5 月 25 日的源码快照,运行 Python 生成器和 TypeScript 测试,然后通过真实的基准测试 pipeline 生成一份良性 PDF 和一份注入的对应文件。
要从已发布的冻结特征重新生成论文的紧凑结果表:
```
make reproduce-results
```
第二条命令会从不可变的 [Hugging Face 修订版本](paper-v1/reproducibility/download-manifest.json) 下载四个哈希固定的产物,验证每个 SHA-256 摘要,并写入 `reproduced-results/hard-setting-summary.csv`。它不会重新生成这 29,322 个 PDF。
## 完整的发表级运行
```
npm run experiment:publication
```
这是一条开销很大的重新生成路径。它会创建全新的源 PDF 并重新运行基准测试。它不是用于检查已发表数据的预期快速路径。
对于论文评审,请从以下内容开始:
- [`paper-v1/RESULTS.md`](paper-v1/RESULTS.md);
- [`paper-v1/reproducibility/frozen-splits.json`](paper-v1/reproducibility/frozen-splits.json);
- [`paper-v1/reproducibility/run-manifest.json`](paper-v1/reproducibility/run-manifest.json);以及
- [`paper-v1/metrics/metrics.json`](paper-v1/metrics/metrics.json)。
## 数据集可用性
完整的公开数据集位于 [Hugging Face](https://huggingface.co/datasets/volkthienpreecha/crackedpdfs),并存档在 [Zenodo](https://doi.org/10.5281/zenodo.21735803)。它包含所有 29,322 个 PDF、行级元数据、冻结特征、标签、论文评估划分、指标和 SHA-256 校验和。大型二进制文件仍保留在 Git 之外,以确保仓库保持可克隆状态。
发布清单将快速复现命令固定到数据集修订版本 `02d7e0be03b09d6a29c7e4d388440bc1f5a4907b`。有关 schema、划分语义和局限性,请参见 [`paper-v1/DATASET.md`](paper-v1/DATASET.md)。
## 引用
如果您使用了该基准测试、代码、数据集划分或论文结果,请引用该论文和数据集发布。这两个条目也可以在 [`CITATION.bib`](CITATION.bib) 中找到。
```
@misc{thienpreecha2026crackedpdfs,
title = {CrackedPDFs: A Controlled Benchmark for Hidden Prompt Injection in PDFs},
author = {Thienpreecha, Pukaphol and Subramanian, Karthik},
year = {2026},
eprint = {2607.19396},
archivePrefix = {arXiv},
primaryClass = {cs.AI},
doi = {10.48550/arXiv.2607.19396},
url = {https://arxiv.org/abs/2607.19396}
}
@dataset{thienpreecha2026crackedpdfs_dataset,
title = {CrackedPDFs: Paper v1 Dataset and Reproducibility Artifacts},
author = {Thienpreecha, Pukaphol and Subramanian, Karthik},
publisher = {Zenodo},
year = {2026},
version = {1.0.0},
doi = {10.5281/zenodo.21735803},
url = {https://doi.org/10.5281/zenodo.21735803}
}
```
机器可读的引用元数据位于 [`CITATION.cff`](CITATION.cff)。
PDF 和 TeX 源文件列出了两位作者。在编写此 README 时,arXiv 摘要页面仅显示 Pukaphol Thienpreecha。上面的引用遵循了论文 PDF 的内容。
## 贡献与行为准则
在提交更改之前,请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md)。参与受 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) 管理。
## 许可证
本仓库的代码和原始文档可在 [MIT License](LICENSE) 下获取。打包的字体保留了它们自己的许可证文件,位于 `tools/PDFautogenerator/assets/fonts/` 下。
标签:AI安全, Apex, Chat Copilot, DLL 劫持, PDF处理, 大语言模型, 机器学习