You've just spent hours working on a new 120-slide course in PowerPoint. And now you’ve got to translate it 😧. PowerPoint presentations are essential tools in business, but translating them, especially in bulk, is tedious and time consuming. Unlike Microsoft Word, PowerPoint lacks an auto-translation feature for entire files, leaving users to manually translate each text box on every slide. This process becomes even more daunting for presentations spanning hundreds of slides.
To solve this challenge, you can build an automated PowerPoint translator with KNIME Analytics Platform that you’ll be able to reuse again and again. By using KNIME’s visual workflow environment (no code required) you can automate the extraction, translation, and reinsertion of text while preserving the original slide layouts. This workflow eliminates hours of manual work and streamlines the translation process for all your multilingual presentations.
Note: The component used in this article is available publicly and free to download on the KNIME Community Hub. You can find the component under my Components space at PowerPoint Translator (OpenAI).
The Task: Parse PowerPoints and translate text
The goal of this component is to automate PowerPoint translation while preserving the original layout and design. This includes handling both simple and complex slide elements, such as tables, text boxes, and nested shapes. This process involves several steps outlined below:
- Input handling depending on the type of upload: individual PowerPoint files or a ZIP archive.
- Preparing the PowerPoint file by getting the proper pathing and creating a copy
- Extracting text from PowerPoint slides, replacing it with unique identifiers (IDs) for traceability
- Translating the extracted text using OpenAI’s GPT-4o-mini model
- Reinserting the translated text back into the slides while ensuring alignment with the original structure
Additionally, we want our workflow to handle cases where an individual file is uploaded or a zip full of PowerPoints:
- Individual PowerPoint Files: When a single file is uploaded, it is processed directly without additional steps for decompression or packaging
- ZIP Files: For bulk translation tasks, the workflow will automatically decompress the ZIP file, process each presentation individually, and then re-compresses the translated presentations into a new ZIP file
Step 1: Input handling: Upload PowerPoint files or zip files containing multiple presentations

The workflow begins with input handling. Configure the PowerPoint Translator (OpenAI) component to upload either individual PowerPoint files or ZIP files containing multiple presentations.
Here you also need to specify:
- The target language for translation (e.g.. “Italian”, “German”,...) is in plain English which eliminates the need for ISO language codes
- The API key from OpenAI
After uploading the files, the workflow uses a case switch to determine if the input is a single PowerPoint file or a ZIP archive.
And that’s it! Copying the component and specifying input in the configuration is the only needed part to get started using the component in KNIME Analytics Platform. If you want to stick around to see how it works, we cover that in the steps below.
Step 2: Prepare the file

For our purposes, we will cover the part of the component that handles individual PowerPoint files shown above. The workflow converts the relative file path to an absolute path so the file can be accessed regardless of the operating system. A copy of the file is created to preserve the original. We then create a prompt in the Table Creator node with a placeholder that we can later use to replace with a String Manipulation node for the input target language. This prompt will later be used for translating the text in LLM Propter.
Step 3: Extract text from the PowerPoint slides
The first Python script node in our workflow is configured to extract the text from the PowerPoint slides. This includes text inside tables, text boxes, and nested shapes.
Each piece of text is replaced with a unique identifier (ID), which is used as an index when reinserting the translated text back into its correct spot. A mapping of IDs and their text is stored in a KNIME table, which will be used in creating the prompt for translation.
In the figure below, you can see how the dynamic fields (target language and text to translate) are populated by inserting their content.

Step 4: Translate the text
The complete prompt to translate the text is output from the String Manipulation node, which includes the target language and the text to translate. Then, we pass the output to the LLM Prompter node to start the translations. With the current prompt, we have it place the translated text between tags so we can extract them easier as shown in the results after running our test PowerPoint file through the LLM Prompter node as shown below:

Step 5: Reinsert the translated text
After translation, we clean the output to remove tags and create a flow variable that points at the copy of the PowerPoint file. We then pass the table with only the translated text and IDs to the second Python script node. This second script handles the mapping of IDs to translated text and updates the corresponding placeholders in the slides. The copy is updated and we have a flow variable pointing at it so we can easily fetch it using a node such as the File Download Widget.
Try an alternative flow: ZIP Archive

Now for the second part of the workflow that handles zip files as shown in the figure above, it is essentially the same as we have outlined previously for the individual handling. The only difference is that we first need to unzip the file then run a loop to go over each file in the zip file. Once this is finished, it will rezip all the PowerPoints back into a new zip file.
The Results: Automated PowerPoint translations
The workflow automates PowerPoint translation while preserving the original layout and design. Text from tables, text boxes, and nested shapes are extracted, translated, and injected back into the original PowerPoint properly.
Key results include:
- Tables: Properly traversed and translated text is placed correctly as shown below

- Nested Shapes: Text within grouped elements is also handled by the script as shown in the figure below

- Layout Preservation: Translated text is reinserted in its original location, retaining the slide’s formatting.
The main issue that will require adjustment is when the translated language uses more characters than the original text. This can result in text overflow or new lines (particularly in small tables or shapes), requiring adjustment of these elements either in shape size or font size to fit properly. Below is an example where the table should be one line per row, but due to character length increase, some rows take two lines:

KNIME for automation
Developing this KNIME-based automated translation workflow has significantly improved the time it takes to translate long PowerPoint files. By choosing a LLM over Google Translate, this allows more fine tuned controls and the ability to use plain text for languages.
If you only need the ability to parse and extract textual content from PowerPoint slides, check out my other component, PowerPoint Parser, designed specifically for extracting text from PowerPoints only.