Files
test-user 87d02126e3 feat(metadata): parse C2PA JUMBF manifest fields, add Images 2.0 sample, bump to 0.3.4
- metadata --check now shows claim_generator, c2pa_spec, digital_source_type,
  c2pa_actions, signer instead of empty table for C2PA-only files
- reuses existing extract_c2pa_chunk() from noai/c2pa.py — no more duplicate
  PNG chunk parsing or full-file reads
- adds data/samples/openai-images-2/amur-leopard.png: real gpt-image-2 output
  with C2PA manifest signed by OpenAI OpCo LLC / Trufo CA (spec 2.2.0)
- removes stale data/samples/nano-banana-1/2.png (no longer referenced)
- updates README: new Images 2.0 row in supported models table
- documents known text-degradation limitation in CLAUDE.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 17:21:51 -07:00
..

OpenAI ChatGPT Images 2.0 sample

Reference image generated by OpenAI's ChatGPT Images 2.0 (gpt-image-2, launched 2026-04-21). Kept in the repo so the C2PA manifest parser and invisible-watermark pipeline can be re-verified against a real production output.

amur-leopard.png

  • Resolution: 1055 x 1491, PNG, 3.0 MB
  • Downloaded: 2026-04-22
  • Content: AI-generated infographic about the Amur leopard (Panthera pardus orientalis), chosen to exercise the model's new accurate-text-rendering feature

Embedded C2PA manifest (caBX chunk, 23607 bytes)

Parsed by remove-ai-watermarks metadata --check:

Field Value
claim_generator GPT-4o
c2pa_spec 2.2.0
digital_source_type http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia
c2pa_actions created, converted
Signer OpenAI OpCo, LLC / OpenAI Media Service API
Claim signing CA Trufo C2PA Claim Signing CA (2025) -> Trufo C2PA Root CA (ECC P384)
Timestamp authority OpenAI TSA Issuing CA -> OpenAI TSA Root CA

The trainedAlgorithmicMedia tag is what triggers "Made with AI" labels on Instagram, Facebook, and X.

Invisible pixel-level watermark

OpenAI's system card for Images 2.0 states the model embeds an "imperceptible, robust, and content-specific" pixel-level watermark alongside C2PA. No public detector exists, so bypass cannot be verified empirically for this sample.

Reproducing the removal

# C2PA strip only
remove-ai-watermarks metadata amur-leopard.png --remove -o amur-leopard.clean.png

# Full pipeline (visible + diffusion regeneration + metadata)
remove-ai-watermarks all amur-leopard.png -o amur-leopard.all.png --device mps

Note: the diffusion step downscales to 768 px, which degrades fine text on text-heavy infographics like this one. Tracked as a known limitation; see project TODO.