mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-05-27 14:42:25 +02:00
f07ce10c72
Detect SynthID-bearing images via their C2PA companion: a manifest signed by a
SynthID-using vendor (Google/OpenAI) on AI-generated content implies an
invisible SynthID pixel watermark. Verified end-to-end against the vendor
oracles (openai.com/verify, Gemini "Verify with SynthID").
- metadata: synthid_source() + synthid_watermark verdict in get_ai_metadata,
surfaced as a `metadata --check` callout. Format-agnostic (PNG caBX parser +
JPEG/WebP/AVIF/HEIF/JXL binary scan).
- constants: SYNTHID_C2PA_ISSUERS {Google, OpenAI}; +opened/placed actions.
- c2pa: single CBOR-aware parser (_cbor_text_after) replaces glitchy regex
(fixes fGPT-4o claim_generator); removed duplicate _scan_png_c2pa_chunk from
metadata; shared synthid_verdict / synthid_vendors_in helpers.
- corpus: scripts/synthid_corpus.py ingest tool + data/synthid_corpus/
(manifest tracked, images gitignored) for a labeled reference set.
- tests: +38 across C2PA parser internals, extract/inject round-trip, ISOBMFF
container stripping, all IPTC AI markers, and invisible watermark strength
tiers (SynthID/StableSignature/TreeRing/StegaStamp/RingID/RivaGAN/...).
Pixel-level SynthID detection remains out of reach locally (Google's decoder is
proprietary); a from-scratch spectral pilot confirmed it does not separate real
content. See CLAUDE.md for the full evaluation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
37 lines
441 B
Plaintext
37 lines
441 B
Plaintext
# Dependencies
|
|
.venv/
|
|
__pycache__/
|
|
*.egg-info/
|
|
dist/
|
|
build/
|
|
|
|
# Environment secrets
|
|
.env
|
|
|
|
# OS files
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# IDE
|
|
.idea/
|
|
.vscode/
|
|
*.swp
|
|
*.swo
|
|
|
|
# Test results
|
|
data/results/
|
|
|
|
# SynthID corpus images (manifest.csv + README.md stay tracked)
|
|
data/synthid_corpus/images/
|
|
|
|
# Reference materials
|
|
_refs/
|
|
|
|
# Downloaded model weights
|
|
yolov8n.pt
|
|
.coverage
|
|
|
|
# Claude Code local settings
|
|
.claude/settings.local.json
|
|
data/synthid_corpus/refs/
|