Skip to content

Photo quality check

The Photo Quality Check feature helps clients reduce low-quality photo submissions before photos are uploaded. It validates captured or uploaded photos and gives users clearer feedback when photo quality does not meet the configured requirements.

When to use quality checks

Use quality checks when photo quality has a direct impact on analysis accuracy, operational cost, or user trust.

Common examples include:

  • Clinical studies where every submitted image must meet a consistent capture standard.
  • Before-and-after treatment tracking where images need to be comparable over time.
  • Remote consultations where a poor image can delay review or require manual follow-up.
  • Any flow where failed analysis, manual review, or retakes are more costly than asking the user to fix the photo during submission.

What LIQA checks

Depending on the enabled mode, preset, and source, LIQA can evaluate the following signals:

  • Face presence
  • Enough visible skin
  • Face pose / angle
  • Resolution
  • Blur
  • Exposure
  • Uneven or colored lighting
  • Strong shadows
  • Generic skin occlusion
  • Glasses
  • Forehead coverage by bangs, hat brim, or similar occlusions

Preset and source matrix

LIQA currently supports quality-check-related behavior in the following way:

PresetLive capture guidancePost-capture preview validationNotes
faceYesYesSupports quality-check and occlusion-detection.
face-180YesYes, for front, left, and right capturesSupports quality-check and occlusion-detection across the 3-step capture flow.
hairSeparate guided flowNot part of the quality-check feature pageSee the Presets guide for the hair-specific experience.

For supported presets, LIQA still keeps a minimal no-face guard on uploaded images even when quality-check="off".

Configuration overview

The public configuration surface consists of:

  • quality-check
  • quality-check-sources
  • ignored-quality-checks
  • occlusion-detection

For the full public API surface, see the API Reference.

quality-check

Controls whether LIQA evaluates photo quality and whether failed validation blocks submission.

For supported presets, this already includes the built-in glasses and forehead checks in both live guidance and post-capture preview validation.

OptionWhen to use it
offUse when the flow is low risk, when quality validation is handled outside LIQA, or when you only need the built-in minimal no-face guard for uploads.
normalUse when users should see quality warnings, but the product should still allow submission after review.
strictUse when image quality must pass before submission, such as clinical studies, regulated workflows, or analysis flows where poor input blocks good output.

Default: off

quality-check-sources

Limits where the quality-check policy is enforced.

SourceDescription
front_cameraApplies quality-check to front-camera captures.
back_cameraApplies quality-check to back-camera captures.
uploadApplies quality-check to uploaded images.
companionApplies quality-check to images captured through the companion flow.

Default: ["front_camera", "back_camera", "upload", "companion"]

occlusion-detection

Controls the standalone occlusion-focused checks used for glasses and forehead visibility.

Use this flag when you do not want to enable full quality-check, but still want LIQA to validate glasses and forehead visibility.

If quality-check is already enabled, LIQA already includes glasses and forehead checks in both live and post-capture validation for supported presets. In that case, occlusion-detection is only needed when you want to control occlusion validation separately from the rest of the quality-check flow.

OptionDescription
offDisables occlusion detection.
normalShows occlusion-related issues but does not block submission.
strictBlocks submission when occlusion-related issues are detected.
liveUses the lightweight live occlusion pipeline during camera capture. For non-camera sources, occlusion checks still run after capture.

Default: off

ignored-quality-checks

Excludes selected post-capture quality checks from the decision LIQA makes after capture.

Use this when you still want LIQA to measure a signal, but you do not want that signal to create a preview issue, block submission in strict mode, or appear in the emitted quality_check result.

This option does not change live guidance, live occlusion stages, or auto-capture behavior.

AliasEffect
enough_skinIgnores the enough-skin requirement in post-capture validation.
poseIgnores the post-capture face-pose requirement.
resolutionIgnores the post-capture resolution check.
blurIgnores the post-capture blur check.
occlusionsIgnores the generic occlusion signal in post-capture validation.
glassesIgnores the glasses detection signal in post-capture validation.
foreheadIgnores the forehead / bangs occlusion signal in post-capture validation.
exposureIgnores the aggregate exposure signal in post-capture validation.
uniform_illuminationIgnores uneven / colored lighting in post-capture validation.
shadowsIgnores strong shadows in post-capture validation.

Default: []

Alias mapping

The ignored-quality-checks attribute accepts short aliases, while analytics and internal contracts keep the measured quality fields under their canonical names.

AliasCanonical signal(s)
enough_skinhas_enough_skin
posehas_valid_pose
resolutionhas_good_resolution
blurhas_no_blur
occlusionshas_no_occlusions
glasseshas_no_eyeglasses
foreheadhas_no_hair_bangs
exposurehas_good_exposure
uniform_illuminationhas_uniform_illumination
shadowshas_no_shadows

Source scoping

quality-check-sources only scopes the behavior of quality-check.

If you explicitly enable occlusion-detection, it is resolved separately from quality-check-sources.

Post-capture only

ignored-quality-checks is applied after capture during preview/postprocess evaluation only.

It does not remove the corresponding live guidance signals while the user is framing the photo.

Current UI examples

The exact preview title and issue list depend on the measured problems and the enabled validation mode.

Strict quality-check preview example

A current strict mode preview example. LIQA shows the detected issues and keeps the submission action blocked until the blocking checks pass.

Normal quality-check preview example

A current normal mode preview example. LIQA still lists the detected issues, but the user can submit the image after reviewing the warning.

Analytics

After post-capture validation, LIQA can emit the quality_check_result analytics event.

The event includes the quality fields LIQA measured. If ignored-quality-checks is configured, the event also includes ignored_quality_checks so you can see which checks were excluded from the decision.

Use the generated API Reference for the complete event payload contract instead of duplicating the full field list in this guide.