Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0985fb5
updating app development dashboard file
Jun 25, 2025
f06dc73
updating app development dashboard file
Jun 27, 2025
788dafb
adding metadata of whisper-wrapper.v13
Jun 30, 2025
4e200b1
updating app development dashboard file
Jun 30, 2025
c1526a8
Merge pull request #201 from clamsproject/register/0-whisper-wrapper.v13
keighrim Jun 30, 2025
b2fe7a8
updating app development dashboard file
Jul 1, 2025
8c79486
adding metadata of doctr-wrapper.v1.3
Jul 2, 2025
a5a5c4c
Merge pull request #202 from clamsproject/register/0-doctr-wrapper.v1.3
keighrim Jul 2, 2025
65218b6
adding metadata of tesseract.v2.0
Jul 2, 2025
211a875
Merge pull request #203 from clamsproject/register/0-tesseract.v2.0
keighrim Jul 2, 2025
b96b47c
updating app development dashboard file
Jul 2, 2025
4cad32b
updating app development dashboard file
Jul 3, 2025
a9a079e
updating app development dashboard file
Jul 3, 2025
362fa4a
updating app development dashboard file
Jul 6, 2025
cc1ce17
updating app development dashboard file
Jul 11, 2025
354ffa1
appdev-dashboard now updates every 8hr (prev. 6hr)
keighrim Jul 11, 2025
8709296
adding metadata of heuristic-chyron-understanding.v0.2
Jul 14, 2025
1c398a3
Merge pull request #204 from clamsproject/register/0-heuristic-chyron…
keighrim Jul 14, 2025
b23497e
updating app development dashboard file
Jul 15, 2025
6637770
Merge branch 'main' into recovery-b23497e
keighrim Oct 1, 2025
ddfdbad
updated app page indexer script to work in "from-scratch" mode
keighrim Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/appdev-dashboard.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: "📱App Development Dashboard Generation (6hr)"
name: "📱App Development Dashboard Generation (8hr)"

on:
schedule:
- cron: "49 1,7,13,19 * * *"
- cron: "49 1,9,17 * * *"
workflow_dispatch:

env:
Expand Down
1 change: 1 addition & 0 deletions docs/_apps/doctr-wrapper/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ title: doctr-wrapper
date: 1970-01-01T00:00:00+00:00
---
CLAMS app wraps the [docTR, End-to-End OCR model](https://pypi.org/project/python-doctr). The model can detect text regions in the input image and recognize text in the regions (via parseq OCR model, only English is support at the moment). The text-localized regions are organized hierarchically by the model into "pages" > "blocks" > "lines" > "words", and this CLAMS app translates them into `TextDocument`, `Paragraphs`, `Sentence`, and `Token` annotations to represent recognized text contents. See descriptions for I/O types below for details on how annotations are aligned to each other.
- [v1.3](v1.3) ([`@keighrim`](https://github.com/keighrim))
- [v1.2](v1.2) ([`@keighrim`](https://github.com/keighrim))
- [v1.1](v1.1) ([`@keighrim`](https://github.com/keighrim))
- [v1.0](v1.0) ([`@keighrim`](https://github.com/keighrim))
105 changes: 105 additions & 0 deletions docs/_apps/doctr-wrapper/v1.3/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
layout: posts
classes: wide
title: "CLAMS docTR Wrapper (v1.3)"
date: 2025-07-02T02:33:54+00:00
---
## About this version

- Submitter: [keighrim](https://github.com/keighrim)
- Submission Time: 2025-07-02T02:33:54+00:00
- Prebuilt Container Image: [ghcr.io/clamsproject/app-doctr-wrapper:v1.3](https://github.com/clamsproject/app-doctr-wrapper/pkgs/container/app-doctr-wrapper/v1.3)
- Release Notes

> fixed critical bug that caused app crash

## About this app (See raw [metadata.json](metadata.json))

**CLAMS app wraps the [docTR, End-to-End OCR model](https://pypi.org/project/python-doctr). The model can detect text regions in the input image and recognize text in the regions (via parseq OCR model, only English is support at the moment). The text-localized regions are organized hierarchically by the model into "pages" > "blocks" > "lines" > "words", and this CLAMS app translates them into `TextDocument`, `Paragraphs`, `Sentence`, and `Token` annotations to represent recognized text contents. See descriptions for I/O types below for details on how annotations are aligned to each other.**

- App ID: [http://apps.clams.ai/doctr-wrapper/v1.3](http://apps.clams.ai/doctr-wrapper/v1.3)
- App License: Apache 2.0
- Source Repository: [https://github.com/clamsproject/app-doctr-wrapper](https://github.com/clamsproject/app-doctr-wrapper) ([source tree of the submitted version](https://github.com/clamsproject/app-doctr-wrapper/tree/v1.3))
- Analyzer Version: 0.8.1
- Analyzer License: Apache 2.0


#### Inputs
(**Note**: "*" as a property value means that the property is required but can be any value.)

- [http://mmif.clams.ai/vocabulary/VideoDocument/v1](http://mmif.clams.ai/vocabulary/VideoDocument/v1) (required)
(of any properties)

- [http://mmif.clams.ai/vocabulary/TimeFrame/v5](http://mmif.clams.ai/vocabulary/TimeFrame/v5) (required)
- _representatives_ = "?"
- _label_ = "*"

> The _labeled_ TimeFrame annotation that represents the video segment to be processed. When `representatives` property is present, the app will process videos still frames at the underlying time point annotations that are referred to by the `representatives` property. Otherwise, the app will process the middle frame of the video segment. Generic TimeFrames with no `label` property will not be processed.


#### Configurable Parameters
(**Note**: _Multivalued_ means the parameter can have one or more values.)

- `tfLabel`: optional, defaults to `[]`

- Type: string
- Multivalued: True


> The label of the TimeFrame annotation to be processed. By default (`[]`), all TimeFrame annotations will be processed, regardless of their `label` property values.
- `pretty`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> The JSON body of the HTTP response will be re-formatted with 2-space indentation
- `runningTime`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> The running time of the app will be recorded in the view metadata
- `hwFetch`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> The hardware information (architecture, GPU and vRAM) will be recorded in the view metadata


#### Outputs
(**Note**: "*" as a property value means that the property is required but can be any value.)

(**Note**: Not all output annotations are always generated.)

- [http://mmif.clams.ai/vocabulary/TextDocument/v1](http://mmif.clams.ai/vocabulary/TextDocument/v1)
- _@lang_ = "en"

> Fully serialized text content of the recognized text in the input images. Serialization isdone by concatenating `text` values of `Paragraph` annotations with two newline characters.
- [http://vocab.lappsgrid.org/Token](http://vocab.lappsgrid.org/Token)
- _text_ = "*"
- _word_ = "*"

> Translation of the recognized docTR "words" in the input images. `text` and `word` properties store the string values of the recognized text. The duplication is for keepingbackward compatibility and consistency with `Paragraph` and `Sentence` annotations.
- [http://vocab.lappsgrid.org/Sentence](http://vocab.lappsgrid.org/Sentence)
- _text_ = "*"

> Translation of the recognized docTR "lines" in the input images. `text` property stores the string value of space-joined words.
- [http://vocab.lappsgrid.org/Paragraph](http://vocab.lappsgrid.org/Paragraph)
- _text_ = "*"

> Translation of the recognized docTR "blocks" in the input images. `text` property stores the string value of newline-joined sentences.
- [http://mmif.clams.ai/vocabulary/Alignment/v1](http://mmif.clams.ai/vocabulary/Alignment/v1)
(of any properties)

> Alignments between 1) `TimePoint` <-> `TextDocument`, 2) `TimePoint` <-> `Token`/`Sentence`/`Paragraph`, 3) `BoundingBox` <-> `Token`/`Sentence`/`Paragraph`
- [http://mmif.clams.ai/vocabulary/BoundingBox/v4](http://mmif.clams.ai/vocabulary/BoundingBox/v4)
- _label_ = "text"

> Bounding boxes of the detected text regions in the input images. No corresponding box for the entire image (`TextDocument`) region
98 changes: 98 additions & 0 deletions docs/_apps/doctr-wrapper/v1.3/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{
"name": "CLAMS docTR Wrapper",
"description": "CLAMS app wraps the [docTR, End-to-End OCR model](https://pypi.org/project/python-doctr). The model can detect text regions in the input image and recognize text in the regions (via parseq OCR model, only English is support at the moment). The text-localized regions are organized hierarchically by the model into \"pages\" > \"blocks\" > \"lines\" > \"words\", and this CLAMS app translates them into `TextDocument`, `Paragraphs`, `Sentence`, and `Token` annotations to represent recognized text contents. See descriptions for I/O types below for details on how annotations are aligned to each other.",
"app_version": "v1.3",
"mmif_version": "1.0.5",
"analyzer_version": "0.8.1",
"app_license": "Apache 2.0",
"analyzer_license": "Apache 2.0",
"identifier": "http://apps.clams.ai/doctr-wrapper/v1.3",
"url": "https://github.com/clamsproject/app-doctr-wrapper",
"input": [
{
"@type": "http://mmif.clams.ai/vocabulary/VideoDocument/v1",
"required": true
},
{
"@type": "http://mmif.clams.ai/vocabulary/TimeFrame/v5",
"description": "The _labeled_ TimeFrame annotation that represents the video segment to be processed. When `representatives` property is present, the app will process videos still frames at the underlying time point annotations that are referred to by the `representatives` property. Otherwise, the app will process the middle frame of the video segment. Generic TimeFrames with no `label` property will not be processed.",
"properties": {
"representatives": "?",
"label": "*"
},
"required": true
}
],
"output": [
{
"@type": "http://mmif.clams.ai/vocabulary/TextDocument/v1",
"description": "Fully serialized text content of the recognized text in the input images. Serialization isdone by concatenating `text` values of `Paragraph` annotations with two newline characters.",
"properties": {
"@lang": "en"
}
},
{
"@type": "http://vocab.lappsgrid.org/Token",
"description": "Translation of the recognized docTR \"words\" in the input images. `text` and `word` properties store the string values of the recognized text. The duplication is for keepingbackward compatibility and consistency with `Paragraph` and `Sentence` annotations.",
"properties": {
"text": "*",
"word": "*"
}
},
{
"@type": "http://vocab.lappsgrid.org/Sentence",
"description": "Translation of the recognized docTR \"lines\" in the input images. `text` property stores the string value of space-joined words.",
"properties": {
"text": "*"
}
},
{
"@type": "http://vocab.lappsgrid.org/Paragraph",
"description": "Translation of the recognized docTR \"blocks\" in the input images. `text` property stores the string value of newline-joined sentences.",
"properties": {
"text": "*"
}
},
{
"@type": "http://mmif.clams.ai/vocabulary/Alignment/v1",
"description": "Alignments between 1) `TimePoint` <-> `TextDocument`, 2) `TimePoint` <-> `Token`/`Sentence`/`Paragraph`, 3) `BoundingBox` <-> `Token`/`Sentence`/`Paragraph`"
},
{
"@type": "http://mmif.clams.ai/vocabulary/BoundingBox/v4",
"description": "Bounding boxes of the detected text regions in the input images. No corresponding box for the entire image (`TextDocument`) region",
"properties": {
"label": "text"
}
}
],
"parameters": [
{
"name": "tfLabel",
"description": "The label of the TimeFrame annotation to be processed. By default (`[]`), all TimeFrame annotations will be processed, regardless of their `label` property values.",
"type": "string",
"default": [],
"multivalued": true
},
{
"name": "pretty",
"description": "The JSON body of the HTTP response will be re-formatted with 2-space indentation",
"type": "boolean",
"default": false,
"multivalued": false
},
{
"name": "runningTime",
"description": "The running time of the app will be recorded in the view metadata",
"type": "boolean",
"default": false,
"multivalued": false
},
{
"name": "hwFetch",
"description": "The hardware information (architecture, GPU and vRAM) will be recorded in the view metadata",
"type": "boolean",
"default": false,
"multivalued": false
}
]
}
6 changes: 6 additions & 0 deletions docs/_apps/doctr-wrapper/v1.3/submission.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"time": "2025-07-02T02:33:54+00:00",
"submitter": "keighrim",
"image": "ghcr.io/clamsproject/app-doctr-wrapper:v1.3",
"releasenotes": "fixed critical bug that caused app crash\n\n"
}
8 changes: 8 additions & 0 deletions docs/_apps/heuristic-chyron-understanding/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
layout: posts
classes: wide
title: heuristic-chyron-understanding
date: 1970-01-01T00:00:00+00:00
---
Prototype to convert chyron text from docTR/Tesseract/LLaVA MMIF outputinto a name and list of attributes.
- [v0.2](v0.2) ([`@keighrim`](https://github.com/keighrim))
82 changes: 82 additions & 0 deletions docs/_apps/heuristic-chyron-understanding/v0.2/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
layout: posts
classes: wide
title: "Heuristic Chyron Understanding (v0.2)"
date: 2025-07-14T23:10:14+00:00
---
## About this version

- Submitter: [keighrim](https://github.com/keighrim)
- Submission Time: 2025-07-14T23:10:14+00:00
- Prebuilt Container Image: [ghcr.io/clamsproject/app-heuristic-chyron-understanding:v0.2](https://github.com/clamsproject/app-heuristic-chyron-understanding/pkgs/container/app-heuristic-chyron-understanding/v0.2)
- Release Notes

> Initial release with naive line parsing and name normalization

## About this app (See raw [metadata.json](metadata.json))

**Prototype to convert chyron text from docTR/Tesseract/LLaVA MMIF outputinto a name and list of attributes.**

- App ID: [http://apps.clams.ai/heuristic-chyron-understanding/v0.2](http://apps.clams.ai/heuristic-chyron-understanding/v0.2)
- App License: Apache 2.0
- Source Repository: [https://github.com/clamsproject/app-heuristic-chyron-understanding](https://github.com/clamsproject/app-heuristic-chyron-understanding) ([source tree of the submitted version](https://github.com/clamsproject/app-heuristic-chyron-understanding/tree/v0.2))


#### Inputs
(**Note**: "*" as a property value means that the property is required but can be any value.)

- [http://mmif.clams.ai/vocabulary/TextDocument/v1](http://mmif.clams.ai/vocabulary/TextDocument/v1) (required)
(of any properties)

> Text content transcribed from video input by docTR/Tesseract/LLAVA.


#### Configurable Parameters
(**Note**: _Multivalued_ means the parameter can have one or more values.)

- `note4mode`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> Boolean to set the app to run in "note-4" mode and to take the second line (if available) from the input text to be the `name-normalized` value. The default is false, which means the app will try to generate normalization from`name-as-written` (from the first line) value.
- `pretty`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> The JSON body of the HTTP response will be re-formatted with 2-space indentation
- `runningTime`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> The running time of the app will be recorded in the view metadata
- `hwFetch`: optional, defaults to `false`

- Type: boolean
- Multivalued: False
- Choices: **_`false`_**, `true`


> The hardware information (architecture, GPU and vRAM) will be recorded in the view metadata


#### Outputs
(**Note**: "*" as a property value means that the property is required but can be any value.)

(**Note**: Not all output annotations are always generated.)

- [http://mmif.clams.ai/vocabulary/TextDocument/v1](http://mmif.clams.ai/vocabulary/TextDocument/v1)
- _document_ = "*"
- _origin_ = "*"
- _provenance_ = "derived"
- _mime_ = "application/json"

> Reformatted chyron text. `document` property stores the ID of the original source `VideoDocument`. `origin` property stores the ID of the original OCR `TextDocument` annotation. Reformatted text is escaped JSON string with three fields: `name-as-written`, `name-normalized`, and `attributes`.
58 changes: 58 additions & 0 deletions docs/_apps/heuristic-chyron-understanding/v0.2/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"name": "Heuristic Chyron Understanding",
"description": "Prototype to convert chyron text from docTR/Tesseract/LLaVA MMIF outputinto a name and list of attributes.",
"app_version": "v0.2",
"mmif_version": "1.0.5",
"app_license": "Apache 2.0",
"identifier": "http://apps.clams.ai/heuristic-chyron-understanding/v0.2",
"url": "https://github.com/clamsproject/app-heuristic-chyron-understanding",
"input": [
{
"@type": "http://mmif.clams.ai/vocabulary/TextDocument/v1",
"description": "Text content transcribed from video input by docTR/Tesseract/LLAVA.",
"required": true
}
],
"output": [
{
"@type": "http://mmif.clams.ai/vocabulary/TextDocument/v1",
"description": "Reformatted chyron text. `document` property stores the ID of the original source `VideoDocument`. `origin` property stores the ID of the original OCR `TextDocument` annotation. Reformatted text is escaped JSON string with three fields: `name-as-written`, `name-normalized`, and `attributes`. ",
"properties": {
"document": "*",
"origin": "*",
"provenance": "derived",
"mime": "application/json"
}
}
],
"parameters": [
{
"name": "note4mode",
"description": "Boolean to set the app to run in \"note-4\" mode and to take the second line (if available) from the input text to be the `name-normalized` value. The default is false, which means the app will try to generate normalization from`name-as-written` (from the first line) value. ",
"type": "boolean",
"default": false,
"multivalued": false
},
{
"name": "pretty",
"description": "The JSON body of the HTTP response will be re-formatted with 2-space indentation",
"type": "boolean",
"default": false,
"multivalued": false
},
{
"name": "runningTime",
"description": "The running time of the app will be recorded in the view metadata",
"type": "boolean",
"default": false,
"multivalued": false
},
{
"name": "hwFetch",
"description": "The hardware information (architecture, GPU and vRAM) will be recorded in the view metadata",
"type": "boolean",
"default": false,
"multivalued": false
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"time": "2025-07-14T23:10:14+00:00",
"submitter": "keighrim",
"image": "ghcr.io/clamsproject/app-heuristic-chyron-understanding:v0.2",
"releasenotes": "Initial release with naive line parsing and name normalization\n\n"
}
1 change: 1 addition & 0 deletions docs/_apps/tesseract/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ date: 1970-01-01T00:00:00+00:00
---
This tool applies Tesseract OCR to a video or image and generates text boxes and OCR results. Currenly only support English language.
- [v2.1](v2.1) ([`@keighrim`](https://github.com/keighrim))
- [v2.0](v2.0) ([`@keighrim`](https://github.com/keighrim))
Loading
Loading