
watermarks-remover কী করে
watermarks-remover হলো টেক্সট এবং সমর্থিত ফাইল ফরম্যাট থেকে AI-উৎপত্তির চিহ্ন পরীক্ষা ও পরিষ্কার করার জন্য একটি এজেন্ট স্কিল এবং Python পরিষেবা। এটি আপনার মালিকানাধীন বা প্রক্রিয়াকরণের অনুমতিপ্রাপ্ত উপকরণের গোপনীয়তা, গবেষণা এবং কনটেন্ট পরিচ্ছন্নতার উদ্দেশ্যে তৈরি।
এজেন্ট স্কিলটি একটি পাতলা HTTP ক্লায়েন্ট। এতে পরিষ্কার করার বাস্তবায়ন নেই এবং এজেন্ট হোস্টে Python থাকা আবশ্যক নয়। পরিবর্তে, এটি Python স্ট্যান্ডার্ড লাইব্রেরি দিয়ে তৈরি আলাদাভাবে চালু থাকা একটি পরিষেবায় কাজ পাঠায়।
প্রকল্পটি কাজকে তিনটি ক্ষেত্রে ভাগ করে:
- টেক্সট লেয়ার A: অদৃশ্য Unicode বাহক, বিশেষ ধরনের স্পেস, দ্বিমুখী নিয়ন্ত্রণচিহ্ন এবং ট্যাগ অক্ষর নির্ধারিত পদ্ধতিতে সরিয়ে দেয়।
- টেক্সট লেয়ার B: পরিসংখ্যানভিত্তিক টোকেন-স্যাম্পলিং ওয়াটারমার্ক কমাতে ব্যাপক পুনর্লিখন ব্যবহার করে। এটি সর্বোত্তম প্রচেষ্টা-ভিত্তিক এবং স্টাইল বা লেখার ভঙ্গি বদলে দিতে পারে।
- ফাইল পরিষ্কার: বিভিন্ন ফাইলের ধরন থেকে সমর্থিত C2PA, EXIF, XMP, ডকুমেন্ট-প্রপার্টি এবং কনটেইনার মেটাডেটা সরিয়ে দেয়।
কোনো টুলই নিশ্চয়তা দিতে পারে না যে কোনো বিক্রেতার ডিটেক্টর কনটেন্ট শনাক্ত করা বন্ধ করবে। মূল ফাইল সংরক্ষণ করুন, পরিষ্কার করা প্রতিটি ফলাফল পর্যালোচনা করুন এবং আপনার মালিকানাধীন বা প্রক্রিয়াকরণের অনুমতিপ্রাপ্ত কনটেন্টেই প্রকল্পটি ব্যবহার করুন।
প্রধান বৈশিষ্ট্য ও সমর্থিত ফরম্যাট
মূল স্ক্রিপ্টগুলোর জন্য Python 3.10 বা পরবর্তী সংস্করণ প্রয়োজন এবং এগুলো শুধু স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে। c2patool, exiftool এবং qpdf-এর মতো ঐচ্ছিক টুল পাওয়া গেলে ব্যবহার করা হয়।
সমর্থিত পরিষ্কার করার লক্ষ্য
- ছবি: PNG, JPEG, WebP, AVIF, HEIC, BMP, GIF, TIFF এবং SVG।
- ডকুমেন্ট: PDF, DOCX, XLSX, PPTX, EPUB এবং ODT।
- টেক্সট ও ওয়েব ফাইল: HTML এবং Markdown, যার মধ্যে সমর্থিত মেটাডেটা, JSON-LD, AI ফ্রন্টম্যাটার কী এবং লেয়ার A টেক্সট চিহ্ন অন্তর্ভুক্ত।
- মিডিয়া কনটেইনার: MP4, MOV, M4A, M4V, WAV, MP3 এবং FLAC।
অপরিচিত ফরম্যাট স্বয়ংক্রিয়ভাবে পরিষ্কার করা হয় না। টেক্সট-নির্দিষ্ট কমান্ডগুলো বাইনারি ফাইলও প্রত্যাখ্যান করে এবং সাধারণ ফাইল টুল ব্যবহারের নির্দেশ দেয়।
গুরুত্বপূর্ণ সীমাবদ্ধতা
মূল পরিষ্কার প্রক্রিয়ায় সফট-বাউন্ড C2PA অথবা সম্পূর্ণ পিক্সেল, অডিও ও ভিডিও ওয়াটারমার্ক অন্তর্ভুক্ত নয়। কাঠামোগতভাবে পরিষ্কার করার জন্য PDF-এ qpdf প্রয়োজন, কারণ ইনক্রিমেন্টাল মেটাডেটা সম্পাদনার ফলে পুনরুদ্ধারযোগ্য বাইট থেকে যেতে পারে। এমবেড করা PDF ছবির ভেতরের মেটাডেটা মোকাবিলায় ঐচ্ছিক Ghostscript ধাপ ব্যবহার করা যায়।
শনাক্তকরণ পরিষ্কার করার প্রক্রিয়া থেকে আলাদা। MarkLLM, keyed-Gumbel, Claude seams এবং ছবির SynthID স্কোরিংয়ের ঐচ্ছিক ডিটেক্টরগুলো ব্যবহারকারীর সম্মতিতে চালু হয় এবং অনুপলব্ধ হলে নমনীয়ভাবে ব্যর্থ হওয়ার জন্য তৈরি।
এজেন্ট স্কিল ইনস্টল করুন
রিপোজিটরি ক্লোন বা ডাউনলোড করে তার ডিরেক্টরিতে প্রবেশ করুন এবং ইনস্টলার চালান। নিচের কমান্ডটি ব্যক্তিগত Claude Code কনফিগারেশনের জন্য পরিষেবা-নির্ভর সম্পূর্ণ স্কিল ইনস্টল করে:
python3 install_skill.py --skill remove-ai-marks --target claude-codeউপলব্ধ ইনস্টলেশন লক্ষ্যগুলো হলো:
--target claude-code~/.claude/skills/<skill>-এর অধীনে ইনস্টল করে।--target claude-project --project-dir PATHPATH/.claude/skills/<skill>-এর অধীনে ইনস্টল করে।--target coworkক্লাউড Skills ইন্টারফেসের মাধ্যমে আপলোডের জন্যdist/<skill>.zipতৈরি করে।--target cursor~/.cursor/skills/<skill>-এর অধীনে ইনস্টল করে।
প্রেরিত স্কিলগুলোর তালিকা দেখতে python3 install_skill.py --list ব্যবহার করুন। রিপোজিটরিতে সম্পূর্ণ remove-ai-marks স্কিল এবং স্বয়ংসম্পূর্ণ, শুধু টেক্সটের জন্য তৈরি clean-user-facing-text স্কিল রয়েছে। --force ব্যবহার না করলে বিদ্যমান ইনস্টলেশনগুলোর ব্যাকআপ রাখা হয়। চেকআউট থেকে সরাসরি সম্পাদনার জন্য --link যোগ করুন।
Claude Code প্লাগইন ইনস্টল করুন
Claude Code ব্যবহারকারীরা সরাসরি মার্কেটপ্লেস প্লাগইন ইনস্টল করতে পারেন:
/plugin marketplace add guillaumemeyer/watermarks-remover
/plugin install watermarks-remover@watermarks-removerএরপর স্কিলগুলো /watermarks-remover:remove-ai-marks এবং /watermarks-remover:clean-user-facing-text হিসেবে লোড হবে। প্লাগইন আপডেট করতে ব্যবহার করুন:
/plugin marketplace update watermarks-removerGrok-এর জন্য স্কিল লিংক করুন
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marksপরিষেবা চালু করুন
রিপোজিটরি থেকে স্থানীয় HTTP পরিষেবা চালান:
make serveবিকল্পভাবে, সার্ভার স্ক্রিপ্টটি সরাসরি চালু করুন:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765ডিফল্ট ঠিকানা হলো http://127.0.0.1:8765। পরিষেবাটি অন্য কোথাও চললে স্কিলের জন্য WATERMARKS_SERVICE_URL সেট করুন। ডিফল্টভাবে সার্ভারটি লুপব্যাকে বাইন্ড হয়, ফলে এটি সরাসরি অন্য মেশিনের কাছে উন্মুক্ত থাকে না।
পরিষেবাটি সাড়া দিচ্ছে কি না পরীক্ষা করুন:
curl -s http://127.0.0.1:8765/healthহেলথ এন্ডপয়েন্টটি ok এবং পরিষেবার সংস্করণ-সম্বলিত একটি অবজেক্ট ফেরত দেয়।
কমান্ড লাইন থেকে ফাইল পরীক্ষা ও পরিষ্কার করুন
সবচেয়ে নিরাপদ কর্মপ্রবাহ হলো প্রথমে একটি ফাইল পরীক্ষা করা, পরিষ্কার করা আউটপুট নতুন পথে লেখা এবং মূল ফাইলের সঙ্গে ফলাফল তুলনা করা।
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টেক্সট ও বাইনারি উভয় কনটেইনারের জন্য inspect_file.py এবং clean_file.py ব্যবহার করুন। এই কমান্ডগুলো ফাইল অনুযায়ী উপযুক্ত সমর্থিত ক্লিনার বেছে নেয়।
লেয়ার A টেক্সট চিহ্ন পরিষ্কার করুন
সাধারণ টেক্সট ইনপুটের ক্ষেত্রে অদৃশ্য এবং সম্পাদনা-ভিত্তিক Unicode বাহক পরীক্ষা করতে ব্যবহার করুন:
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 স্পেসিফিকেশন সরবরাহ করে।
GET /healthসেবার স্বাস্থ্য ও সংস্করণ জানায়।GET /capabilitiesউপলভ্য ঐচ্ছিক টুল ও ব্যাকএন্ড জানায়।GET /openapi.jsonOpenAPI 3.0.3 স্পেসিফিকেশন ফেরত দেয়।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-এ প্রকাশিত। ঊর্ধ্বতন প্রকল্পের লাইসেন্সের কারণে 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 গেটের আওতাভুক্ত, তবে চ্যাট ট্রান্সক্রিপ্টে সরাসরি টেক্সট পরিষ্কার করা সর্বোচ্চ প্রচেষ্টাভিত্তিক এবং স্কিলের ওপর নির্ভরশীল।
একটি pre-commit পরীক্ষা যোগ করুন
চিহ্নযুক্ত ফাইল Git commit-এ ঢোকার আগে আটকাতে, রিপোজিটরির 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 strip করার প্রয়োজন হলে qpdf ব্যবহার করুন। README সতর্ক করে যে শুধু exiftool ব্যবহার করলে incremental update হয়, যার ফলে পুরোনো বাইট পুনরুদ্ধারযোগ্য থেকে যেতে পারে। এমবেড করা ছবির ভেতরে মেটাডেটা থাকতে পারে বলে আশঙ্কা থাকলে ঐচ্ছিক Ghostscript deep pass ব্যবহার করুন।
শনাক্তকরণ ও পরিষ্কারকরণকে আলাদা অপারেশন হিসেবে বিবেচনা করুন
Clean operation সমর্থিত carrier ও metadata সরায়, আর detector অনুমান করে কনফিগার করা কোনো watermark scheme উপস্থিত কি না। উদাহরণস্বরূপ, একই কনফিগারেশন ব্যবহার করলেই কেবল MarkLLM verification অর্থবহ, আর keyed-Gumbel replay-এর জন্য generation key প্রয়োজন। এই টুলগুলো সর্বজনীন vendor oracle নয়।
Layer B সতর্কতার সঙ্গে বেছে নিন
Layer B ব্যবহার করলে একই ধরনের চিহ্ন আবার প্রয়োগ করার সম্ভাবনা কমাতে প্রকল্পটি origin নয় এমন একটি model ব্যবহারের পরামর্শ দেয়। অতিরিক্ত paraphrasing ভঙ্গি ও নির্ভুলতা নষ্ট করতে পারে, তাই লেখার গুণমান অক্ষুণ্ণ রাখা বেশি গুরুত্বপূর্ণ হলে এটি এড়িয়ে চলুন।
ঐচ্ছিক ব্যাকএন্ড অন্বেষণ করুন
service/scripts/-এর বুটস্ট্র্যাপ স্ক্রিপ্টগুলো ছবি স্কোরিংয়ের জন্য reverse-SynthID, পিক্সেল-ডোমেইন অপসারণের জন্য CtrlRegen, কনফিগার করা টেক্সট-ওয়াটারমার্ক যাচাইয়ের জন্য MarkLLM এবং ছবি-ওয়াটারমার্ক পরীক্ষার জন্য MarkDiffusion কনফিগার করতে পারে। এসব ব্যাকএন্ডের প্রয়োজনীয়তা ও সীমাবদ্ধতা ভিন্ন; এগুলো সক্রিয় করার আগে সংশ্লিষ্ট সেটআপ স্ক্রিপ্ট দেখুন।
দায়িত্বশীল ব্যবহার
watermarks-remover শুধুমাত্র আপনার মালিকানাধীন বা প্রক্রিয়াকরণের অনুমতি রয়েছে এমন কনটেন্টের গোপনীয়তা, গবেষণা ও পরিচ্ছন্নতার কাজে ব্যবহার করুন। এটি একাডেমিক জালিয়াতি বা AI-উৎপাদিত উপাদান কোনো মানুষ লিখেছেন বলে মিথ্যা দাবি করার জন্য তৈরি নয়। প্রযোজ্য আইন ও প্রাতিষ্ঠানিক নীতিমালা মেনে চলুন।
প্রকল্পটি MIT লাইসেন্সের অধীনে উপলভ্য। রিলিজ ও সোর্স কোডের জন্য watermarks-remover GitHub রিপোজিটরি দেখুন।
উপসংহার
watermarks-remover নির্ধারিত টেক্সট পরিষ্কার, বিভিন্ন ফাইল কনটেইনার থেকে মেটাডেটা অপসারণ, ঐচ্ছিক শনাক্তকরণ ব্যাকএন্ড, এজেন্ট ইন্টিগ্রেশন, হুক এবং একটি HTTP API একত্র করে। পরিদর্শন দিয়ে শুরু করুন, মূল কপিটি সংরক্ষণ করুন, উপযুক্ত সবচেয়ে সীমিত পরিষ্কার স্তর প্রয়োগ করুন এবং ফলাফল পর্যালোচনা করুন; কোনো ডিটেক্টরের ফলাফলকেই নিশ্চিত সত্য হিসেবে বিবেচনা করবেন না।
