Skip to main content

streamlit-text-annotation is a simple streamlit component for displaying and editing text annotations.

Project description

# streamlit-text-annotation
streamlit-text-annotation is a simple streamlit component for displaying and editing text annotations.
Its display functions are similar to [st-annotated-text](https://github.com/tvst/st-annotated-text), with the following added functions:
- support for multiple labels on the same token
- optional CSS style customization for each label
- automatic distinct color assignment (can be overridden with CSS styles)
- horizonal and vertical label layouts

Its (optional) editing functions allow users to easily add or delete multi-label annotations.

This component is built on [streamlit-component-template-vue](https://github.com/andfanilo/streamlit-component-template-vue).

# Installation
```
pip install streamlit-text-annotation
```

## Parameters
The text_annotation function accepts the following parameters:

- tokens (required): an array of token objects whose properties include 'text' (required) and 'labels' (optional), in the following format:
```
[
{ text: "Text1"},
{ text: "Text2", labels: ["Label1", "Label2"] },
]
```
- labels (optional, default=[]): an array of label objects whose properties include 'text' (required) and 'style' (optional), in the following format:
```
[
{"text": "Pronoun"},
{"text": "Verb", "style": {
"color": "green",
"background-color": "white",
"font-size": "8px",
"font-weight": "900",
}}
]
```
- allowEditing (optional, default=false): boolean; set to true to allow editing (edit mode) or false to disallow (display mode)
- labelOrientation (optional, default="vertical"): whether to display the labels vertically ("vertical") or horizontally ("horizontal")
- collectLabelsFromTokens (optional, default=true): whether to add labels from existing token labels (defined in the tokens array) to the labels array if not found

## Examples
```
import streamlit as st
from streamlit_text_annotation import text_annotation

data1 = {
"tokens": [
{"text": "He", "labels": ["Person"]},
{"text": "loves"},
{"text": "his"},
{"text": "dog", "labels": ["Animal", "Pet"]},
],
"labels": [
{"text": "Person"},
{"text": "Action"},
{"text": "Animal"},
]
}

st.subheader("Display Mode:")
left, right = st.columns(2)
with left:
st.text("Vertical labels:")
text_annotation(data1)
with right:
st.text("Horizontal labels:")
data1["labelOrientation"] = "horizontal"
text_annotation(data1)


data2 = {
"allowEditing": True,
"tokens": [
{"text": "He", "labels": ["Pronoun", "Person"]},
{"text": "loves", "labels": ["Action"]},
{"text": "his"},
{"text": "dog", "labels": ["Animal"]},
],
"labels": [
{"text": "Pronoun", "style": {
"color": "red",
"background-color": "white",
"font-size": "8px",
"border": "3px dashed red",
}},
{"text": "Verb", "style": {
"color": "green",
"background-color": "white",
"font-size": "8px",
"font-weight": "900",
}},
{"text": "Noun", "style": {
"color": "blue",
"background-color": "white",
"font-size": "8px",
}},
{"text": "Person"},
{"text": "Animal"},
]
}

st.subheader("Edit Mode:")
data = text_annotation(data2)
if data:
"Returned data:", data
```


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

streamlit-text-annotation-0.1.5.tar.gz (518.6 kB view details)

Uploaded Source

Built Distribution

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

streamlit_text_annotation-0.1.5-py3-none-any.whl (523.9 kB view details)

Uploaded Python 3

File details

Details for the file streamlit-text-annotation-0.1.5.tar.gz.

File metadata

  • Download URL: streamlit-text-annotation-0.1.5.tar.gz
  • Upload date:
  • Size: 518.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.3

File hashes

Hashes for streamlit-text-annotation-0.1.5.tar.gz
Algorithm Hash digest
SHA256 4cb982d76db14c96041c1cfd2cf71349407efbb85594ab159ee0b3347b6b129d
MD5 97d2484281d9e09796429e5d9f3f14ad
BLAKE2b-256 e3b1385e2a4ddb2c863968dd603ff7fda8753fe5ad407f7d5bf810e6caaa9202

See more details on using hashes here.

File details

Details for the file streamlit_text_annotation-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: streamlit_text_annotation-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 523.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.3

File hashes

Hashes for streamlit_text_annotation-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3f49d7e7d023c71e698f59c8ad8139814c47536e66d1267be43f41c6e99ccaf0
MD5 15e2f7f3eb2a1550c4865c9e68d923c3
BLAKE2b-256 ed94cc38822f5f7bd67576a922f0a57ee44fa607c4068ff1ba66cd324b4af446

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