DEV Community

Cover image for I ran 17 controlled generations to find out where AI manga panels break
Merl Merl
Merl Merl

Posted on

I ran 17 controlled generations to find out where AI manga panels break

Garbled text inside generated images has been a standing complaint for as long as I have been using these tools. Recent releases claim to have fixed it, and I wanted to find out where the line actually sits.

So I set up a small experiment: one character, one model, seventeen generations, and a rule that every comparison changes exactly one variable. The subject is manga panels, because a panel is the one image format that has to carry artwork and text in the same frame and make both readable. The model is Tsubaki.3 on PixAI. I cannot draw, which for this purpose is a feature: everything below comes out of the prompt, with nothing rescued by hand afterward.

The setup

Treat the prompt as a function call with five arguments:

panel(
  scene,       # what is happening
  character,   # who, in full, every run
  framing,     # camera position and how tight
  dialogue,    # the line, and which corner it goes in
  treatment    # panel border, screentone, speed lines
)
Enter fullscreen mode Exit fullscreen mode

The character argument stays identical across every run. That is what makes the rest of it measurable. Settings held constant too: no style preset, no LoRA, quality booster off, portrait 3:4, and the negative prompt left prefilled as it ships, with one deliberate exception below. Every comparison ran as a single generation rather than a batch of four, because picking the best of four is selection bias with extra steps.

Same character description, same action, two different treatment arguments. The left is a color illustration, centered, no border, no text. The right is the manga instruction: panel border, screentone, a lower camera, and the bubble. The room is identical. The treatment is the whole delta.

Finding 1: the negative prompt does not need touching

The default negative prompt on this model ships with text in it. That reads like a direct conflict with a speech bubble, so I ran the same panel twice, once as-is and once with text deleted.

There was no difference. Both runs produced the requested line, correctly spelled, in a clean hand-lettered balloon. Requested dialogue behaves like subject matter rather than like stray artifact text, so the negative prompt is not the thing standing between you and a bubble.

Then I raised the input length from two words to eight, with punctuation:

"PICK ANOTHER"                              -> correct
"THIS ONE IS BLURRY. THE CAPTION IS WRONG." -> correct, both periods
Enter fullscreen mode Exit fullscreen mode

The bubble occupied about five percent of the frame in both cases. The model did not resize the balloon to fit more text; it shrank the glyphs and stacked them into three rows. Longer strings cost legibility, not area.

Finding 2: naming the bubble's position rewrites the composition

This is the result I did not expect, and it is the reason the whole experiment was worth running.

Three runs, one scene, one variable:

Run Dialogue argument Result
A line only, no position bubble self-placed on empty window area, cleared the face, no tail drawn
B line plus "upper left corner" bubble in that corner, and the character moved to the right side of the frame
C B plus an explicit empty-third layout instruction requested layout delivered, character shrank, tail came out as an open line

Run B is the interesting one. I changed four words in the dialogue argument and the model re-solved the whole composition around them: figure to the right, table rotated, upper left cleared. Nothing in the prompt said where she should stand.

The model treats the bubble as a layout element that has to fit, and it resolves the constraint by moving the artwork. That gives you a clean rule:

Name the corner. Do not also specify the layout.

Run C is what over-constraining looks like. Two instructions competing for the same rectangle, and the subject is what yields.

Finding 3: placement is reliable, the tail is not

Across the full set, balloon placement never failed. The tail failed in four different ways:

  • missing entirely
  • doubled, two tails aimed at the same speaker
  • drawn as a thin open line stopping in mid air, with the balloon outline broken where they should join
  • hanging into the gap between two characters, pointing at neither

If you are building anything on top of this, the tail is the element to flag for review. The balloon and the lettering held up without exception in my set.

Finding 4: prompt order predicts which character degrades

Two characters in one frame, described in sequence: the editor first and at length, the photographer second and more briefly. The line belongs to the photographer.

Visual separation held up: pale cropped hair against a black bob, a height difference, a camera on a strap. The bubble sat on his side of the frame and the tail angled toward him, so the association worked, if faintly.

The degradation was asymmetric and it repeated across two runs. Of the second character's five specified details, two failed the same way both times: glasses that were supposed to sit pushed up on his forehead came back over his eyes, and a bandage across his nose never rendered. The first-described character lost nothing.

I cannot see inside the model, so I will state it as a behavior rather than a cause: the subject written later and more briefly is the one that lost details, twice, in the same two places. Write the second subject at the same specificity as the first rather than summarizing it after.

Finding 5: a detailed description left the reference image little to do

Character drift is the standard complaint, so I measured it. Accessories and outfit survived well across the set. The face did not: it rounded out and aged up run to run, worst in an extreme close-up where the crop leaves the model the most to invent.

The expected fix is a reference image, so I generated a new scene twice, once from the description alone and once with my character sheet loaded as a reference. It changed the framing and gave her more hair. The face came out about the same either way. With a description carrying seven specified identity details, the reference had little left to correct.

Hairstyle was the outlier that nothing fixed. It ranged from close to the sheet in one panel to a tight pinned-up version in another, and the reference run produced the most extreme version of all.

What I would keep from this

  • Lettering held for every line I tried, up to eight words. Budget your cleanup time elsewhere.
  • Position the bubble by naming a corner, and let the model handle the rest of the arrangement.
  • Review the tail on every panel. It is the least reliable element on the page.
  • Write every subject in a multi-character prompt at full specificity, the second one included.
  • Describe held objects with the grip stated separately. Every run that asked for a photo held between two fingers returned a raised finger and a floating photo.
  • Compare with single generations. Batches let you pick winners and learn nothing.

A four-panel strip also held together in one generation, with the beats in written order and set dressing holding its position across panels, which is the part that makes a sequence read as one scene.

If you want to run your own version of this, the model is Tsubaki.3 and the useful discipline is changing one argument at a time: try it on PixAI and see which of these behaviors reproduce for you.

Top comments (0)