pdftract/benches/results/README.md
jedarden b970bc2d66 feat(bf-2f5ew): add Tier 4 competitive benchmark runner and results structure
- Create benches/results/.gitkeep and README.md
- Create benches/competitors/run_all.py Python orchestration script
- Script runs competitor benchmarks (pdftract, pdfminer.six, pypdf, pdfplumber)
- Emits benches/results/<commit-sha>.json with throughput metrics
- Add tier4-competitor-runner to pdftract-ci Argo WorkflowTemplate
- Runs only on main branch to track performance over time
- Acceptance criteria: ratio_pdfminer ≥ 10.0, ratio_pypdf ≥ 5.0

Closes bf-2f5ew

Files created:
- benches/results/.gitkeep
- benches/results/README.md
- benches/competitors/run_all.py
- notes/bf-2f5ew.md

Files modified:
- .ci/argo-workflows/pdftract-ci.yaml
2026-07-05 12:42:15 -04:00

46 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Competitive Benchmark Results
This directory stores per-commit benchmark results tracking pdftract performance against competitor PDF extraction libraries.
## Output Format
Each commit produces a JSON file named `<commit-sha>.json` with the following schema:
```json
{
"commit": "abc123...",
"date": "2026-07-05T12:00:00Z",
"pdftract_mbs": 125.5,
"pdfminer_mbs": 12.3,
"pypdf_mbs": 25.7,
"pdfplumber_mbs": 11.8,
"ratio_pdfminer": 10.2,
"ratio_pypdf": 4.9
}
```
## Metrics
- `*_mbs`: Median throughput in megabytes per second (MB/s) for each tool
- `ratio_pdfminer`: `pdftract_mbs / pdfminer_mbs` (target: ≥ 10.0)
- `ratio_pypdf`: `pdftract_mbs / pypdf_mbs` (target: ≥ 5.0)
## Acceptance Criteria
Per the plan (Tier 4 competitive benchmarks), pdftract must achieve:
- **≥ 10× faster** than pdfminer.six on vector PDFs (`ratio_pdfminer ≥ 10.0`)
- **≥ 5× faster** than pypdf on vector PDFs (`ratio_pypdf ≥ 5.0`)
## Usage
```bash
# Run all competitive benchmarks
python3 benches/competitors/run_all.py
# Results are written to benches/results/<commit-sha>.json
cat benches/results/$(git rev-parse HEAD).json | jq '.'
```
## CI Integration
The benchmark runs as a Tier 4 step in `pdftract-ci` Argo WorkflowTemplate, executing only on the `main` branch to track performance over time.