
watermarks-remover کیا کرتا ہے
watermarks-remover ایک ایجنٹ اسکل اور Python سروس ہے جو متن اور معاون فائل فارمیٹس سے AI provenance نشانات کا معائنہ اور صفایا کرتی ہے۔ یہ رازداری، تحقیق اور اپنی ملکیت یا مجاز طور پر پراسیس کیے جانے والے مواد کی صفائی کے لیے بنائی گئی ہے۔
ایجنٹ اسکل ایک مختصر HTTP کلائنٹ ہے۔ اس میں صفائی کا نفاذ شامل نہیں اور ایجنٹ ہوسٹ پر Python کی ضرورت نہیں ہوتی۔ اس کے بجائے یہ کام الگ سے چلنے والی ایسی سروس کو بھیجتی ہے جو Python کی معیاری لائبریری سے بنائی گئی ہے۔
یہ پروجیکٹ اپنے کام کو تین شعبوں میں تقسیم کرتا ہے:
- متنی تہہ A: غیر مرئی Unicode carriers، غیر معمولی spaces، دو طرفہ کنٹرولز اور tag characters کو متعین طریقے سے ہٹاتی ہے۔
- متنی تہہ B: شماریاتی token-sampling watermarks کو کم کرنے کے لیے وسیع پیمانے پر rewriting استعمال کرتی ہے۔ یہ بہترین کوشش ہے اور انداز یا لہجہ بدل سکتی ہے۔
- فائل کی صفائی: متعدد فائل اقسام سے معاونت یافتہ C2PA، EXIF، XMP، document-property اور container metadata ہٹاتی ہے۔
کوئی بھی ٹول اس بات کی ضمانت نہیں دے سکتا کہ کسی vendor detector کی جانب سے مواد کی شناخت رک جائے گی۔ اصل فائلیں محفوظ رکھیں، ہر صاف کیے گئے نتیجے کا جائزہ لیں، اور اس پروجیکٹ کو صرف اپنی ملکیت یا اجازت کے تحت پراسیس کیے جانے والے مواد پر استعمال کریں۔
اہم خصوصیات اور معاونت یافتہ فارمیٹس
بنیادی اسکرپٹس کے لیے Python 3.10 یا اس کے بعد کا ورژن درکار ہے اور یہ صرف معیاری لائبریری استعمال کرتی ہیں۔ دستیاب ہونے پر اختیاری ٹولز جیسے c2patool، exiftool اور qpdf استعمال کیے جاتے ہیں۔
معاونت یافتہ صفائی کے اہداف
- تصاویر: PNG، JPEG، WebP، AVIF، HEIC، BMP، GIF، TIFF اور SVG۔
- دستاویزات: PDF، DOCX، XLSX، PPTX، EPUB اور ODT۔
- متن اور ویب فائلیں: HTML اور Markdown، جن میں معاونت یافتہ metadata، JSON-LD، AI frontmatter keys اور Layer A متنی نشانات شامل ہیں۔
- میڈیا containers: MP4، MOV، M4A، M4V، WAV، MP3 اور FLAC۔
غیر شناخت شدہ فارمیٹس خودکار طور پر صاف نہیں کیے جاتے۔ متن سے متعلق کمانڈز binary فائلوں کو بھی مسترد کرتی ہیں اور آپ کو عمومی فائل ٹولز استعمال کرنے کی ہدایت دیتی ہیں۔
اہم حدود
بنیادی صفائی soft-bound C2PA یا خالص pixel، audio اور video watermarks کا احاطہ نہیں کرتی۔ PDF کی صفائی کے لیے ساختی strip کے مقصد سے qpdf درکار ہے، کیونکہ incremental metadata edit قابل بازیافت bytes چھوڑ سکتی ہے۔ embedded PDF images کے اندر موجود metadata سے نمٹنے کے لیے اختیاری Ghostscript pass استعمال کیا جا سکتا ہے۔
Detection اور cleaning الگ الگ ہیں۔ MarkLLM، keyed-Gumbel، Claude seams اور image SynthID scoring کے لیے اختیاری detectors رضاکارانہ ہیں اور دستیاب نہ ہونے کی صورت میں نرمی سے ناکام ہونے کے لیے بنائے گئے ہیں۔
ایجنٹ اسکل انسٹال کریں
repository کو clone یا download کریں، اس کی directory میں جائیں اور installer چلائیں۔ درج ذیل کمانڈ ذاتی Claude Code configuration کے لیے مکمل service-backed skill انسٹال کرتی ہے:
python3 install_skill.py --skill remove-ai-marks --target claude-codeدستیاب installation targets میں شامل ہیں:
--target claude-codeکو~/.claude/skills/<skill>کے تحت انسٹال کرتا ہے۔--target claude-project --project-dir PATHکوPATH/.claude/skills/<skill>کے تحت انسٹال کرتا ہے۔--target coworkupload کے لیےdist/<skill>.zipتیار کرتا ہے، جو cloud Skills interface کے ذریعے کیا جا سکتا ہے۔--target cursorکو~/.cursor/skills/<skill>کے تحت انسٹال کرتا ہے۔
شامل کردہ skills کی فہرست کے لیے python3 install_skill.py --list استعمال کریں۔ repository مکمل remove-ai-marks skill اور خود مختار، صرف متنی clean-user-facing-text skill فراہم کرتی ہے۔ موجودہ installations کا backup لیا جاتا ہے، الا یہ کہ آپ --force استعمال کریں۔ checkout سے live editing کے لیے --link شامل کریں۔
Claude Code plugin انسٹال کریں
Claude Code صارفین marketplace plugin براہ راست انسٹال کر سکتے ہیں:
/plugin marketplace add guillaumemeyer/watermarks-remover
/plugin install watermarks-remover@watermarks-removerاس کے بعد skills /watermarks-remover:remove-ai-marks اور /watermarks-remover:clean-user-facing-text کے طور پر load ہوں گی۔ plugin کو اس کمانڈ سے update کریں:
/plugin marketplace update watermarks-removerGrok کے لیے skill link کریں
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marksسروس شروع کریں
repository سے مقامی HTTP service چلائیں:
make serveمتبادل طور پر server script کو واضح طور پر شروع کریں:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765پہلا address http://127.0.0.1:8765 ہے۔ اگر سروس کسی اور جگہ چل رہی ہو تو skill کے لیے WATERMARKS_SERVICE_URL مقرر کریں۔ server پہلے سے loopback سے bind ہوتا ہے، جس سے یہ براہ راست دوسری مشینوں کے سامنے ظاہر نہیں ہوتا۔
جانچیں کہ سروس جواب دے رہی ہے:
curl -s http://127.0.0.1:8765/healthhealth endpoint ایک ایسا object واپس کرتا ہے جس میں ok اور service version شامل ہوتے ہیں۔
کمانڈ لائن سے فائلوں کا معائنہ اور صفائی کریں
محفوظ ترین workflow یہ ہے کہ پہلے فائل کا معائنہ کریں، صاف شدہ output کو نئی path پر لکھیں اور نتیجے کا اصل فائل سے موازنہ کریں۔
SCRIPTS=service/scripts
python3 "$SCRIPTS/inspect_file.py" draft.md
python3 "$SCRIPTS/clean_file.py" draft.md -o draft.cleaned.md
python3 "$SCRIPTS/clean_file.py" photo.png -o photo.cleaned.png
python3 "$SCRIPTS/clean_file.py" notes.docx -o notes.cleaned.docxمتن اور binary containers دونوں کے لیے inspect_file.py اور clean_file.py استعمال کریں۔ یہ کمانڈز فائل کے مطابق مناسب معاونت یافتہ cleaner منتخب کرتی ہیں۔
Layer A متنی نشانات صاف کریں
سادہ متن کے input کے لیے غیر مرئی اور edit-based Unicode carriers کا معائنہ اس طرح کریں:
python3 "$SCRIPTS/inspect_text.py" draft.mdپھر ایک صاف شدہ نقل بنائیں اور اعداد و شمار پرنٹ کریں:
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --statsLayer A قطعی ہے اور دکھائی دینے والی نثر کے لحاظ سے بے ضرر رہنے کے لیے بنایا گیا ہے۔ ان ٹیکسٹ کمانڈز کو DOCX، PDF، تصاویر یا کسی دوسرے بائنری ان پٹ پر نہ چلائیں؛ اس کے بجائے فائل کمانڈز استعمال کریں۔
Layer B کی نئی تحریر تیار کریں
شماریاتی ٹیکسٹ واٹرمارکس کے لیے صرف حروف حذف کرنا کافی نہیں، بلکہ نئی تحریر درکار ہوتی ہے۔ پہلے سے طے شدہ طور پر، ری رائٹ کمانڈ ایک پرامپٹ پرنٹ کرتی ہے:
python3 "$SCRIPTS/rewrite_text.py" draft.md --backend print-prompt --strength paraphraseLayer B تکراری اور بہترین کوشش پر مبنی ہے۔ اس سے اصل انداز اور لہجے سے مطابقت کم ہو سکتی ہے۔ جب واٹرمارک سے پاکیزگی کے مقابلے میں معیار زیادہ اہم ہو، تو منصوبہ Layer A اور فائل کلیننگ استعمال کرنے، اور اصل نثر برقرار رکھنے کی تجویز دیتا ہے۔
HTTP API استعمال کریں
سروس معائنہ، شناخت، صفائی، بیچ پراسیسنگ، صلاحیتوں کی دریافت، اور OpenAPI specification فراہم کرتی ہے۔
GET /healthسروس کی صحت اور ورژن رپورٹ کرتا ہے۔GET /capabilitiesدستیاب اختیاری ٹولز اور بیک اینڈز رپورٹ کرتا ہے۔GET /openapi.jsonOpenAPI 3.0.3 specification واپس کرتا ہے۔POST /inspectان پٹ کی قسم، مشتبہ حیثیت، اور رپورٹ واپس کرتا ہے۔POST /detectتشکیل دیے گئے ڈیٹیکٹر کے نتائج واپس کرتا ہے۔POST /cleanصاف شدہ base64 ڈیٹا اور رپورٹ واپس کرتا ہے۔POST /inspect/batchاورPOST /clean/batchہر درخواست میں زیادہ سے زیادہ 50 فائلوں پر کارروائی کرتے ہیں۔
درج ذیل مثال ایک Markdown فائل کو base64 میں انکوڈ کرکے کلیننگ اینڈ پوائنٹ پر بھیجتی ہے:
WM="http://127.0.0.1:8765"
curl -s "$WM/health"
curl -s -X POST "$WM/clean" -H 'Content-Type: application/json' \
-d "{\"file\": \"$(base64 < notes.md | tr -d '\n')\", \"name\": \"notes.md\"}"Bearer authentication لازم کرنے کے لیے WATERMARKS_SERVER_API_KEY سیٹ کریں۔ اگر آپ مقامی ڈویلپمنٹ مشین سے باہر تعیناتی کرتے ہیں، تو authentication اور مناسب نیٹ ورک کنٹرولز برقرار رکھیں۔
Docker کے ساتھ سروس چلائیں
صرف پڑھنے کے قابل فائل سسٹم اور عارضی ڈائریکٹری کے ساتھ بنیادی امیج بنائیں اور چلائیں:
make docker-core-build
docker run --rm -p 127.0.0.1:8765:8765 --read-only --tmpfs /tmp watermarks-removerDocker Compose کئی پروفائلز کو سپورٹ کرتا ہے:
docker compose up -d
docker compose --profile harness up -d
docker compose --profile heavy up -d- پہلے سے طے شدہ پروفائل بنیادی سروس شروع کرتا ہے۔
harnessپروفائل MarkLLM اور MarkDiffusion اجزا شامل کرتا ہے۔heavyپروفائل مقامی طور پر بنائے گئے CtrlRegen اور SynthID اجزا شامل کرتا ہے۔
Core، MarkLLM، اور MarkDiffusion کی امیجز GHCR پر شائع کی جاتی ہیں۔ upstream لائسنسنگ کی وجہ سے CtrlRegen اور SynthID scorer صرف مقامی استعمال تک محدود رہتے ہیں۔ اختیاری تشکیل کے لیے .env.example کو .env میں کاپی کریں؛ بنیادی ٹیکسٹ کلیننگ کے لیے اضافی ترتیبات درکار نہیں۔
ہک کے ذریعے خودکار جانچ فعال کریں
ایجنٹ اسکل ایک ہدایت ہوتی ہے، اس لیے ماڈل فیصلہ کرتا ہے کہ اسے چلانا ہے یا نہیں۔ ہک زیادہ قطعی ہوتا ہے: جب بھی مطابقت رکھنے والی ٹول کال ہو، یہ چلتا ہے۔
Claude Code پلگ اِن Write، Edit، MultiEdit، اور NotebookEdit کے لیے PostToolUse ہک رجسٹر کرتا ہے۔ یہ service/scripts/hook_written_file.py کو دو میں سے ایک موڈ میں چلاتا ہے:
- check: پہلے سے طے شدہ موڈ نشانات کی اطلاع دیتا ہے، مگر فائل میں ترمیم نہیں کرتا۔
- clean: معاون نشانات کو فائل میں ہی سے ہٹا دیتا ہے اور ماڈل کو اطلاع دیتا ہے۔
موڈ پلگ اِن کی Hook mode ترتیب کے ذریعے منتخب کریں یا یہ سیٹ کریں:
WATERMARKS_HOOK_MODE=cleanپلگ اِن کے بغیر، آپ ہک کو دستی طور پر ~/.claude/settings.json میں رجسٹر کر سکتے ہیں۔ ہکس ایجنٹ کی لکھی ہوئی فائلوں اور pre-commit gate کا احاطہ کرتے ہیں، لیکن چیٹ ٹرانسکرپٹس میں براہِ راست ٹیکسٹ صاف کرنا بہترین کوشش تک محدود رہتا ہے اور اسکل پر منحصر ہوتا ہے۔
pre-commit چیک شامل کریں
نشان زدہ فائلوں کو Git commit میں شامل ہونے سے روکنے کے لیے، repository کا check hook .pre-commit-config.yaml میں شامل کریں:
repos:
- repo: https://github.com/guillaumemeyer/watermarks-remover
rev: v0.5.0
hooks:
- id: watermarks-remover-checkwatermarks-remover-check ہک نشانات ملنے پر ناکام ہو جاتا ہے۔ متبادل watermarks-remover-clean ہک فائلوں کو وہیں صاف کرتا ہے اور اسے واضح طور پر opt-in کرنا ضروری ہے۔
اعلیٰ درجے کی تجاویز
اصل فائلیں برقرار رکھیں اور نتائج کا موازنہ کریں
جب بھی ممکن ہو، صاف شدہ ڈیٹا کو الگ آؤٹ پٹ پاتھ پر لکھیں۔ یہ Layer B کی نئی تحریروں اور پیچیدہ دستاویزی کنٹینرز کے لیے خاص طور پر اہم ہے، جہاں پراسیسنگ نثر، شامل شدہ اثاثوں، یا ایپلیکیشن سے متعلق خصوصیات کو متاثر کر سکتی ہے۔
درست PDF ٹولز انسٹال کریں
جب آپ کو PDF کی حقیقی ساختی صفائی درکار ہو تو qpdf استعمال کریں۔ README خبردار کرتا ہے کہ صرف exiftool ایک incremental update انجام دیتا ہے، جس سے پرانے بائٹس قابلِ بازیافت رہ سکتے ہیں۔ جب شامل شدہ تصاویر کے اندر metadata موجود ہونے کا امکان ہو تو اختیاری Ghostscript deep pass استعمال کریں۔
شناخت اور صفائی کو الگ کارروائیاں سمجھیں
کلین آپریشن معاون carriers اور metadata ہٹا دیتا ہے، جبکہ detector اندازہ لگاتا ہے کہ تشکیل دیا گیا واٹرمارک اسکیم موجود ہے یا نہیں۔ مثال کے طور پر، MarkLLM verification صرف اسی configuration کے تحت بامعنی ہے، اور keyed-Gumbel replay کے لیے generation key درکار ہوتی ہے۔ یہ ٹولز ہر vendor کے لیے آفاقی oracles نہیں ہیں۔
Layer B کا انتخاب احتیاط سے کریں
اگر آپ Layer B استعمال کرتے ہیں، تو منصوبہ non-origin model کی تجویز دیتا ہے تاکہ اسی قسم کا نشان دوبارہ لگنے کا امکان کم ہو۔ چونکہ شدید paraphrasing لہجے اور صحت کو نقصان پہنچا سکتی ہے، اس لیے جب تحریر کا معیار برقرار رکھنا زیادہ اہم ہو تو اسے چھوڑ دیں۔
اختیاری بیک اینڈز دریافت کریں
service/scripts/ کے تحت موجود Bootstrap اسکرپٹس تصویری اسکورنگ کے لیے reverse-SynthID، پکسل ڈومین سے ہٹانے کے لیے CtrlRegen، ترتیب دی گئی متنی واٹرمارک تصدیق کے لیے MarkLLM، اور تصویری واٹرمارک تجربات کے لیے MarkDiffusion کو ترتیب دے سکتی ہیں۔ ان بیک اینڈز کی ضروریات اور حدود مختلف ہیں؛ انہیں فعال کرنے سے پہلے ان کے سیٹ اپ اسکرپٹس دیکھیں۔
ذمہ دارانہ استعمال
watermarks-remover کو صرف رازداری، تحقیق، اور اپنے زیرِ ملکیت یا ایسی مواد کی صفائی کے لیے استعمال کریں جسے پراسیس کرنے کی آپ کو اجازت حاصل ہو۔ یہ تعلیمی بدعنوانی یا اس جھوٹے دعوے کے لیے نہیں ہے کہ مصنوعی ذہانت سے تیار کردہ مواد کسی انسان نے لکھا ہے۔ قابلِ اطلاق قوانین اور ادارہ جاتی پالیسیوں کی پابندی کریں۔
یہ پروجیکٹ MIT لائسنس کے تحت دستیاب ہے۔ ریلیزز اور سورس کوڈ کے لیے watermarks-remover GitHub repository ملاحظہ کریں۔
نتیجہ
watermarks-remover میں متعین متنی صفائی، متعدد فائل کنٹینرز سے میٹا ڈیٹا ہٹانا، اختیاری ڈیٹیکشن بیک اینڈز، ایجنٹ انٹیگریشن، ہُکس، اور HTTP API شامل ہیں۔ معائنے سے آغاز کریں، اصل فائل محفوظ رکھیں، مناسب ترین محدود صفائی کی تہہ استعمال کریں، اور نتیجے کا جائزہ لیں؛ کسی بھی ڈیٹیکٹر کے نتیجے کو یقینی نہ سمجھیں۔
