Skip to content

How we test

We test whether PhotoRescue makes damaged photos easier to view while keeping their subjects recognizable. A cleaner result is not proof that the original detail was recovered: some fine texture is generated, and small text can still come out wrong.

Learning from phone-camera damage

Our restoration models learn from pairs: a clean photograph and a degraded copy of that photograph. The degradation pipeline models real phone-camera noise, noise reduction, sharpening, resizing and compression. It was calibrated on measurements of real devices, rather than treating every problem as generic blur.

Training documentation records a separate set of held-out photographs for validation. Those photos are kept out of the training pairs, so measuring the result on them checks more than memorization of a training image. We also inspect real hard phone captures, where a perfectly clean matching original often does not exist.

Enhance keeps the image size. Upscale 4× and 8× restore edges at a larger size. A second detail stage can add plausible texture; text protection tries to keep detected letters out of that stage. Detection is imperfect, especially for tiny or dense print.

What we check

For paired validation photos, we compare output with the clean reference using pixel-error measurements and a perceptual image comparison. We inspect the crops as well: a score that rewards a sharp-looking word can miss that the word is wrong.

For deployment checks, we run real images through the GPU engines and compare their decoded outputs with a reference implementation. We check dimensions, blank or corrupt regions, seams, colour changes, text and repeat runs. That comparison tests whether the serving engine behaves like the reference; it does not measure recovery of the original scene.

The examples on these pages come from saved GPU runs. We crop the same rectangle on both sides and encode it as lossless WebP. For upscaling, the before is an ordinary bicubic enlargement at the output size; the after is the matching rectangle from the engine output. The WhatsApp example is an exact saved benchmark crop shown at 2× on both sides. No selective sharpening, retouching or colour correction is applied.

What the published examples establish

The WhatsApp comparison shows a real received photo; we do not know its sending settings or forwarding history. The low-light comparison is a real iPad ISO 800 shot inside a dark shed. The phone-photo guide uses a real Samsung ISO 1000 capture. Those are observations of changed pixels, not clean ground-truth recovery tests.

The print calculator, poster guide and 300 DPI explanation use distinct crops from real 4× and 8× runs. One input is a photograph deliberately downscaled for testing; another is a small web image. We have not tested these outputs as physical prints.

For blurry screenshot text, we have no fitting real production screenshot pair to publish. Rendered text fixtures revealed failure cases, but we do not present a synthetic message as a recovered real one.

Failures we found and limits of the evidence

The initial 4× detail-stage test turned some readable text into sharp, incorrect letters and numbers. Text protection reduced that failure but missed some dense print. Never treat a generated character as confirmation of a name, account number or other fact.

Deployment checks found a precision-sensitive protection-mask difference around bright roof highlights in the iPad fixture. The mountain upscale runs showed localized switches between softer and sharper texture, with differences between repeats. We do not hide those failures behind a successful engine-level score or a favorable crop.

The gate evaluation covered a small set of 35 images, and its face check covered only two portraits. It cannot establish performance on every camera, night portrait, document or large upload. We do not publish a universal accuracy percentage, or claim that one example predicts your result.

These tools cannot establish missing scene detail, recover unreadable text, fix severe motion blur, repair scratches, tears or stains, or colourise old prints. Their outputs are for viewing and printing, not identification or evidence. Keep the original and compare the whole result, especially faces, lettering and bright edges.

A practical check for your own photo

Start with the largest original you can find. Choose the tool for the problem: Enhance for phone noise and compression, Upscale 4× or 8× when you need more pixels. For compressed graphics or text, a fresh capture or the original file beats any repair.

Compare the original and result at the same display size, then inspect them at 100% zoom. Read important text against the source. For a print, calculate the pixel target and order a small proof before an expensive enlargement. If the result changes a fact, use the original or make a fresh capture.