aBBi (“AI-bildbeskrivningar”) is a web app for generating alt texts for images and transcribing text in images using AI. It can also TEI (Text Encoding Initiative) XML encode the transcriptions. It currently supports OpenAI and Google models with vision capabilities. You need an OpenAI or Google API key to use the tool. It is a frontend app without the need of a backend.
The app is built on Angular and uses Angular Material web components.
Author: Sebastian Köhler (2024)
Images in the screenshot: Library of Congress public domain.
Learn about the latest improvements.
- Install Node.js which includes npm. The app is compatible with Node
^20.19.0,^22.12.0and^24.0.0(based on Angular 21 compatibility). Check your Node version with:
Node --version
- Install the Angular CLI globally:
npm install -g @angular/cli
-
Clone the repository locally and
cdinto the folder. On Windows you can use GitHub Desktop or Git Bash (see tutorial on Git Bash). -
Install dependencies:
npm install
To build and serve the application on a development server, run:
npm start
Open your browser on http://localhost:4200/. The app will automatically rebuild and reload if you change any of the source files.
On each commit in the main branch a Docker image with the tag main is automatically built using GitHub Actions and stored in the GitHub Container Registry.
On each release a Docker image with the chosen release tag and the tag latest is automatically built using GitHub Actions and also stored in the GitHub Container Registry.
To deploy the latest image, you can clone the repository or just compose.yaml and run:
docker compose up -d
Most of the dependencies are part of the Angular framework (@angular/). These should be updated with the command:
ng update @angular/cli @angular/core @angular/cdk @angular/material
When updating to a new major version of Angular, check the update guide first: https://angular.dev/update-guide. Also update the Angular major version number specified in Dockerfile.
Other dependencies can be updated by bumping the version number in package.json and running:
npm install
Node.js and nginx Docker images are used in the build process. To update these, change the tags specified in both Dockerfile and in docker-build-and-push.yml.
The available AI-models are defined in src/assets/config/models.ts. Currently, OpenAI and Google (Gemini) models are supported.
The prompts for the various tasks supported by the app are defined in separate plain text files in src/assets/prompts/. The prompts are imported by src/assets/config/prompts.ts In the prompts, there are some hard-coded strings like {{FILENAME}} and {{DESC_LENGTH}} which are replaced by UI settings on runtime.
