Generate annotated PDFs from extraction pipeline run data. Overlays color-coded bounding boxes (text, tables, figures, equations) from S02/S05/S06 onto the original PDF. Supports single PDF, run directory, batch from blacklist, and interactive review server.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add grahama1970/agent-skills --skill create-annotated-pdf --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Create Annotated Pdf?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/grahama1970-create-annotated-pdf)More formats (shields.io, HTML) on the badges page.
---
name: create-annotated-pdf
description: >
Generate annotated PDFs from extraction pipeline run data. Overlays color-coded
bounding boxes (text, tables, figures, equations) from S02/S05/S06 onto the
original PDF. Supports single PDF, run directory, batch from blacklist, and
interactive review server.
triggers:
- annotate pdf
- annotated pdf
- show me the annotations
- show extraction boxes
- give me the annotated pdf
- review extraction
- spot check extraction
- overlay bboxes
- visualize extraction
- create annotated pdf
- review pdf annotations
- review failed pdfs
- batch annotate
metadata:
short-description: "Annotated PDFs from extraction pipeline data"
provides:
- create-annotated-pdf
composes:
- task-monitor
- agentic-evals
disciplines:
- extraction
- content-creation
---
# create-annotated-pdf
Generate annotated PDFs showing what the extraction pipeline detected. Color-coded
bounding boxes for text blocks, tables, figures, equations overlaid on the original PDF.
## Quick Start
### Single PDF (from run directory)
```bash
cd /path/to/extractor
uv run python -m extractor.pipeline.tools.render_annotated_pdf from-run \
--pdf /path/to/original.pdf \
--run-dir /path/to/run_directory \
--out /tmp/annotated.pdf \
--export-pages --png-dpi 144
```
### Single PDF (by stem — auto-discovers run dir)
```bash
cd /path/to/agent-skills/skills/create-annotated-pdf
uv run --script annotate_from_stem.py <stem> [--out /tmp/annotated.pdf] [--png]
```
### Batch (all blacklisted/failed PDFs)
```bash
uv run --script annotate_from_stem.py --batch-blacklist [--out-dir /tmp/annotated_failures/]
```
### Interactive Review Server
```bash
# Terminal 1: API server
cd /path/to/extractor/prototypes/tabbed/api
uv run --script review_server.py
# Terminal 2: Frontend
cd /path/to/extractor/prototypes/tabbed/html
VITE_REVIEW_API=http://127.0.0.1:8003 npm run dev
# Open http://localhost:8080/review
```
## What Gets Annotated
| Stage | Element | Color | Source File |
|-------|---------|-------|-------------|
| S02 | Text blocks | Gray | `02_marker_blocks.json` |
| S02 | Section headers | Orange | `02_marker_blocks.json` |
| S02 | Equations | Purple | `02_marker_blocks.json` |
| S05 | Tables | Blue | `05_tables.json` |
| S06 | Figures | Green | `06_figures.json` |
## Outputs
- **Annotated PDF**: Original PDF with colored bbox rectangles and type labels
- **PNG pages**: Per-page raster images (optional, `--export-pages`)
- **Tabbed-compatible JSON**: Normalized (0-1) box coordinates for interactive editing
- **Corrections JSONL**: Human review corrections saved per-stem
## Run Directory Discovery
The skill searches these locations (NVMe first, then HDD):
1. `$PI_HOME/skills/review-pdf/extracted_runs_staging/`
2. `$ARTIFACT_STORAGE_ROOT/skills/review-pdf/extracted_runs/`
Run directories are named `{stem}_{hash10}` and contain stage outputs as subdirectories.
## Integration Points
- **`/learn-datalake`**: Blacklist provides failed PDF list for batch annotation
- **`/create-classifier`**: Corrections feed back as ground truth training labels
- **`/pdf-lab`**: Convergence loop can request annotated PDFs for diagnosis
- **`/review-pdf`**: Run directories are the primary data source
- **`/memory`**: Corrections can be stored as extraction quality signals
## Dependencies
- `pymupdf` (fitz) — PDF rendering and annotation
- `fastapi` + `uvicorn` — Review server (optional, for interactive mode)
- Tabbed prototype (`prototypes/tabbed/html`) — Interactive UI (optional)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!