Skip to main content

EyE Annotation Tool

PyPI Downloads License DOI

A Qt-based desktop tool for annotating pupil, limbus (iris), eyelid, and glints in eye images. Supports monocular and binocular projects with per-eye detector selection and annotations, and auto-detectors for each annotation type. Auto-detectors come from cheshm.

EyE Annotation Tool Main Page

Features

  • Monocular and binocular projects; detector selection, ROIs, and annotations stored per eye.
  • Manual annotation of pupil ellipse, limbus ellipse, eyelid mask, and glints.
  • Live auto-detection that re-runs on image load and detector swap.
  • Auto-detectors are every pupil / glint / limbus detector cheshm exposes (Simple, ElSe, ExCuSe, PuRe, PuReST, PupilLabs2D, Starburst, Swirski2D for pupil; Simple for glint; active_contour, integro_differential, pupil_guided for limbus). See cheshm's detector list for licences.
  • Project sessions with persistent defaults, undo, brightness/zoom controls, and review mode.
  • CLI flags for batch use: --images, --review, --auto-detectors.

Installation

Requirements

  • Python ≥3.10

From PyPI

pip install eye_annotation_tool

Using uv

uv pip install eye_annotation_tool

Or, to add it to an existing uv project:

uv add eye_annotation_tool

From source (editable / development)

git clone https://github.com/mh-salari/eye_annotation_tool.git
cd eye_annotation_tool
uv sync

Or with pip:

git clone https://github.com/mh-salari/eye_annotation_tool.git
cd eye_annotation_tool
python3 -m pip install -e .

Usage

eye_annotation_tool

Or as a module:

python -m eye_annotation_tool

Common CLI flags:

# Open a project and load extra images on top
eye_annotation_tool --project my_project.json --images img1.png img2.png

# Re-annotate a subset of images against an existing project (read-only)
eye_annotation_tool --project my_project.json --review img1.png img2.png

# Enable only a subset of auto-detectors this session
eye_annotation_tool --auto-detectors pupil,limbus

See eye_annotation_tool --help for the full flag list.

Adding your own detectors

To add a custom detector without modifying this project, drop a .py file in ~/.config/eye_annotation_tool/plugins/ (or any directory listed in the EYE_ANNOTATION_PLUGINS env var) that declares a module-level PLUGINS = [DetectorPlugin(...)] list. See eye_annotation_tool/auto_detectors/README.md for the full plugin contract and a minimal example.

Citing

If you use this software, please cite it using the following BibTeX entry:

@software{salari2025eye,
  author    = {Salari, Mohammadhossein},
  title     = {{EyE Annotation Tool}},
  year      = {2026},
  url       = {https://github.com/mh-salari/eye_annotation_tool},
  doi       = {10.5281/zenodo.18723470},
  license   = {MIT}
}

You can also click the "Cite this repository" button on the GitHub page for more citation formats.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This project has received funding from the European Union's Horizon Europe research and innovation funding program under grant agreement No 101072410, Eyes4ICU project.

Funded by EU Eyes4ICU

Metadata

Release files for eye-annotation-tool 4.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eye-annotation-tool 4.0.1
File Size Uploaded
eye_annotation_tool-4.0.1.tar.gz 2.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for eye-annotation-tool 4.0.1
File Interpreter ABI Platform
eye_annotation_tool-4.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 4.2 MB

Release files / eye_annotation_tool-4.0.1.tar.gz

Download URL eye_annotation_tool-4.0.1.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
6178962be5d270a0614f1b0f746d239e982536ee5709816ed6a4e88aa0b373ec
BLAKE2b-256 checksum
How to use checksums
a971e43fda8022c2479547c2b5d2264aeb51c716dd5aed3ba678564c00c10511
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / eye_annotation_tool-4.0.1-py3-none-any.whl

Download URL eye_annotation_tool-4.0.1-py3-none-any.whl
Size 2.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
dd7077a832fef835e15567c3040636e1176211a04a68b880b13690f79dfec47f
BLAKE2b-256 checksum
How to use checksums
cffc2ccf1a7cdbad75cf99aac9f99bc812e5ae856f88b1fde983ae92750fd93d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

4.0.1 This release

2 release files

4.0.0

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page