Photo Album Splitter API – Printed Photo Extractor avatar

Photo Album Splitter API – Printed Photo Extractor

Pricing

$20.00 / 1,000 extracted photos

Go to Apify Store
Photo Album Splitter API – Printed Photo Extractor

Photo Album Splitter API – Printed Photo Extractor

Detect and crop individual printed photos from album page scans or camera shots. Returns perspective-corrected image files, metadata, and optional ZIP output.

Pricing

$20.00 / 1,000 extracted photos

Rating

0.0

(0)

Developer

Michael Beetz

Michael Beetz

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Extract individual printed photos from album page scans or camera shots. The Actor detects separate print rectangles, corrects perspective, optionally trims light paper borders, and returns each photo as a downloadable image with structured metadata.

What it is useful for

Use this Actor when one scan or phone photo contains several printed photos and you want separate files automatically.

Common workflows:

  • Splitting old family album pages into individual image files
  • Preparing genealogy or archive scans for cataloging
  • Cropping several printed photos from one flatbed scanner image
  • Processing camera shots of prints laid out on a table
  • Preparing images before restoration, colorization, or upscaling tools
  • Building automated digitization pipelines through the Apify API

How it works

  1. The Actor downloads each URL from imageUrls.
  2. It detects likely printed-photo rectangles using edge and surface detection.
  3. It removes obvious page/background false positives.
  4. It perspective-crops every detected photo.
  5. If enabled, it trims neutral/off-white print borders.
  6. It saves every crop as a separate image file.
  7. It writes metadata rows to the dataset and optionally creates a ZIP archive.

Input example

Try the public demo image below or replace the URL with your own album page scan or camera shot:

Demo input image:

https://api.apify.com/v2/key-value-stores/2qL0GBPUDleSGv96Q/records/synthetic-vintage-album-page.png
{
"imageUrls": ["https://api.apify.com/v2/key-value-stores/2qL0GBPUDleSGv96Q/records/synthetic-vintage-album-page.png"],
"sensitivity": 0.55,
"minAreaFraction": 0.008,
"maxImages": 20,
"maxCropsPerImage": 30,
"trimBorders": true,
"createZip": true,
"outputFormat": "jpg"
}

Input fields

FieldDefaultDescription
imageUrlsrequiredPublic URLs of album page scans or camera shots containing one or more printed photos.
sensitivity0.55Higher values detect weaker borders; lower values are stricter. Try 0.45–0.7 for most images.
minAreaFraction0.008Smallest accepted photo area as a fraction of the source image. Increase this to ignore tiny false positives.
maxImages20Maximum number of source images to process in one run.
maxCropsPerImage30Maximum number of crops exported from each source image.
trimBorderstrueTry to remove off-white print borders after perspective cropping.
createZiptrueCreate extracted_photos.zip with all exported crops.
outputFormatjpgOutput crop format: jpg or png.

Output

Each extracted photo is saved in the default key-value store. The default dataset receives one metadata item per crop:

{
"ok": true,
"sourceImage": "https://api.apify.com/v2/key-value-stores/2qL0GBPUDleSGv96Q/records/synthetic-vintage-album-page.png",
"sourceImageIndex": 1,
"cropIndex": 1,
"detectedCount": 4,
"exportedCountForImage": 4,
"confidence": 0.91,
"bbox": { "x": 120, "y": 80, "width": 640, "height": 430 },
"width": 620,
"height": 410,
"storageKey": "image_001_crop_001.jpg",
"cropUrl": "https://api.apify.com/v2/key-value-stores/.../records/image_001_crop_001.jpg"
}

When createZip is enabled, the key-value store also contains:

extracted_photos.zip

The dataset includes a final summary row with total input count, total exported crops, and the ZIP URL.

Pricing

This Actor uses Apify pay-per-event pricing. The chargeable event is:

photo_extracted

You are charged once per successfully exported photo crop, according to the price shown in the Apify pricing panel. Images with no detected photos do not create photo_extracted events.

Tips for best results

  • Use clear, reasonably high-resolution scans or camera shots.
  • Keep visible spacing between printed photos where possible.
  • Avoid heavy overlap, glare, reflections, and very dark shadows.
  • Place prints on a background that contrasts with the photo edges.
  • If too many false positives appear, lower sensitivity or raise minAreaFraction.
  • If faint photos are missed, raise sensitivity slightly.

Limitations

  • The Actor extracts and crops photos; it does not restore, colorize, upscale, or deblur them.
  • Heavy glare, overlapping photos, or photos with no contrast against the page can reduce detection quality.
  • Very large images may take longer and can be limited by the configured input limits.

API usage

You can run the Actor from Apify Console, the Apify API, schedules, webhooks, or integrations. Outputs are available as both structured JSON metadata and downloadable image files.