DEV Community

Cover image for How to auto-generate the image Alt-Text using AI and Transformers PHP
Roberto B.
Roberto B.

Posted on

How to auto-generate the image Alt-Text using AI and Transformers PHP

In this article, we’ll walk you through generating alternative text (alt text) from an image using the TransformersPHP library.

Alt text is crucial for accessibility and SEO, providing a textual description of images for screen readers and search engines.

What is Alt Text for Images?

Alt text (alternative text) briefly describes an image that appears in the HTML code. It's displayed in place of an image if it fails to load and is used by screen readers to describe the image to visually impaired users.

Why Are Alt Tags Important?

Alt tags are crucial for accessibility, allowing screen readers to describe images to users with visual impairments. They also enhance SEO by helping search engines understand the content of images, which can improve your website's ranking.

How do you add alt text to images in HTML?

To add alt text to an image in HTML, include the alt attribute within the <img> tag:

<img src="image.jpg" alt="A description of the image">
Enter fullscreen mode Exit fullscreen mode

How to Generate Alternative Text from an Image Using TransformersPHP

Step 1: Set Up the Project

Before diving into the code, please install the TransformersPHP library.
You can install it via Composer by running:

composer require codewithkyrian/transformers
Enter fullscreen mode Exit fullscreen mode

Once installed, you can start working with the library by creating a new empty file and requiring the autoload file:

<?php
require './vendor/autoload.php';
Enter fullscreen mode Exit fullscreen mode

The require instruction is essential because it loads all the necessary classes and dependencies Composer provides.

Step 2: Import Necessary Classes

Next, you need to import the relevant classes and functions that will be used:

use Codewithkyrian\Transformers\Transformers;
use Codewithkyrian\Transformers\Utils\ImageDriver;
use function Codewithkyrian\Transformers\Pipelines\pipeline;
Enter fullscreen mode Exit fullscreen mode
  • Transformers: The main class handles the model setup and processing.
  • ImageDriver: This utility class manages image processing. The IMAGICK driver is a popular choice for handling images in PHP.
  • pipeline: This function is crucial as it initiates a specific processing pipeline, which, in this case, converts images to text.

Step 3: Initialize the Transformers Class

Before generating alt text, the Transformers class must be initialized and configured:

Transformers::setup()
    ->setImageDriver(ImageDriver::IMAGICK)
    ->setCacheDir('./models')
    ->apply();

Enter fullscreen mode Exit fullscreen mode
  • setImageDriver(): Specifies the image processing driver. Here, we use IMAGICK for its robustness.
  • setCacheDir(): Defines the directory where models will be cached, improving performance by avoiding repeated downloads.
  • apply(): Finalizes the setup and activates the configuration.

Step 4: Set Up the Pipeline

The pipeline is a series of processes that converts input (an image) into output (text). You need to define the pipeline as follows:

$pipeline = pipeline('image-to-text');
Enter fullscreen mode Exit fullscreen mode

The image-to-text pipeline analyzes an image and generates a descriptive text. This step prepares the pipeline for processing.

Step 5: Generate Alternative Text

Finally, you can pass an image file to the pipeline to generate the alternative text:

$result = $pipeline('test-image.webp');
Enter fullscreen mode Exit fullscreen mode

This command processes test-image.webp, returning a result that includes the generated text.
You can also use a remote image using a full URL.

To display the generated text, you can use:

echo $result[0]['generated_text'] . PHP_EOL;
Enter fullscreen mode Exit fullscreen mode

The $result variable is an array with one element ([0]) and with an attribute named generated_text
This outputs the alt text to the console or web page.

Conclusion

Using TransformersPHP, generating alt text from images is straightforward. You can easily convert any image into descriptive text by setting up the environment, initializing the necessary classes, and defining a pipeline. Using the generated text as alt in the img HTML tag is particularly useful for improving the accessibility of web content and ensuring that all users, regardless of their abilities, can understand the content on your site.

References

Top comments (4)

Collapse
 
denys_bochko profile image
Denys Bochko

Definitely worth checking out.

my only question is about hitting the site performance with the generation of alt text on every page load. I can't see it done otherwise unless it's a cms. If you have 2-30 images, each of them needs to be processed, unless there is a caching in the transformersPHP side that will not reuse the pipeline for images that have already been processed.

Otherwise, an interesting tool will dig deeper into that, just getting my AI knowledge in order

Collapse
 
cviniciussdias profile image
Vinicius Dias

This could be used to set the alt at the time of upload of the image, not at the moment of each request for that image. So besides storing the image, you store it's alt.

Collapse
 
robertobutti profile image
Roberto B.

@cviniciussdias exactly, i agree with you. Good point!
Thank you for sharing your suggestion

Collapse
 
robertobutti profile image
Roberto B.

Hi @denys_bochko thank you for the feedback and the question.

You can trigger the execution during the upload and store the caption in a database as metadata for each image.
So, when you need to render the page, you can pick the URL of the image, and related metadata (avoiding processing the AI again).
When the image is uploaded, the AI process can be executed with an async approach via queue or forking a new process for executing the AI.