All posts

The Bookshelf That Wasn't There

An AI photo editor's result looked sharper than ours. Then we zoomed in on the book spines. A look at how AI photo editors invent detail, and how to check your own edits.

We were comparing AI photo editors on a living room shot: two full bookshelves, a painting over the fireplace, and a second painting on an easel by the window. AutoEnhance's result looked crisper than ours, especially on the shelves. Our first instinct was that we had a sharpness problem.

So we zoomed in, and put both results next to the original exposure. The spines in AutoEnhance's version were sharp. Many of them also no longer said anything. Titles had become letter-shaped squiggles. One spine had lost its author entirely. And the faces in the painting on the easel had been redrawn.

This isn't a bug in one product. It's a property of an entire class of AI models, and once you know what to look for, you'll start seeing it everywhere.

See for Yourself

Below is the same photo three ways: the original middle exposure (brightened so you can see into it), AutoEnhance's edit, and PhotoKit's edit. All three are aligned to the pixel. Move your pointer over the photo, or drag on a phone, and the three panels zoom into the same spot.

The middle exposure of a three-shot bracket, and the two edits made from that bracket. AutoEnhance result from October 14, 2026. The original is brightened for viewing; nothing else is changed.

Start with the left bookshelf. The original is dim and a little soft, but it's legible: "Joseph Brodsky" on the yellow spine, "The Ghost Road" and "Pat Barker" beside it, "Catch-22" further along. In AutoEnhance's version, the Brodsky spine is crisp and bright, but the name is gone; what's left are a few faint marks that don't spell anything. "The Ghost Road" is now squiggles. "Catch-22" has split into "CAT CH". In PhotoKit's version, all three still read.

The right bookshelf follows the same pattern, with a twist. Large titles survive: "Tolstoy", "Colette", "The Reckoning". Small ones, like author names, become marks that pass for writing from a distance and dissolve up close. Hold that thought; the size of the text turns out to matter a lot.

Now jump to the easel. In the original, the two faces are a few soft, grey brushstrokes. In AutoEnhance's version, the figure on the left has wide, staring eyes and a hard-edged open mouth. The one on the right has a pink face, with red outlines around the lips, nose and eyes. Nobody painted those.

In fairness: this is one photo, edited once, and AutoEnhance's result is good in plenty of ways. The light is pleasant; the room looks inviting. That's precisely the problem. The error is easy to miss because the result looks better at a glance.

Sharper Is Not Truer

We've all been trained to read fine detail as quality. Crisp looks professional. Soft looks like a mistake. So when an editor adds detail, our first impression is that it did a better job.

To get past first impressions, we measured six areas of the photo. We first matched each crop's brightness and contrast to the original, so that only detail is being compared. Then we measured two things:

  • Fine detail: how much contrast there is at the smallest scale, about one to two pixels. This is what reads as "crisp".
  • Match: how well that detail lines up with the detail in the original. A score of 1 means the same pattern; 0 means unrelated.

Sharpening also raises fine detail, so detail on its own proves nothing. The tell is the match. Sharpening amplifies detail that's already in your photo, so the match stays high. Generation draws new detail wherever the model thinks some belongs, so detail goes up and the match goes down.

00.250.50.7511×1.5×2×Fine detail, compared with the original photoHow well the detail matches the originalOriginal photo
AutoEnhancePhotoKit

AutoEnhance produced 1.3 to 2 times the original's fine detail in every area we measured. PhotoKit stayed between 0.7 and 1.5 times. On the match, PhotoKit scored between 0.86 and 0.94 everywhere. AutoEnhance matched about as well as PhotoKit on the framed photo and the lower shelves; worse on the bookshelves and the painting over the fireplace (0.65 to 0.80); and 0.11 on the easel painting, which is effectively unrelated. Those faces are not a sharper version of the brushstrokes. They're a different picture.

How Generative AI Draws a Photo

We don't know how AutoEnhance works internally. But the symptoms match a family of models we know well: generative models, which include the diffusion models behind most AI image tools.

I've been on the other side of this. Back in 2018, when we still called it "deep learning", we trained a class of models called Generative Adversarial Networks (GANs) to edit listing photos. They were very good at making a room look like a room. They were much less interested in whether it was your room.

The best mental model is a sketch artist who has studied millions of photos. Hand them a dim, noisy picture of a living room and ask them to clean it up, and they'll redraw it the way living rooms usually look. The large structures come out right: walls, sofa, window light. That's because the model commits to large shapes first, and fills in fine detail last.

Fine detail is where things go wrong. To keep compute costs manageable, these models don't operate on your photo at full resolution. They first compress it into a compact representation called a latent, about 8 times smaller in each direction in the open models we can inspect. They do all their work there, then decode the result back to full size. Anything too small to survive the compression has to be filled back in from the model's memory of what such things usually look like.

So, can you read a book spine at 8x smaller? Try it yourself:

How much smaller the model sees it8× smaller
full size▲ typical for generative models16×

To be precise, this is a simplification. A latent stores more information per position than a single shrunken pixel does, so real models hold on to somewhat more than the slider shows. But small text and small faces are among the first things to go. And once they're gone, the model has to guess.

This also explains why invented text looks like text but says nothing. The model has learned what lettering looks like: the strokes, the spacing, the way a title sits on a spine. It has not learned what any particular book on your client's shelf says. So it draws convincing marks. The same happens with faces in paintings, family photos on a mantel, the brand on an appliance, and the view through a window.

Not every model in this family is technically a diffusion model; newer architectures work differently. They share the same habit, though: when the detail isn't there, they draw some.

Editing Versus Generating

Two very different operations get sold as "AI editing":

  • Editing adjusts the pixels the camera captured: exposure, color, white balance, straightening, sharpening. Every detail in the result was in your photo.
  • Generating redraws the image. The result can look great, but some of the details are new.

Many products do both, and the boundary is rarely visible from the outside. Some features are generative everywhere, by definition: sky replacement, virtual staging, decluttering, virtual twilight. What surprised us here is that a standard "enhance" edit, the kind you'd assume is just light and color, redrew detail too.

PhotoKit's standard edit is built from the exposures you shot. That's why the spines still read in our version, and also why our result looks softer in places. If the camera didn't capture a detail, we don't draw one. When we do offer generative features, we label them as such.

Why It Matters: Disclosure Rules

Here's where this stops being an academic exercise. Since January 1, 2026, California law (AB 723, now Business and Professions Code § 10140.8) requires a disclosure, and access to the unaltered image, when a listing photo has been digitally altered to "add, remove, or change elements" of the property. It exempts "lighting, sharpening, white balance, color correction, angle, straightening, cropping, exposure, or other common photo editing adjustments that do not change the representation of the real property."

Invented detail sits awkwardly between those two clauses. It's usually sold as enhancement or sharpening, but it changes what's in the photo. Most of the time, the changes are harmless; nobody is buying a house for the books. But the places where generative models most often invent detail (artwork, signage, the view through a window) are exactly the things buyers look at. Views are named in the statute.

MLS rules are moving in the same direction. The California Regional MLS, for example, requires altered images to be labeled, with the original placed immediately before or after the altered one (CRMLS Rule 11.5.2).

Note that the rules concern what ends up in the photo, not whether anyone asked for the change. An unintended change is still a change. This isn't legal advice, and rules vary by state and by MLS, so check with your broker.

How to Check Your Own Edits

No special tools required. Open the edit and your original side by side, zoom both to 100%, and look at:

  • Text: book spines, signs, appliance labels, magazine covers.
  • Faces: in photos, paintings and posters.
  • Small hardware: outlets, switch plates, door handles, vents.
  • Reflections: in mirrors, glass and stainless steel.
  • Window views: trees, buildings and signs outside.

The rule of thumb: if something in the edit is sharper or more detailed than anything in your original exposures, it was drawn, not recovered. Lighting, color and exposure changes are editing. Anything added, removed or redrawn is generating, and may need a disclosure.

Closing Thoughts

Generative AI is not the enemy. It powers virtual staging, sky replacement, and plenty of other tools photographers and agents rely on. The problem is generation that nobody knows is happening, producing results convincing enough that nobody checks.

So run a shoot with lots of small detail through your editor of choice, zoom in next to the original, and read the spines.


PhotoKit is every real estate AI editor in one place. Upload a shoot once, and edit it with AutoEnhance, AutoHDR, Fotello, RealtyEdit, or our own editor, which builds every photo from the exposures you shot. Which means you can run this exact experiment on your own listings: same bracket, every editor, side by side. Try a shoot and zoom in. We'll wait.