Skip to content
Back to skills

Create Annotated Pdf

ASecurity

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.

  • 6 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
developmentpythonbashfastapiapifrontend

Works with

  • terminal
  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add grahama1970/agent-skills --skill create-annotated-pdf --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Create Annotated Pdf
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grahama1970-create-annotated-pdf/badge)](https://www.skillsdirectory.com/skills/grahama1970-create-annotated-pdf)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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)

Files in this skill

  • SKILL.md3.5 KB
  • annotate_from_stem.py13.1 KB
  • fixtures/agentic_eval.json498 B
  • pyproject.toml249 B
  • run.sh256 B
  • sanity.sh1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.