
watermarks-remover nima?
watermarks-remover matn va fayllardagi qo‘llab-quvvatlanadigan AI kelib chiqish belgilarini tekshirish va olib tashlash uchun mo‘ljallangan Python xizmati hamda agent ko‘nikmasidir. U sizga tegishli materiallarning maxfiyligi va kontent tozaligi uchun yaratilgan.
Loyiha tozalash jarayonini bir nechta qatlamga ajratadi. A qatlamida ko‘rinmas Unicode belgilar, noodatiy bo‘shliqlar, ikki yo‘nalishli belgilar, teg belgilari va boshqa shu kabi matn artefaktlari deterministik tarzda olib tashlanadi. B qatlamida statistik token tanlashga asoslangan watermarklar agent orqali qayta yozish yoki ixtiyoriy rewrite_text.py hook’i yordamida qayta ishlanadi. Fayl tozalagichlari C2PA, EXIF, XMP va ofis hujjatlari metama’lumotlari kabi qo‘llab-quvvatlanadigan metama’lumotlar va hujjat xususiyatlarini qayta ishlaydi.
Loyihadan faqat o‘zingizga tegishli yoki o‘zgartirishga vakolatingiz bo‘lgan kontentda foydalaning. Aniqlash va tozalash alohida amallardir; ayrim ixtiyoriy aniqlagichlar nufuzli vendor tekshiruv tizimlari emas, balki tadqiqot vositalaridir.
Asosiy imkoniyatlar
- Standart kutubxonaga asoslangan yadro: mahalliy HTTP xizmati va asosiy skriptlar Python 3.10 yoki undan yangiroq versiyasini talab qiladi hamda majburiy Python bog‘liqliklariga ega emas.
- Keng fayl yo‘naltirish: qo‘llab-quvvatlanadigan formatlarga text, HTML, Markdown, PNG, JPEG, WebP, AVIF, HEIC, BMP, GIF, TIFF, SVG, PDF, DOCX, XLSX, PPTX, EPUB, ODT, MP4, MOV, M4A, M4V, WAV va MP3 kiradi.
- Yagona buyruqlar:
inspect_file.pyvaclean_file.pyqo‘llab-quvvatlanadigan formatlarni aniqlaydi va tegishli pipeline’ni tanlaydi. - HTTP integratsiyasi: Python implementatsiyasini loyihaga qo‘shmasdan tekshirish, aniqlash, tozalash va ommaviy qayta ishlash endpointlari mavjud.
- Xavfsizroq format bilan ishlash: matn vositalari ehtimoliy ikkilik fayllarni rad etadi, tanilmagan formatlar esa
unknownsifatida tasniflanadi va avtomatik tozalanmaydi. - Ixtiyoriy aniqlash: sozlangan matn aniqlagichlari va SynthID tasvir baholashi mustaqil ravishda yoki tozalashdan oldin va keyin ishga tushirilishi mumkin.
- Ixtiyoriy kengaytirilgan backendlar: loyiha alohida o‘rnatishlar orqali MarkLLM tekshiruv harness’i, reverse-SynthID baholashi va CtrlRegen piksel-domenli tasvirni qayta ishlashni qo‘llab-quvvatlaydi.
Xizmatni o‘rnatish va ishga tushirish
1. Repozitoriyni klonlash
git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover
2. Standart kutubxonaga asoslangan HTTP serverni ishga tushirish
Eng tezkor sozlash mahalliy Python xizmatidan foydalanadi. U sukut bo‘yicha loopback manzilida tinglaydi:
make serve
Uni to‘g‘ridan-to‘g‘ri ham ishga tushirishingiz mumkin:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765
Xizmat mavjudligini tekshiring:
curl -s http://127.0.0.1:8765/health
Javobda ok: true va xizmat versiyasi bo‘ladi. Qaysi ixtiyoriy vositalar va backendlar mavjudligini ko‘rish uchun GET /capabilities dan, yaratilgan OpenAPI 3.0.3 spetsifikatsiyasi uchun esa GET /openapi.json dan foydalaning.
3. Ixtiyoriy agent ko‘nikmasini o‘rnatish
Agent ko‘nikmasi xizmat implementatsiyasini o‘z ichiga olmaydi. U HTTP serverga murojaat qiladigan yengil mijozdir, shuning uchun ko‘nikmadan foydalanishdan oldin xizmatni ishga tushiring.
mkdir -p .grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" .grok/skills/remove-ai-marks
Grok’ning foydalanuvchi-global o‘rnatilishi uchun havolani uy katalogingizda yarating:
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marks
/remove-ai-marks buyrug‘i bilan ishga tushiring yoki agentdan qo‘llab-quvvatlanadigan AI watermarklari yoki kelib chiqish metama’lumotlarini olib tashlashni so‘rang. Agar xizmat http://127.0.0.1:8765 manzilida bo‘lmasa, WATERMARKS_SERVICE_URL ni sozlang.
4. Ixtiyoriy Cursor faqat matn bilan ishlovchi ko‘nikmasini o‘rnatish
Repozitoriyda vakolatli qo‘lyozmalar, hujjatlar va veb-matnlar uchun o‘zini o‘zi ta’minlaydigan Cursor ko‘nikmasi ham mavjud. U fayl metama’lumotlari, tasvirlar, C2PA, HTTP xizmati va tashqi model vositalarini qamrab olmaydi.
python3 install_skill.py
Windows’da py install_skill.py dan foydalaning. Mavjud o‘rnatishlar --force berilmaguncha saqlanadi.
Buyruqlar satridan fayllarni tekshirish va tozalash
Yagona fayl vositalaridan foydalanish
Skriptlar katalogi uchun qisqa o‘zgaruvchi belgilang, so‘ng qo‘llab-quvvatlanadigan fayllarni tekshiring yoki tozalang:
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 kiritilgan faylni o‘zgartirmagan holda aniqlangan tur va shubhali kontent haqida hisobot beradi. clean_file.py faylni tegishli tozalagichga yo‘naltiradi va natijani -o bilan berilgan yo‘lga yozadi.
A qatlamidagi matn artefaktlarini tozalash
Ma’lum matn fayllari uchun maxsus matn buyruqlaridan foydalaning:
python3 "$SCRIPTS/inspect_text.py" draft.md
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --stats
--stats parametri deterministik matn tozalash jarayonida nimalar o‘zgartirilganini ko‘rsatadi.
Ikkilik fayllarni matn vositalariga bermang
Matn skriptlari ZIP konteynerlari, PDF fayllar, tasvirlar yoki boshqa ikkilik ma’lumotlarga o‘xshaydigan fayllarni rad etadi. Bu siqilgan baytlarning dekodlanib, buzilgan matn sifatida qayta yozilishining oldini oladi.
python3 "$SCRIPTS/inspect_text.py" report.docx
Bunday fayllar uchun inspect_file.py yoki clean_file.py dan foydalaning. --force-text himoyani chetlab o‘tsa-da, undan faqat xom baytlarni ataylab skanerlashni xohlaganingizda foydalanish kerak.
Xuddi shuningdek, yagona tozalagich unknown sifatida tasniflangan fayllarni rad etadi. Zarur bo‘lganda tanilgan fayl nomi kengaytmasini ko‘rsating yoki --as text yoxud --force-text orqali matn bilan ishlashni aniq yoqing.
Layer B qayta yozish ilgagidan foydalaning
Statistik matn suv belgilari Unicode tozalashni emas, qayta yozishni talab qiladi. Odatiy holatda qayta yozish skripti so‘rovni chiqaradi va modelni chaqirmaydi:
python3 "$SCRIPTS/rewrite_text.py" draft.md \
--backend print-prompt \
--strength paraphrase
Ixtiyoriy mahalliy Ollama backend’i qayta yozilgan chiqishni yaratishi mumkin:
WATERMARKS_REWRITE_BACKEND=ollama \
WATERMARKS_REWRITE_MODEL=llama3.2 \
python3 "$SCRIPTS/rewrite_text.py" draft.md -o draft.rewritten.md
Loopback endpointlariga sukut bo‘yicha ruxsat beriladi. Masofaviy model endpointlari uchun WATERMARKS_REWRITE_ALLOW_REMOTE=1 yoki --allow-remote talab qilinadi. API hisob ma’lumotlari buyruq qatori argumentlari sifatida emas, WATERMARKS_REWRITE_API_KEY orqali berilishi kerak.
HTTP API’ni chaqirish
Bitta faylni tozalash
API Base64 formatida kodlangan fayl baytlarini qabul qiladi va formatni aniqlashga yordam berish uchun berilgan fayl nomidan foydalanadi:
WM="http://127.0.0.1:8765"
curl -s -X POST "$WM/clean" \
-H 'Content-Type: application/json' \
-d "{\"file\": \"$(base64 < notes.md | tr -d '\n')\", \"name\": \"notes.md\"}"
Muvaffaqiyatli javob aniqlangan kind, Base64 formatida kodlangan cleaned fayl va tozalash reportini o‘z ichiga oladi.
Tozalamasdan tekshirish yoki aniqlash
Tuzilmaviy tekshirish uchun POST /inspectdan, sozlangan suv belgisi detektorlari uchun esa POST /detectdan foydalaning. Aniqlash ixtiyoriy va tozalashdan alohida; xizmat so‘ralmasa va sozlanmasa, vendor yoki tashqi detektor API’larini chaqirmaydi.
curl -s -X POST "$WM/inspect" \
-H 'Content-Type: application/json' \
-d "{\"file\": \"$(base64 < notes.md | tr -d '\n')\", \"name\": \"notes.md\", \"detect\": true}"
Oldingi va keyingi o‘lchovlar uchun tozalash opsiyalarida detect_before va detect_afterni yuboring:
{"file":"BASE64_DATA","name":"notes.md","options":{"detect_before":true,"detect_after":true}}
Detektor xatolari yumshoq tarzda qayta ishlanadi. Detektor mavjud bo‘lmasa, vaqti tugasa yoki xato qaytarsa, hisobotda available: false qayd etiladi va tozalash davom etadi.
To‘plamni qayta ishlash
POST /inspect/batch va POST /clean/batch bir nechta yozuvni har bir fayl uchun bir xil pipeline orqali qayta ishlaydi. Standart so‘rov limiti 50 ta fayl bo‘lib, uni WATERMARKS_MAX_BATCH_FILES orqali o‘zgartirish mumkin.
{"files":[
{"file":"BASE64_DATA_1","name":"notes.md"},
{"file":"BASE64_DATA_2","name":"photo.png","options":{}}
]}
Noto‘g‘ri formatdagi to‘plam yozuvi ok: false va xato xabarini oladi, qolgan yozuvlar esa to‘xtatilmaydi.
Loyihani Docker bilan ishga tushirish
Nashr etilgan core image xizmat, tozalagichlar, ExifTool, qpdf va c2patool’ni o‘z ichiga oladi. Mahalliy core image’ni yarating va uni faqat loopback’da oching:
make docker-core-build
docker run --rm \
-p 127.0.0.1:8765:8765 \
--read-only \
--tmpfs /tmp \
watermarks-remover
Tozalagichni bevosita konteyner ichida ham ishga tushirishingiz mumkin:
docker run --rm -v "$(pwd):/data" watermarks-remover \
/app/scripts/clean_file.py /data/notes.md \
-o /data/notes.cleaned.md
Docker Compose sukut bo‘yicha faqat core xizmatini ishga tushiradi. Ixtiyoriy profillar tadqiqot harness’lari yoki og‘ir image backend’larini qo‘shadi:
docker compose up -d
docker compose --profile harness up -d
docker compose --profile heavy up -d
docker compose --profile harness --profile heavy up -d
Ishlayotgan stekni make compose-check bilan tekshiring. U core health endpoint’ini tekshiradi va yoqilgan ixtiyoriy xizmatlar yordam buyruqlarini bajara olishini tasdiqlaydi.
Konfiguratsiya va xavfsizlik
Oddiy matnni tozalash uchun muhit o‘zgaruvchilari talab qilinmaydi. Ixtiyoriy sozlamalarni repository darajasidagi .env fayliga ko‘chirishingiz mumkin; Docker Compose uni avtomatik yuklaydi:
cp .env.example .env
docker compose up -d
Bu fayl gitignore qilingan va hech qachon commit qilinmasligi kerak. Muhim sozlamalar:
WATERMARKS_SERVER_API_KEYHTTP API uchun bearer autentifikatsiyasini talab qiladi.WATERMARKS_SERVICE_URLmijozlarga xizmatga qayerdan ulanishni bildiradi.WATERMARKS_REWRITE_BACKEND,WATERMARKS_REWRITE_MODELva tegishli o‘zgaruvchilar Layer B model chaqiruvlarini to‘g‘ridan-to‘g‘ri sozlaydi.WATERMARKS_SYNTHID_SCORER_URLcore xizmatini ixtiyoriy SynthID image-scoring sidecar’iga ulaydi.HF_TOKENyopiq modellardan foydalanadigan ixtiyoriy backend’larga faqat muhit orqali Hugging Face tokenini taqdim etadi.
Server sukut bo‘yicha loopback’ga bog‘lanadi va ishonchli tarmoq uchun mo‘ljallangan. Uni mahalliy kompyuterdan tashqariga ochish uchun --hostni o‘zgartirsangiz, WATERMARKS_SERVER_API_KEYni sozlang va tegishli tarmoq himoyalarini qo‘shing.
Kengaytirilgan maslahatlar
Hostda ishga tushirish uchun ixtiyoriy metadata vositalarini o‘rnating
Core Python skriptlari standart kutubxonadan foydalanadi, ammo tashqi vositalar ayrim jarayonlarni yaxshilaydi. c2patool C2PA manifestlarini tekshiradi, exiftool qoldiq metadata’ni, ayniqsa PDF fayllardan, olib tashlaydi, qpdf esa PDF tuzilmasini haqiqiy tarzda tozalash uchun talab qilinadi. Bu vositalar core Docker image’ida allaqachon mavjud.
SynthID sinfidagi image signallarini baholash
Ixtiyoriy reverse-SynthID integratsiyasi piksel domenida ishonchlilik bahosini hosil qilishi mumkin. U faqat aniqlash uchun xizmat qiladi va piksel suv belgilarini olib tashlamaydi. Uning upstream checkout’i paketga kiritilmagan, chunki u notijoriy tadqiqot litsenziyasidan foydalanadi.
SCRIPTS=service/scripts
"$SCRIPTS/setup_synthid.sh"
REVERSE_SYNTHID_DIR=~/reverse-SynthID \
~/reverse-SynthID/.venv/bin/python \
"$SCRIPTS/inspect_image.py" shot.png
Og‘ir Compose profili ushbu baholagichni HTTP sidecar sifatida ishga tushirishi mumkin. WATERMARKS_SYNTHID_SCORER_URL va umumiy WATERMARKS_SYNTHID_SCORER_API_KEY ni sozlang, so‘ng tozalashdan oldin va keyin aniqlashni so‘rang.
Piksel domenida ishlov berish uchun CtrlRegen’dan foydalaning
CtrlRegen — SynthID sinfidagi, StegaStamp, Tree-Ring va StableSignature piksel-domen belgilarini qayta ishlash uchun ixtiyoriy tashqi backend. U paketga kiritilmagan va nashr etilmagan, chunki uning upstream repozitoriyasida litsenziya fayli mavjud emas. Uning sozlamasi tadqiqot davridagi, versiyalari qat’iy belgilangan bog‘liqliklarga ega alohida muhit yaratadi.
SCRIPTS=service/scripts
"$SCRIPTS/setup_ctrlregen.sh"
NOAI_WATERMARK_DIR=~/noai-watermark \
~/noai-watermark/.venv/bin/python \
"$SCRIPTS/clean_image.py" shot.png \
-o shot.cleaned.png --remove-pixel ctrlregen
Standart kuch darajasi ehtiyotkorona 0.25. Hujjatlashtirilgan presetlar minimal regeneratsiya uchun 0.15 dan maksimal kuch uchun 0.7 gacha. Yuqoriroq qiymatlar signalning ko‘proq qismini olib tashlashi mumkin, biroq tasvir mazmunining ham kattaroq qismini qayta generatsiya qiladi.
CtrlRegen tabiiy ravishda 512 ga 512 piksel o‘lchamida ishlaydi. Kattaroq kirish tasvirlari avtomatik ravishda bo‘laklarga ajratiladi, shuning uchun ishlov berish vaqti va xotira sarfi bo‘laklar soni bilan ortadi. GPU’dan foydalanish qat’iy tavsiya etiladi, model fayllari uchun taxminan 10 GB yuklab olinadi va juda katta tasvirlarni imkon bo‘lsa avval kichraytirish kerak.
MarkLLM yordamida boshqariladigan matn tajribalarini tekshiring
Ixtiyoriy MarkLLM harness mos KGW yoki SynthID sxemasi konfiguratsiyalaridan foydalanib, test matnini hosil qilishi va qayta aniqlashi mumkin. U boshqariladigan tajribalar uchun foydali, biroq vendor oracli emas va vendor detektori qayta yozilgan matnni rad etishini isbotlay olmaydi.
SCRIPTS=service/scripts
"$SCRIPTS/setup_markllm.sh"
Ma’noli natijalar uchun generatsiya va aniqlashda bir xil sxema konfiguratsiyasi hamda kalitlardan foydalaning.
Xulosa
watermarks-remover ruxsat berilgan kontentdan qo‘llab-quvvatlanadigan provenance sirtlarini tozalash uchun ehtiyotkor va formatni hisobga oluvchi ish jarayonini taqdim etadi. Yagona inspeksiya buyruqlaridan boshlang, imkon qadar deterministik Layer A tozalashdan foydalaning, Layer B qayta yozishni faqat zarur bo‘lganda qo‘shing hamda tashqi detektorlar yoki piksel backendlarini tanlab yoqing. Ilova integratsiyasi uchun mahalliy HTTP API va yaratiladigan OpenAPI spetsifikatsiyasi eng moslashuvchan interfeysni taqdim etadi.
