Skip to main content

Universal Annotation Tool for images

Project description

📦 Universal Annotator A modern, high-performance image annotation tool for computer vision datasets

Universal Annotator is a powerful and user-friendly annotation tool designed for creating high-quality bounding box annotations. It supports TXT, JSON, and COCO formats, offers an advanced dark UI, and includes dozens of quality-of-life features for fast annotation workflows.

🔥 Key Features 🧰 Core Annotation Features

Create, edit, move, and resize bounding boxes

Nested annotations (draw boxes inside existing boxes)

Edit Mode + View Mode

Auto-save when navigating images

Selection memory (restores previously selected boxes per image)

Intelligent natural sorting (image_2.jpg before image_10.jpg)

Format auto-detection (TXT / JSON / COCO)

Smart JSON class discovery

Supports JPG, PNG, BMP, TIFF, WebP

🎨 UI Features

Professional dark theme

Mouse-wheel image zoom

Full menu bar + rich status bar

Help dialog (F1) with shortcuts

Descriptive tooltips on all controls

Optimized keyboard shortcuts for speed

🚀 Installation Install directly from PyPI pip install universal-annotator

Run the application:

universal-annotator

Optional: use a virtual environment python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install universal-annotator universal-annotator

🧭 Basic Usage Guide

  1. Load Dataset

Select an image folder & label folder

Annotation format is auto-detected

If empty, choose TXT, JSON, or COCO manually

  1. Draw Bounding Boxes

Press E → Edit Mode

Press M → Draw Mode

Click & drag to draw

Select a class from the popup dialog

Navigate images with A / D or Previous/Next buttons

  1. Edit Annotations

Select a box to move or resize

Drag handles to resize

Press Delete to remove

Create nested boxes inside existing ones

  1. Save

Press S to save manually

Or enable Auto Save in the UI

Status bar confirms save actions

📁 Supported Annotation Formats TXT (YOLO format) <class_id> <x_center> <y_center>

JSON { "annotations": [ {"bbox": [x, y, w, h], "category_id": 0} ] }

COCO format

Fully supported

Reads & writes _annotations.coco.json

🗂 Exporters & Converters

All conversion tools avoid overwriting your root labels. Outputs go into folders such as:

converted_txt/

converted_json/

converted_coco_json/

Supported conversions include:

TXT → JSON

JSON → TXT

TXT → COCO JSON

COCO → JSON

COCO → TXT

JSON Folder → COCO merge

🎮 Keyboard Shortcuts Key Action A Previous Image D Next Image S Save E Edit Mode V View Mode M Draw Bounding Box X Exit Draw Mode Delete Remove selected box F1 Help dialog ⚙ Configuration

Edit sample_classes/classes.txt to change class names:

person car bicycle dog cat

Edit utils/config.py for:

Default colors

Line widths

App name & version

🛠 Troubleshooting Images not loading

Make sure file formats are supported

Check folder permissions

Labels not found

Ensure filenames match

Ensure correct label folder is selected

Shortcuts not working

Make sure the app window is focused

🖼 Supported Image Formats

JPG / JPEG

PNG

BMP

TIFF

WebP

🚧 Known Limitations

No in-place label editing (must delete & recreate)

Only rectangular bounding boxes

No polygon/segmentation tools (coming soon)

🛠️ Future Enhancements

Change class label of existing box

Polygon and segmentation support

Custom keyboard shortcuts

Analytics dashboard

Undo/Redo

Plugin system

🤝 Contributing

Pull requests are welcome! See the contribution guide in:

CONTRIBUTING_UI.md

📄 License

(Add your license here)

👨‍💻 Author

Madan Mohan Jha

📌 Version

Current Version: 1.0.0 Updated: November 2025

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

universal_annotator-0.1.3.tar.gz (587.6 kB view details)

Uploaded Source

Built Distribution

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

universal_annotator-0.1.3-py3-none-any.whl (679.7 kB view details)

Uploaded Python 3

File details

Details for the file universal_annotator-0.1.3.tar.gz.

File metadata

  • Download URL: universal_annotator-0.1.3.tar.gz
  • Upload date:
  • Size: 587.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for universal_annotator-0.1.3.tar.gz
Algorithm Hash digest
SHA256 2a73fa87a8b704c7374737c1ace1217ce3d703bda1ebbb4f991d1dda21cc2513
MD5 56f8e4c022b6ced8ecd49f1d27d6d586
BLAKE2b-256 fbeb8e5c8514626e107e8027906c4f47ed2d13d939c12a8ce6e79c34fd8c2e2d

See more details on using hashes here.

File details

Details for the file universal_annotator-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: universal_annotator-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 679.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for universal_annotator-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4c18ce0efaf372ba934edcaefe384f243c434ade71d77072cf9bbf20aff6ca9e
MD5 a642f734ec2fed93946ee1acabf4c0b0
BLAKE2b-256 0dd23d5e105f39979f182ff7022266070d6e9fc843a0c7432e3f1b91185a73e0

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