
watermarks-remover ni nini?
watermarks-remover ni huduma ya Python na ujuzi wa wakala wa kukagua na kuondoa alama za asili za AI zinazoungwa mkono kutoka kwa maandishi na faili. Imekusudiwa kwa faragha na usafi wa maudhui kwenye nyenzo unazomiliki.
Mradi hutenganisha usafishaji katika tabaka kadhaa. Tabaka A huondoa kwa uhakika Unicode isiyoonekana, nafasi za kipekee, herufi za mwelekeo mbili, herufi za lebo, na mabaki mengine yanayohusiana ya maandishi. Tabaka B hushughulikia alama za maji za sampuli za tokeni za takwimu kupitia uandishi upya wa wakala au kiungo cha hiari cha rewrite_text.py. Visafishaji vya faili hushughulikia metadata na sifa za hati zinazoungwa mkono, ikiwa ni pamoja na C2PA, EXIF, XMP, na metadata ya hati za ofisi.
Tumia mradi tu kwenye maudhui unayomiliki au uliyoruhusiwa kurekebisha. Ugunduzi na usafishaji ni shughuli tofauti, na baadhi ya vigunduzi vya hiari ni zana za utafiti badala ya mifumo rasmi ya uthibitishaji wa wauzaji.
Vipengele muhimu
- Msingi wa maktaba ya kawaida: huduma ya HTTP ya ndani na skripti kuu zinahitaji Python 3.10 au mpya zaidi na hazina utegemezi wa lazima wa Python.
- Uelekezaji mpana wa faili: miundo inayoungwa mkono inajumuisha maandishi, HTML, Markdown, PNG, JPEG, WebP, AVIF, HEIC, BMP, GIF, TIFF, SVG, PDF, DOCX, XLSX, PPTX, EPUB, ODT, MP4, MOV, M4A, M4V, WAV, na MP3.
- Amri zilizounganishwa:
inspect_file.pynaclean_file.pyhugundua miundo inayoungwa mkono na kuchagua bomba linalofaa. - Muunganisho wa HTTP: vituo vya kukagua, kugundua, kusafisha, na kundi vinapatikana bila kujumuisha utekelezaji wa Python.
- Ushughulikiaji salama zaidi wa miundo: zana za maandishi hukataa faili zinazoonekana kuwa binary, huku miundo isiyotambulika ikiainishwa kama
unknownna haisafishwi kiotomatiki. - Ugunduzi wa hiari: vigunduzi vya maandishi vilivyosanidiwa na alama za SynthID za picha vinaweza kuendeshwa kwa kujitegemea au kabla na baada ya usafishaji.
- Nyuma za hali ya juu za hiari: mradi unasaidia kifaa cha uthibitishaji cha MarkLLM, alama za reverse-SynthID, na usindikaji wa picha wa CtrlRegen katika kikoa cha pikseli kupitia usakinishaji tofauti.
Sakinisha na anzisha huduma
1. Nakili hazina
git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover
2. Anzisha seva ya HTTP ya maktaba ya kawaida
Usanidi wa haraka zaidi hutumia huduma ya Python ya ndani. Inasikiliza kwenye loopback kwa chaguo-msingi:
make serve
Unaweza pia kuianzisha moja kwa moja:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765
Thibitisha kuwa huduma inapatikana:
curl -s http://127.0.0.1:8765/health
Jibu lina ok: true na toleo la huduma. Tumia GET /capabilities kuona zana na nyuma za hiari zinazopatikana, au GET /openapi.json kwa maelezo yaliyotengenezwa ya OpenAPI 3.0.3.
3. Sakinisha ujuzi wa hiari wa wakala
Ujuzi wa wakala hauna utekelezaji wa huduma. Ni mteja mwembamba unaoitisha seva ya HTTP, kwa hivyo anzisha huduma kabla ya kutumia ujuzi.
mkdir -p .grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" .grok/skills/remove-ai-marks
Kwa usakinishaji wa Grok wa kimataifa wa mtumiaji, unda kiungo chini ya saraka yako ya nyumbani:
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marks
Iite kwa /remove-ai-marks, au muombe wakala aondoe alama za maji za AI zinazoungwa mkono au metadata ya asili. Ikiwa huduma haiko kwenye http://127.0.0.1:8765, weka WATERMARKS_SERVICE_URL.
4. Sakinisha ujuzi wa hiari wa Cursor wa maandishi pekee
Hazina pia inajumuisha ujuzi wa Cursor uliojitosheleza kwa hati zilizoidhinishwa, nyaraka, na nakala za wavuti. Haitoi metadata ya faili, picha, C2PA, huduma ya HTTP, na zana za modeli za nje.
python3 install_skill.py
Kwenye Windows, tumia py install_skill.py. Usakinishaji uliopo huhifadhiwa isipokuwa --force itolewe.
Kagua na safisha faili kutoka kwa mstari wa amri
Tumia zana za faili zilizounganishwa
Weka kigezo kifupi kwa saraka ya skripti, kisha kagua au safisha faili zinazoungwa mkono:
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 huripoti aina iliyogunduliwa na maudhui yenye shaka bila kurekebisha ingizo. clean_file.py huelekeza faili kwa kisafishaji kinachofaa na kuandika matokeo kwenye njia iliyotolewa na -o.
Safisha mabaki ya maandishi ya Tabaka A
Kwa faili za maandishi zinazojulikana, tumia amri maalum za maandishi:
python3 "$SCRIPTS/inspect_text.py" draft.md
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --stats
Chaguo la --stats huripoti kile usafishaji wa maandishi wa uhakika ulibadilisha.
Epuka kupitisha faili za binary kwa zana za maandishi
Skripti za maandishi hukataa faili zinazoonekana kuwa vyombo vya ZIP, PDF, picha, au data nyingine ya binary. Hii inazuia baiti zilizobanwa kusimbuliwa na kuandikwa tena kama maandishi yaliyoharibika.
python3 "$SCRIPTS/inspect_text.py" report.docx
Tumia inspect_file.py au clean_file.py kwa faili kama hizo. Ingawa --force-text inabatilisha ulinzi, inapaswa kutumika tu unapotaka kwa makusudi kuchanganua baiti ghafi.
Vile vile, kisafishaji cha pamoja hukataa faili zilizotambuliwa kama unknown. Toa kiendelezi cha jina la faili kinachotambulika inapofaa, au chagua wazi kushughulikia kama maandishi kwa --as text au --force-text.
Tumia kiunganishi cha kuandika upya cha Layer B
Alama za maji za maandishi za kitakwimu zinahitaji kuandikwa upya badala ya kusafisha Unicode. Kwa chaguo-msingi, skripti ya kuandika upya huchapisha ombi na haitoi wito kwa modeli:
python3 "$SCRIPTS/rewrite_text.py" draft.md \
--backend print-prompt \
--strength paraphrase
Backend ya hiari ya Ollama ya ndani inaweza kutoa matokeo yaliyoandikwa upya:
WATERMARKS_REWRITE_BACKEND=ollama \
WATERMARKS_REWRITE_MODEL=llama3.2 \
python3 "$SCRIPTS/rewrite_text.py" draft.md -o draft.rewritten.md
Vituo vya mwisho vya loopback vinaruhusiwa kwa chaguo-msingi. Vituo vya mwisho vya modeli za mbali vinahitaji WATERMARKS_REWRITE_ALLOW_REMOTE=1 au --allow-remote. Vitambulisho vya API lazima vitolewe kupitia WATERMARKS_REWRITE_API_KEY, kamwe kama hoja za mstari wa amri.
Ita API ya HTTP
Safisha faili moja
API inakubali baiti za faili zilizosimbwa kama Base64 na hutumia jina la faili lililotolewa kusaidia uelekezaji wa umbizo:
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\"}"
Jibu lililofanikiwa linajumuisha kind iliyotambuliwa, faili ya cleaned iliyosimbwa kwa Base64, na report ya usafishaji.
Kagua au tambua bila kusafisha
Tumia POST /inspect kwa ukaguzi wa kimuundo na POST /detect kwa vigunduzi vya alama za maji vilivyosanidiwa. Ugunduzi ni wa hiari na tofauti na usafishaji; huduma haitoi wito kwa API za vigunduzi vya muuzaji au za nje isipokuwa ikiombwa na kusanidiwa.
curl -s -X POST "$WM/inspect" \
-H 'Content-Type: application/json' \
-d "{\"file\": \"$(base64 < notes.md | tr -d '\n')\", \"name\": \"notes.md\", \"detect\": true}"
Kwa vipimo vya kabla-na-baada, pitisha detect_before na detect_after katika chaguo za usafishaji:
{"file":"BASE64_DATA","name":"notes.md","options":{"detect_before":true,"detect_after":true}}
Kushindwa kwa vigunduzi ni fail-soft. Ikiwa kigunduzi hakipatikani, muda wake unaisha, au kinarudisha hitilafu, ripoti inarekodi available: false na usafishaji unaendelea.
Chakata kundi
POST /inspect/batch na POST /clean/batch huchakata maingizo mengi kupitia bomba sawa la kila faili. Kikomo cha chaguo-msingi cha ombi ni faili 50 na kinaweza kubadilishwa kwa WATERMARKS_MAX_BATCH_FILES.
{"files":[
{"file":"BASE64_DATA_1","name":"notes.md"},
{"file":"BASE64_DATA_2","name":"photo.png","options":{}}
]}
Ingizo la kundi lililoharibika hupokea ok: false na ujumbe wa hitilafu bila kusitisha maingizo yaliyobaki.
Endesha mradi kwa Docker
Picha ya msingi iliyochapishwa inajumuisha huduma, visafishaji, ExifTool, qpdf, na c2patool. Jenga picha ya msingi ya ndani na uifunue tu kwenye loopback:
make docker-core-build
docker run --rm \
-p 127.0.0.1:8765:8765 \
--read-only \
--tmpfs /tmp \
watermarks-remover
Unaweza pia kuendesha kisafishaji moja kwa moja ndani ya kontena:
docker run --rm -v "$(pwd):/data" watermarks-remover \
/app/scripts/clean_file.py /data/notes.md \
-o /data/notes.cleaned.md
Docker Compose huanzisha huduma ya msingi pekee kwa chaguo-msingi. Wasifu wa hiari huongeza harnesses za utafiti au backends nzito za picha:
docker compose up -d
docker compose --profile harness up -d
docker compose --profile heavy up -d
docker compose --profile harness --profile heavy up -d
Thibitisha stack inayoendesha kwa make compose-check. Hukagua kituo cha mwisho cha afya cha msingi na huhakikisha kuwa huduma za hiari zilizowezeshwa zinaweza kuendesha amri zao za msaada.
Usanidi na usalama
Hakuna vigezo vya mazingira vinavyohitajika kwa usafishaji wa kawaida wa maandishi. Mipangilio ya hiari inaweza kunakiliwa katika faili ya .env ya kiwango cha hazina, ambayo Docker Compose hupakia kiotomatiki:
cp .env.example .env
docker compose up -d
Faili hii imefichwa na git na haipaswi kamwe kuwekwa kwenye commit. Mipangilio muhimu inajumuisha:
WATERMARKS_SERVER_API_KEYinahitaji uthibitishaji wa bearer kwa API ya HTTP.WATERMARKS_SERVICE_URLhuwaambia wateja mahali pa kufikia huduma.WATERMARKS_REWRITE_BACKEND,WATERMARKS_REWRITE_MODEL, na vigezo vinavyohusiana husanidi wito wa moja kwa moja wa modeli za Layer B.WATERMARKS_SYNTHID_SCORER_URLhuunganisha huduma ya msingi na sidecar ya hiari ya kuorodhesha picha za SynthID.HF_TOKENhutoa tokeni ya Hugging Face ya mazingira pekee kwa backends za hiari zinazotumia modeli zilizofungwa.
Seva inajifunga kwa loopback kwa chaguo-msingi na inakusudiwa kwa mtandao unaoaminika. Ukibadilisha --host kuifunua nje ya mashine ya ndani, sanidi WATERMARKS_SERVER_API_KEY na ongeza ulinzi unaofaa wa mtandao.
Vidokezo vya hali ya juu
Sakinisha zana za hiari za metadata kwa uendeshaji wa upande wa mwenyeji
Skripti za msingi za Python hutumia maktaba ya kawaida, lakini zana za nje huboresha mtiririko fulani wa kazi. c2patool hukagua manifesto za C2PA, exiftool huondoa metadata iliyobaki, hasa kutoka kwa PDF, na qpdf inahitajika kwa uondoaji halisi wa kimuundo wa PDF. Zana hizi tayari zipo katika picha ya msingi ya Docker.
Orodhesha ishara za picha za daraja la SynthID
Ujumuishaji wa hiari wa reverse-SynthID unaweza kutoa alama ya uhakika katika kikoa cha pikseli. Ni ugunduzi pekee na hauondoi alama za maji za pikseli. Checkout yake ya juu haijajumuishwa kwa sababu inatumia leseni ya utafiti isiyo ya kibiashara.
SCRIPTS=service/scripts
"$SCRIPTS/setup_synthid.sh"
REVERSE_SYNTHID_DIR=~/reverse-SynthID \
~/reverse-SynthID/.venv/bin/python \
"$SCRIPTS/inspect_image.py" shot.png
Wasifu mzito wa Compose unaweza kuendesha kipima hiki kama sidecar ya HTTP. Sanidi WATERMARKS_SYNTHID_SCORER_URL na WATERMARKS_SYNTHID_SCORER_API_KEY iliyoshirikiwa, kisha omba ugunduzi kabla na baada ya kusafisha.
Tumia CtrlRegen kwa uchakataji wa kikoa cha pikseli
CtrlRegen ni backend ya nje ya hiari kwa alama za kikoa cha pikseli za aina ya SynthID, StegaStamp, Tree-Ring, na StableSignature. Haijajumuishwa wala kuchapishwa kwa sababu hazina faili ya leseni katika hazina yake ya juu. Usanidi wake huunda mazingira yaliyotengwa yenye tegemezi zilizopigwa pini za enzi ya utafiti.
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
Nguvu chaguomsingi ni 0.25 ya tahadhari. Vipimo vilivyorekodiwa huanzia 0.15 kwa uzalishaji upya mdogo hadi 0.7 kwa nguvu ya juu zaidi. Thamani za juu zinaweza kuondoa ishara zaidi lakini pia kuzalisha upya maudhui zaidi ya picha.
CtrlRegen hufanya kazi asilia kwa pikseli 512 kwa 512. Ingizo kubwa hugawanywa kiotomatiki katika vigae, kwa hivyo muda wa uchakataji na matumizi ya kumbukumbu huongezeka kulingana na idadi ya vigae. GPU inapendekezwa sana, pakua takriban GB 10 za modeli zinatarajiwa, na picha kubwa sana zinapaswa kupunguzwa ukubwa kwanza inapowezekana.
Thibitisha majaribio ya maandishi yaliyodhibitiwa kwa MarkLLM
Kifaa cha hiari cha MarkLLM kinaweza kuzalisha na kugundua tena maandishi ya majaribio kwa kutumia usanidi unaolingana wa mpango wa KGW au SynthID. Ni muhimu kwa majaribio yaliyodhibitiwa, lakini si oracle ya muuzaji na haiwezi kuthibitisha kuwa kigunduzi cha muuzaji kitakataa maandishi yaliyoandikwa upya.
SCRIPTS=service/scripts
"$SCRIPTS/setup_markllm.sh"
Kwa matokeo yenye maana, tumia usanidi sawa wa mpango na funguo kwa uzalishaji na ugunduzi.
Hitimisho
watermarks-remover hutoa mtiririko wa kazi wa tahadhari unaozingatia umbizo kwa kusafisha nyuso za asili zinazoungwa mkono kutoka kwa maudhui yaliyoidhinishwa. Anza na amri za ukaguzi zilizounganishwa, tumia usafishaji wa Layer A wa uhakika inapowezekana, ongeza uandishi upya wa Layer B tu inapohitajika, na wezesha vigunduzi vya nje au backends za pikseli kwa kuchagua. Kwa ujumuishaji wa programu, API ya HTTP ya ndani na maelezo yaliyozalishwa ya OpenAPI hutoa kiolesura chenye kubadilika zaidi.
