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.2-py3-none-any.whl (385.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bbannotate-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 385.9 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3b5f413e24e753fc1c4af5bd52e9eb6a8073f938d9c8b58084b8e26c5273ab2f
MD5 7171486ad411598a11f461a79ac6afce
BLAKE2b-256 c02714f1c437a939197347101a9c011061accdc438d1babf8e1a0e15e471b26c

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