TALECRAFTERS
← All posts
CRAFTPRODUCTIONPOST

Legible Text in AI Images: Why It Fails and What to Do Instead

Konstantinos Chatzimichail3 min read
CRAFT

Type fails in generative images because letterforms are learned as texture rather than as symbols, so the model produces something shaped like the word. The production answer is not a better prompt: generate the plate without the type and set it in post, which is also how the shot should have been built.

Every other generative failure has degrees. A slightly wrong shadow is usable, a slightly wrong material is usable, a slightly wrong face at a small size is often usable. Type has no degrees. The word is right or the frame is dead, and "nearly right" is the most dangerous outcome because it survives a quick review and reaches a client.

Why it happens

A model trained on images learns letterforms the way it learns brickwork: as a texture with statistical regularities. It has learned that a label carries marks of a certain density, that certain shapes follow certain other shapes, and that the whole thing has a particular rhythm. What it has not learned is that the marks are symbols in a system where substituting one changes the meaning entirely.

That is why the failures look the way they do. Not gibberish — plausible near-words, correct letter frequencies, believable kerning. It is producing something shaped like the word, and shape is what it was optimising.

What improves it, and by how much

INTERVENTIONEFFECTNOTES
Fewer charactersLargeOne short word is usually achievable. A sentence is not.
Flat, front-on surfaceLargeCurvature, perspective and reflection each multiply the failure rate.
Larger in frameModerateMore pixels per glyph is more room to be right.
Naming the typeface characterModerate"Heavy condensed sans" constrains the shapes it is choosing between.
Saying "no other text in frame"ModeratePrevents invented signage appearing elsewhere, which is a separate failure.
Higher resolutionSmallWidely recommended, mostly does not help.
Regenerating repeatedlyNone in expectationThe success rate does not improve with attempts. It is the same die.
Interventions ranked by how much they actually help

The last row is the expensive one. Teams burn very large amounts of budget re-rolling a packshot in the belief that the next attempt is more likely. It is not; each attempt is independent, and a shot with a low base rate stays at that rate however frustrated you become.

The method that actually works

  1. Generate the plate with the type deliberately absent. Ask for a blank label, a plain surface, an unmarked panel. Blank surfaces have a very high acceptance rate.
  2. Set the real type in post, using the actual brand typeface, at the correct size, with the correct tracking.
  3. Match the surface: warp the type to the geometry, match the lighting falloff across it, add the same grain and the same slight defocus the surrounding area has.
  4. Match the wear. Real printed type on a real object has edge irregularity. Perfectly clean type on a slightly imperfect surface reads as a sticker.
  5. Check at 100 per cent and at thumbnail size. The join shows at one or the other.

The video case, which is worse

In motion, type has to be right in every frame and consistent between them, which multiplies the problem by the frame count. A label that reads correctly at frame one and mutates at frame forty is the most common product-shot failure there is, and it is invisible on a first playback at speed.

The checks: step through the clip frame by frame across the type, and pull the first and last frames side by side. Anything that has changed is a shot that will be caught by somebody else later.

The fix is the same and harder: generate the move on a blank label and track the type on in post. It is more work than a still and it is still less work than forty attempts.

When to accept generated type

  • Background signage that is deliberately out of focus and not readable. State that it must be illegible rather than hoping.
  • Foreign-language texture where no viewer is expected to read it, provided you are certain it does not accidentally say something.
  • A single very short word, front-on, large, in a register that is not photoreal.
  • Never on a product label, a legal line, a price, a claim, or anything a regulator could read.

The number that explains why a shot with legible packaging costs three or four times what an environment plate does.

WHY TYPE DESTROYS YOUR ACCEPTANCE RATE

Questions people actually ask

Why can AI image models not spell?

Because letterforms are learned as texture rather than as symbols. The model has learned the density, rhythm and shape statistics of type, not that substituting one glyph changes the meaning — so it produces something shaped like the word rather than the word.

Does regenerating help get text right?

No. Each attempt is independent, so the success rate does not improve with frustration. Teams burn large budgets re-rolling packshots on the assumption that the next one is more likely, and it is not.

What is the right way to get legible text in a generated image?

Generate the plate with the type deliberately absent — a blank label has a very high acceptance rate — then set the real typeface in post, warped to the surface geometry, with matched lighting falloff, grain, defocus and edge wear.

Why is text harder in AI video than in images?

Because it has to be correct in every frame and consistent between them. A label that reads correctly at frame one and mutates by frame forty is the commonest product-shot failure, and it is invisible on a first playback at speed.

When is generated text acceptable?

Deliberately illegible background signage, texture nobody is expected to read, and single very short words front-on and large in a non-photoreal register. Never on a product label, a legal line, a price or a claim.

WRITTEN BY

Konstantinos Chatzimichail
FOUNDER AND CREATIVE DIRECTOR, TALECRAFTERS

Founder of TaleCrafters. Writes the pipelines the studio works to, directs the films that come out of them, and publishes both.

More from Konstantinos

TERMS USED HERE

TAKE THE TOOL WITH YOU

READ NEXT