Digital Source Type

The IPTC DigitalSourceType field declares how an image came to exist — camera capture, scan, composite, AI-generated, etc. Values come from the IPTC controlled vocabulary. Metawatch reads DST from two places: the IPTC XMP block embedded in the image file, and the c2pa.actions assertions inside any C2PA manifest. Both are reported separately on this page.

Images analysed 6,803
DST in IPTC/XMP 1
DST in C2PA 12
% with DST (IPTC) 0.01%

By bucket (IPTC XMP)

How the population of DST-declaring images sorts into Metawatch's editable bucket scheme (see config/dst_vocab.yaml in the repo). "Other" means the raw URI was a valid IPTC newscode we haven't mapped yet; "Not declared" is excluded from this table (it dominates).

BucketImagesShare of DST-declaring
Other 1 100.00%

By bucket (C2PA actions)

Same bucketing applied to digitalSourceType values found inside C2PA c2pa.actions / c2pa.actions.v2 assertions. Counts every action's DST, so an image with a chain of edits contributes more than one row.

BucketOccurrences
AI-generated 6
Edited with Generative AI 5
Other 1

Raw IPTC newscode values

The exact URIs we saw — useful for spotting buckets we haven't mapped yet.

TermBucketImagesURI
nil Other 1 nil

Raw C2PA values

TermBucketOccurrencesURI
trainedAlgorithmicMedia AI-generated 6 http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia
compositeWithTrainedAlgorithmicMedia Edited with Generative AI 5 http://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia
empty Other 1 http://c2pa.org/digitalsourcetype/empty

The bucket → label mapping is in config/dst_vocab.yaml and is applied at export time, not at crawl time. The raw URIs are stored in images.parquet, so editing the YAML and re-running export_for_site.py rebuckets every historical run without re-crawling.