Enhance AI detection with video frame analysis and expanded tool recognition#15
Merged
Enhance AI detection with video frame analysis and expanded tool recognition#15
Conversation
…ysis, and software metadata This commit improves AICheck's detection capabilities across three main areas: 1. **Expand AI tool recognition** (src/known_tools.rs): - Add 12 new AI tool patterns (grok, gemini, jimeng, 即梦, luma, hailuo, 海螺, pixverse, genmo, haiper, hume, fish audio) - Fix 'udio.com' → 'udio' for better text matching - Improves detection of AI-generated images, videos, and audio 2. **Video frame watermark analysis** (src/detector/watermark.rs): - Add detect_video() function to extract and analyze keyframes - Uses ffmpeg to extract 3 keyframes at 25%, 50%, 75% positions - Runs DWT-DCT analysis on video frames for watermark detection - Gracefully handles missing ffmpeg dependency 3. **Enhanced MP4 metadata detection** (src/detector/mp4_metadata.rs): - Expand SEI_MARKERS from 1 to 10 entries (sora, runway, pika-labs, luma-ai, hailuo, pixverse, vidu-ai, genmo, haiper) - Add detect_software() function to identify creation tools (Remotion, FFmpeg, Premiere, etc.) - Distinguish between AI signals and legitimate creation software 4. **Improved user experience**: - Add metadata stripping hint when no signals detected (7 languages) - Display creation software info in check output (e.g., "Made with Remotion 4.0.434") - Better information for analyzing videos from social media All changes tested with 59/59 tests passing. Supports 7 languages (en, zh-CN, de, es, hi, ja, ko). Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
…ware detection - Update tool count from 51 to 61 across all 7 README languages - Add new tools to AI tools table: Grok, Gemini, Jimeng, Luma, Hailuo, Pixverse, Genmo, Haiper, Hume, Fish Audio - Document expanded SEI watermark markers (10 video AI tools) in MP4 detection method - Document video frame watermark analysis via ffmpeg in invisible watermarks section - Document creation software detection feature (FFmpeg, Remotion, Premiere, etc.) - Add CHANGELOG entry for all new features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove unnecessary & on format!() in SignalBuilder::param() call. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR enhances AICheck's AI detection capabilities with three major improvements:
Test plan
cargo test— All 59 tests passingcargo build --release— Compilation successful--deepflag — video frame analysis executes properlysoftware_infofieldChanges
src/known_tools.rs
src/detector/mp4_metadata.rs
detect_software()to identify creation tools (Remotion, FFmpeg, Premiere, After Effects, etc.)src/detector/watermark.rs
detect_video()for video keyframe extraction and analysisget_video_duration()helpersrc/detector/mod.rs
software_infofield to FileReportdetect_video()instead ofdetect()mp4_metadata::detect_software()to collect creation metadatasrc/output.rs
INFO [label]: [value]locales/*.yml (all 7 languages)
output_hint_check_original: Reminder to check original files (social media strips metadata)signal_video_frame_watermark: Label for video frame watermark signalsCargo.toml
tempfiledependency for video frame extraction🤖 Generated with Claude Code