Skip to main content

Image curation tool

Project description

qrate

Image curator. Index, analyze, score, and export your best shots.

Install

pip install -e ".[cv]"

Quick Start

# Index a directory (extracts previews, computes quality scores)
qrate index /path/to/photos

# See what you've got
qrate status /path/to/photos

# Score images for exhibition quality
qrate score /path/to/photos --top 20 --verbose

# Detect bursts and select best shots
qrate cull /path/to/photos

# Export top images
qrate export /path/to/photos --out picks.txt --top 50

Commands

qrate index <directory>

Index RAW files: extract EXIF, generate previews, compute quality metrics.

qrate index /Volumes/NIKON/DCIM

Creates:

  • .qrate.db — SQLite database with metadata and scores
  • .qrate_previews/ — JPEG previews (auto-rotated via EXIF)

qrate status <directory>

Show index statistics.

qrate status /Volumes/NIKON/DCIM

qrate score <directory>

Rank images by exhibition-worthiness using multi-pass scoring.

# Top 10 with scores
qrate score /path/to/photos

# Top 50 with detailed breakdown
qrate score /path/to/photos --top 50 --verbose

Scoring passes:

Category Metrics
Technical sharpness, subject_sharpness, exposure, noise, dynamic_range
Composition thirds, balance, simplicity, obstruction, subject_clarity
Color harmony, saturation_balance, contrast
Collection uniqueness

qrate cull <directory>

Detect burst sequences and mark best-of-burst.

qrate cull /path/to/photos --burst-threshold 2.0

qrate export <directory>

Export selected images in various formats.

# Export paths to text file
qrate export /path/to/photos --out picks.txt --top 100

# Copy files to directory
qrate export /path/to/photos --out /dest/folder --format copy --top 50

# Generate XMP sidecars (for Lightroom/Capture One)
qrate export /path/to/photos --out . --format xmp --top 100 --rating 5 --label red

# Create gallery with JPGs and scores (great for sharing/review)
qrate export /path/to/photos --out best/ --format gallery --top 20

Options:

  • --format list|copy|xmp|gallery — output format
  • --top N — export top N images
  • --min-sharpness N — filter by sharpness
  • --include-dupes — include duplicates
  • --all-burst — include all burst members (not just best)

qrate select <input_dir> (legacy)

Simple selection by modification time.

qrate select /Volumes/NIKON/DCIM --out export.txt --n 100 --ext .NEF

Workflow Example

# 1. Index your card
qrate index /Volumes/NIKON/DCIM

# 2. See the scores
qrate score /Volumes/NIKON/DCIM --top 20 -v

# 3. Detect and cull bursts
qrate cull /Volumes/NIKON/DCIM

# 4. Export best shots with Lightroom ratings
qrate export /Volumes/NIKON/DCIM --out . --format xmp --top 50 --rating 5

# 5. Or just get a list to copy
qrate export /Volumes/NIKON/DCIM --out keepers.txt --top 100
cat keepers.txt | xargs -I {} cp {} /destination/

Output Formats

Text list (--format list)

/path/to/DSC_0001.NEF
/path/to/DSC_0002.NEF

XMP sidecar (--format xmp)

Creates DSC_0001.xmp next to each selected RAW with star rating and color label.

Gallery (--format gallery)

Creates a shareable folder with RAW files, JPG previews, and detailed scores:

best/
├── raw/
│   ├── 001_DSC_0001.NEF
│   ├── 002_DSC_0002.NEF
│   └── ...
├── jpg/
│   ├── 001_DSC_0001.jpg
│   ├── 002_DSC_0002.jpg
│   └── ...
└── scores.txt

scores.txt contains rankings with score breakdowns:

Rank  Score  File
------------------------------------------------------------
  1    71.7  _DSC0720.NEF
      Technical:   sharp=1859 subj=1.00 exp=0.75
      Composition: thirds=0.62 obstruct=1.00 clarity=1.00
      Color:       harmony=0.50 sat=1.00 contrast=0.77

Supported RAW Formats

NEF, CR2, CR3, ARW, DNG, RAF, ORF, RW2, PEF

Dependencies

  • rawpy — RAW file processing
  • Pillow — image handling
  • imagehash — perceptual hashing
  • numpy, scipy — numerical analysis
  • opencv-python-headless (optional) — advanced CV features

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qrate-0.1.0.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qrate-0.1.0-py3-none-any.whl (30.0 kB view details)

Uploaded Python 3

File details

Details for the file qrate-0.1.0.tar.gz.

File metadata

  • Download URL: qrate-0.1.0.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qrate-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c40f8f2f4268df9ce8f193a48fd4d69d39c3a992e9e3b49eea0d5a509b869fae
MD5 c52015d2bb83f033721407a62cb1cca6
BLAKE2b-256 3f657f346443089676b8c7d5240ed635e447afa17aabb9f315a291ec688203de

See more details on using hashes here.

Provenance

The following attestation bundles were made for qrate-0.1.0.tar.gz:

Publisher: publish.yml on swap357/qrate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qrate-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: qrate-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 30.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qrate-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5375151917af089ac0edfc45c5457403ed68d7d6c2b22773a80842f35ec4a741
MD5 e94853ddb787764d92bedeffb18389c9
BLAKE2b-256 b462078e7594358fe7036ccee230276e6357a3ea85813b235d8bec1611b59fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for qrate-0.1.0-py3-none-any.whl:

Publisher: publish.yml on swap357/qrate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page