Skip to main content

A lightweight bounding box annotation tool for image datasets with YOLO/COCO/Pascal VOC export

Project description

Bbannotate Logo

PyPI version Python versions License

A lightweight bounding box annotation tool for image datasets. Built with React/TypeScript frontend and FastAPI backend. Export to YOLO, COCO, Pascal VOC, and more.

Features

  • 🖼️ Multi-format support — PNG, JPEG, WebP, BMP
  • 📁 Project management — Organize annotations by project
  • 🏷️ Custom labels — Define your own class labels
  • ⌨️ Keyboard shortcuts — Fast annotation workflow
  • 📤 Multiple export formats — YOLO, COCO, Pascal VOC, CreateML, CSV
  • 🔄 Train/Val/Test split — Automatic dataset splitting for YOLO export

Installation

pip install bbannotate

Requirements

  • Python 3.12+
  • Node.js (only for frontend development)

Quick Start

# Start the annotation server
bbannotate start

# Opens http://127.0.0.1:8000 in your browser

CLI Options

bbannotate start [OPTIONS]

Options:
  -h, --host TEXT        Host to bind the server to [default: 127.0.0.1]
  -p, --port INTEGER     Port to bind the server to [default: 8000]
  --no-browser           Don't open browser automatically
  -r, --reload           Enable auto-reload for development
  -d, --data-dir PATH    Directory for storing data [default: ./data]
  --projects-dir PATH    Directory for storing projects [default: ./projects]
  -v, --version          Show version and exit
  --help                 Show help and exit

Other Commands

bbannotate info            # Show installation info
bbannotate build-frontend  # Build frontend assets (development)

Keyboard Shortcuts

Key Action
D Draw mode
S Select mode
Space Pan mode
Navigate images
1-9 Select label by index
Del / Backspace Delete annotation
Esc Deselect / Cancel

Export Formats

Format Description
YOLO ZIP with train/val/test split, data.yaml, normalized coordinates
COCO COCO JSON format with categories, images, and annotations
Pascal VOC XML files per image with absolute coordinates
CreateML Apple CreateML JSON format
CSV Simple CSV with image, label, and bbox columns

Configuration

Environment Variables

Variable Description
BBANNOTATE_DATA_DIR Override default data directory
BBANNOTATE_PROJECTS_DIR Override default projects directory

Development

Setup

git clone https://github.com/sebastianydemadsen/bbannotate.git
cd bbannotate
make install        # Install with dev dependencies
make frontend-install  # Install frontend dependencies

Development Commands

Command Description
make run Start full application (backend + frontend)
make backend-dev Start backend only with auto-reload
make frontend-dev Start frontend dev server
make stop Stop all servers
make test Run tests
make test-cov Run tests with coverage report
make type-check Run pyright type checking
make format Format code with ruff
make check-all Run all checks (lint, type, test)
make build Build package for distribution
make clean Remove build artifacts

Project Structure

src/               # Python package (FastAPI backend)
  api/             # API routes
  models/          # Pydantic models
  services/        # Business logic
  cli.py           # CLI entry point
frontend/          # React/TypeScript frontend
  src/
    components/    # UI components
    hooks/         # React hooks
tests/             # Test suite (145 tests)

License

MIT

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

bbannotate-1.0.3-py3-none-any.whl (386.2 kB view details)

Uploaded Python 3

File details

Details for the file bbannotate-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: bbannotate-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 386.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bbannotate-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bca2efd0c83454268738ca33d454eb85d7470dc989a6ed8cbc2258e783b3315c
MD5 b13f5d46c2f24c47f15f760da8d85d21
BLAKE2b-256 20a02c48b63f7b34d7abf21e68d0339dbd1e0c44db5475e299f4554050b4b166

See more details on using hashes here.

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