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

Uploaded Python 3

File details

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

File metadata

  • Download URL: bbannotate-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 385.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for bbannotate-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5cae9cb52410986489a9fbb3e2ef8a0faa0c18baf1d42c9fbef76ab6660c97b9
MD5 12cfab5d00c6cef7c9ff118237acda60
BLAKE2b-256 ab1a2a42653e46fc51c4ad02d8b3ebc9f351dba2f78aa9408753b1517c30ba63

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