Skip to main content

A Python package for labeling and annotating documents

Project description

License Build Status codecov CodeFactor Pypi

docTR Labeler is a tool to label OCR data for the docTR and OnnxTR projects.

Attention: This project is still in development - and currently a pre-release version - please report any issues you encounter.

What you can expect from this repository:

  • Efficient way to label OCR data
  • Features like auto-annotation using OnnxTR and auto polygon adjustment
  • Easy to use frontend with keybindings
  • CLI and programmatic usage
  • No Login required

Installation

Prerequisites

Python 3.10 (or higher) and pip are required to install docTR-Labeler.

Latest release

You can then install the latest release of the package using pypi as follows:

pip3 install doctr-labeler

Keybindings

  • Ctrl + a : Select all polygons

  • Esc : Deselect all selected polygons

  • Ctrl + t : Auto adjust the selected polygons

  • Ctrl + r : Reset last auto adjustment

  • Ctrl + s : Save the current progress / image annotation

  • Ctrl + d : Delete the selected polygon

  • Ctrl + f : Draw a new polygon

  • Ctrl + c : Undo while drawing a polygon

  • Ctrl + + : Zoom in (up to 150% by default) - Can be changed by setting a environment variable DOCTR_LABELER_MAX_ZOOM to a value between 1.1 and 2.0

  • Ctrl + - : Zoom out (down to 50% by default) - Can be changed by setting a environment variable DOCTR_LABELER_MIN_ZOOM to a value between 0.1 and 0.9

Configuration

You can set the following environment variables to configure the tool:

  • DOCTR_LABELER_MAX_ZOOM : Maximum zoom level (default: 1.5)
  • DOCTR_LABELER_MIN_ZOOM : Minimum zoom level (default: 0.5)
  • RECOGNITION_ARCH : The recognition architecture to use (default: Felix92/onnxtr-parseq-multilingual-v1)
  • DETECTION_ARCH : The detector architecture to use (default: fast_base)
  • OBJECTNESS_THRESHOLD : The objectness threshold for the detector (default: 0.5)

Usage CLI

After installation you can use the CLI to start the tool:

For this open a terminal and run:

doctr-labeler

Usage Programmatic

You can also use the tool programmatic:

from labeler.views import GUI
from labeler.utils import prepare_data_folder, hf_upload_dataset

# (Optional)
# Prepare the data folder you can pass a path to a folder containing images and PDFs
# The function will create a new folder 'images' with the prepared data
prepared_data_path = prepare_data_folder("path/to/folder")

# Start the GUI
gui = GUI(image_folder=prepared_data_path)
gui.start_gui()

# or if you want to annotate also for KIE
types = ["Total", "Date", "Invoice Number", "VAT Number", "Address", "Company Name"]
gui = GUI(image_folder=prepared_data_path, text_types=types)
gui.start_gui()

# (Optional) Upload the prepared data to the Hugging Face dataset hub
# The path to the folder should contain an 'images' folder and it's corresponding 'labels.json' file or the 'tmp
hf_upload_dataset(prepared_data_path)

Credits

  • This project is based on the Form-Labeller project by Devarshi Aggarwal.

Citation

If you wish to cite please refer to the base project citation, feel free to use this BibTeX references:

@misc{docTR-Labeler,
    title={docTR Labeler: docTR OCR Annotation Tool},
    author={{Dittrich, Felix}, {List, Ian}},
    year={2024},
    publisher = {GitHub},
    howpublished = {\url{https://github.com/text2knowledge/docTR-Labeler}}
}
@misc{Form-Labeller,
  author = {Aggarwal, Devarshi},
  title = {{Form Labeller}},
  howpublished = {\url{https://github.com/devarshi16/Form-Labeller}},
  year = {2020},
  note = {Online; accessed 01-March-2020}
}

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create.

Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Add your Changes
  4. Run the tests and quality checks (make test and make style and make quality)
  5. Commit your Changes (git commit -m 'Add some AmazingFeature')
  6. Push to the Branch (git push origin feature/AmazingFeature)

License

Distributed under the Apache 2.0 License. See LICENSE for more information.

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

doctr_labeler-0.2.1.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

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

doctr_labeler-0.2.1-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file doctr_labeler-0.2.1.tar.gz.

File metadata

  • Download URL: doctr_labeler-0.2.1.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for doctr_labeler-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5b198da3415ce3883b9866115a051a47e8c2ab90e107f430a813557bc55a4677
MD5 b35abeb630c9ea8290016d4409ac2ab8
BLAKE2b-256 5239240fe634ad5a7ca37ca8944e91e1ce09514ae70d7baad74efb2a9d55c061

See more details on using hashes here.

File details

Details for the file doctr_labeler-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: doctr_labeler-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for doctr_labeler-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 417c7f69329aff1faa7daf6c61019b451d05724b48107916273ecc8884cad1d8
MD5 0653083cb4acc22f1f2bdeea7967e77e
BLAKE2b-256 eb4af644d1f8288774d1d4b3965a9bc2daffa20e36aea34c2568cf1cf09f1148

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