
Yini i-watermarks-remover?
watermarks-remover iyisevisi ye-Python nekhono le-agent lokuhlola nokususa izimpawu zemvelaphi ye-AI ezisekelwayo embhalweni nasemafayilini. Iklanyelwe ubumfihlo nokugcina okuqukethwe kuhlanzekile ezintweni okungezakho.
Le phrojekthi ihlukanisa ukuhlanzwa kube izendlalelo eziningana. Isendlalelo A sisusa ngokunqunywa okungaguquki i-Unicode engabonakali, izikhala ezingajwayelekile, izinhlamvu eziqondisa kabili, izinhlamvu zamathegi, nezinye izinto ezihlobene nombhalo. Isendlalelo B sibhekana nezimpawu zamanzi zokukhethwa kwama-token ngokwezibalo ngokusebenzisa ukubhalwa kabusha yi-agent noma i-hook yokuzikhethela ethi rewrite_text.py. Abahlanzi bamafayela baphatha imethadatha nezakhiwo zamadokhumenti ezisekelwayo, okuhlanganisa i-C2PA, i-EXIF, i-XMP, nemethadatha yamadokhumenti asehhovisi.
Sebenzisa le phrojekthi kuphela kokuqukethwe okungokwakho noma ogunyaziwe ukukulungisa. Ukuthola nokuhlanza kuyimisebenzi ehlukene, futhi ezinye izitholi zokuzikhethela zingamathuluzi ocwaningo kunokuba izinhlelo ezigunyaziwe zokuqinisekisa zabahlinzeki.
Izici ezibalulekile
- Umongo osebenzisa i-standard library: isevisi ye-HTTP yasendaweni nemibhalo eyisisekelo kudinga i-Python 3.10 noma entsha futhi ayinazo izinc依ko ze-Python eziyimpoqo.
- Ukuqondisa amafayela okubanzi: amafomethi asekelwayo ahlanganisa umbhalo, i-HTML, i-Markdown, i-PNG, i-JPEG, i-WebP, i-AVIF, i-HEIC, i-BMP, i-GIF, i-TIFF, i-SVG, i-PDF, i-DOCX, i-XLSX, i-PPTX, i-EPUB, i-ODT, i-MP4, i-MOV, i-M4A, i-M4V, i-WAV, ne-MP3.
- Imiyalo ehlanganisiwe:
inspect_file.pyne-clean_file.pyzithola amafomethi asekelwayo bese zikhetha iphayiphi efanele. - Ukuhlanganiswa ne-HTTP: iziphetho zokuhlola, ukuthola, ukuhlanza, nokucubungula amafayela ngenqwaba ziyatholakala ngaphandle kokufaka ukusetshenziswa kwe-Python ngaphakathi kwephrojekthi.
- Ukuphathwa kwamafomethi okuphephile: amathuluzi ombhalo ayenqaba amafayela okungenzeka abe kanambambili, kanti amafomethi angaziwa ahlukaniswa njenge-
unknownfuthi awahlanzwa ngokuzenzakalelayo. - Ukuthola ngokuzikhethela: izitholi zombhalo ezilungiselelwe kanye nokulinganisa izithombe kwe-SynthID kungasebenza ngokuzimela noma ngaphambi nangemva kokuhlanza.
- Amabhakendi athuthukile okuzikhethela: le phrojekthi isekela i-harness yokuqinisekisa ye-MarkLLM, ukulinganisa kwe-reverse-SynthID, nokucutshungulwa kwezithombe kusizinda samaphikseli nge-CtrlRegen ngokufakwa okuhlukene.
Faka bese uqala isevisi
1. Klona inqolobane
git clone https://github.com/guillaumemeyer/watermarks-remover.git
cd watermarks-remover
2. Qala iseva ye-HTTP ye-standard library
Ukusetha okushesha kakhulu kusebenzisa isevisi ye-Python yasendaweni. Ngokuzenzakalelayo ilalela ku-loopback:
make serve
Ungayiqalisa ngokuqondile futhi:
python3 service/scripts/server.py --host 127.0.0.1 --port 8765
Qinisekisa ukuthi isevisi iyatholakala:
curl -s http://127.0.0.1:8765/health
Impendulo iqukethe ok: true nenguqulo yesevisi. Sebenzisa GET /capabilities ukuze ubone ukuthi yimaphi amathuluzi namabhakendi okuzikhethela atholakalayo, noma GET /openapi.json ukuze uthole imininingwane ye-OpenAPI 3.0.3 ekhiqiziwe.
3. Faka ikhono le-agent lokuzikhethela
Ikhono le-agent alinakho ukusetshenziswa kwesevisi. Liyiklayenti elincane elishayela iseva ye-HTTP, ngakho qala isevisi ngaphambi kokusebenzisa leli khono.
mkdir -p .grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" .grok/skills/remove-ai-marks
Ekufakweni kwe-Grok okusetshenziswa ngumsebenzisi wonke, dala isixhumanisi ngaphansi kohla lwemibhalo lwasekhaya:
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/skills/remove-ai-marks" ~/.grok/skills/remove-ai-marks
Yibize ngo-/remove-ai-marks, noma ucele i-agent ukuthi isuse izimpawu zamanzi ze-AI noma imethadatha yemvelaphi esekelwayo. Uma isevisi ingekho ku-http://127.0.0.1:8765, setha i-WATERMARKS_SERVICE_URL.
4. Faka ikhono le-Cursor lombhalo kuphela lokuzikhethela
Inqolobane iphinde ibe nekhono le-Cursor elizimele lemibhalo egunyaziwe, amadokhumenti, nombhalo wewebhu. Aliphathi imethadatha yamafayela, izithombe, i-C2PA, isevisi ye-HTTP, noma amathuluzi amamodeli angaphandle.
python3 install_skill.py
Ku-Windows, sebenzisa py install_skill.py. Okufakiwe okukhona kuyagcinwa ngaphandle uma kunikezwe u---force.
Hlola futhi uhlanze amafayela ngomugqa womyalo
Sebenzisa amathuluzi amafayela ahlanganisiwe
Setha okuguquguqukayo okufushane kohla lwemibhalo lwemibhalo, bese uhlola noma uhlanze amafayela asekelwayo:
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 ibika uhlobo olutholiwe nokuqukethwe okusolisayo ngaphandle kokuguqula okokufaka. clean_file.py idlulisela ifayela kumhlanzi ofanele bese ibhala umphumela endleleni enikezwe ngo--o.
Hlanza izinto zombhalo zeSendlalelo A
Kumafayela ombhalo aziwayo, sebenzisa imiyalo yombhalo ezinikezele:
python3 "$SCRIPTS/inspect_text.py" draft.md
python3 "$SCRIPTS/clean_text.py" draft.md -o draft.cleaned.md --stats
Inketho ethi --stats ibika lokho okushintshwe ukuhlanzwa kombhalo okunqunywa ngokungaguquki.
Gwema ukudlulisela amafayela kanambambili kumathuluzi ombhalo
Imibhalo yombhalo iyawenqaba amafayela abonakala eyiziqukathi ze-ZIP, ama-PDF, izithombe, noma enye idatha kanambambili. Lokhu kuvimbela amabhayithi acindezelwe ukuthi aqondwe futhi abhalwe kabusha njengombhalo owonakele.
python3 "$SCRIPTS/inspect_text.py" report.docx
Sebenzisa inspect_file.py noma clean_file.py kumafayela anjalo. Nakuba u---force-text edlula lesi sivikelo, kufanele usetshenziswe kuphela lapho uhlose ngamabomu ukuskena amabhayithi angahluziwe.
Ngokufanayo, isicoci esihlanganisiwe siyenqaba amafayela ahlukaniswe njenge-unknown. Nikeza isandiso segama lefayela esaziwayo lapho kufanele khona, noma ukhethe ngokusobala ukuphathwa njengombhalo usebenzisa i---as text noma i---force-text.
Sebenzisa i-hook yokubhala kabusha ye-Layer B
Ama-watermark ombhalo asekelwe ezibalweni adinga ukubhalwa kabusha, hhayi ukuhlanzwa kwe-Unicode. Ngokuzenzakalelayo, iskripthi sokubhala kabusha siphrinta i-prompt futhi asibizi imodeli:
python3 "$SCRIPTS/rewrite_text.py" draft.md \
--backend print-prompt \
--strength paraphrase
I-backend yendawo ye-Ollama ongayikhetha ingakhiqiza okukhiphayo okubhalwe kabusha:
WATERMARKS_REWRITE_BACKEND=ollama \
WATERMARKS_REWRITE_MODEL=llama3.2 \
python3 "$SCRIPTS/rewrite_text.py" draft.md -o draft.rewritten.md
Ama-endpoint e-loopback avunyelwe ngokuzenzakalelayo. Ama-endpoint amamodeli akude adinga i-WATERMARKS_REWRITE_ALLOW_REMOTE=1 noma i---allow-remote. Imininingwane yokuqinisekisa ye-API kufanele inikezwe nge-WATERMARKS_REWRITE_API_KEY, hhayi njengama-agumenti omugqa womyalo.
Shayela i-HTTP API
Hlanza ifayela elilodwa
I-API yamukela amabhayithi efayela afakwe ikhodi ye-Base64 futhi isebenzisa igama lefayela elinikeziwe ukusiza ukuqondisa ifomethi:
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\"}"
Impendulo ephumelelayo ihlanganisa i-kind etholakele, ifayela le-cleaned elifakwe ikhodi ye-Base64, kanye ne-report yokuhlanza.
Hlola noma thola ngaphandle kokuhlanza
Sebenzisa i-POST /inspect ekuhloleni kwesakhiwo kanye ne-POST /detect kuma-detector ama-watermark amisiwe. Ukutholwa kukhethwa ngokuzithandela futhi kuhlukene nokuhlanza; isevisi ayibizi ama-API e-detector yabathengisi noma angaphandle ngaphandle kokuthi kucelwe futhi kulungiselelwe.
curl -s -X POST "$WM/inspect" \
-H 'Content-Type: application/json' \
-d "{\"file\": \"$(base64 < notes.md | tr -d '\n')\", \"name\": \"notes.md\", \"detect\": true}"
Ukuze uthole izilinganiso zangaphambi nangemuva, dlulisa i-detect_before ne-detect_after ezinkethweni zokuhlanza:
{"file":"BASE64_DATA","name":"notes.md","options":{"detect_before":true,"detect_after":true}}
Ukwehluleka kwama-detector kuphathwa ngaphandle kokumisa inqubo. Uma i-detector ingatholakali, iphelelwa isikhathi, noma ibuyisa iphutha, umbiko ubhala i-available: false futhi ukuhlanza kuyaqhubeka.
Qalisa iqoqo
I-POST /inspect/batch ne-POST /clean/batch zicubungula okufakiwe okuningi ngepayipi elifanayo lefayela ngalinye. Umkhawulo wesicelo ozenzakalelayo amafayela angu-50 futhi ungashintshwa nge-WATERMARKS_MAX_BATCH_FILES.
{"files":[
{"file":"BASE64_DATA_1","name":"notes.md"},
{"file":"BASE64_DATA_2","name":"photo.png","options":{}}
]}
Okufakiwe kweqoqo okungavumelekile kuthola i-ok: false nomlayezo wephutha ngaphandle kokumisa okufakiwe okusele.
Qalisa iphrojekthi nge-Docker
Isithombe esiyinhloko esishicilelwe sihlanganisa isevisi, izicoci, i-ExifTool, i-qpdf, ne-c2patool. Yakha isithombe esiyinhloko sendawo bese usiveza ku-loopback kuphela:
make docker-core-build
docker run --rm \
-p 127.0.0.1:8765:8765 \
--read-only \
--tmpfs /tmp \
watermarks-remover
Ungaphinda usebenzise isicoci ngqo ngaphakathi kwe-container:
docker run --rm -v "$(pwd):/data" watermarks-remover \
/app/scripts/clean_file.py /data/notes.md \
-o /data/notes.cleaned.md
I-Docker Compose iqala isevisi eyinhloko kuphela ngokuzenzakalelayo. Ama-profile ongawakhetha engeza ama-harness ocwaningo noma ama-backend ezithombe asindayo:
docker compose up -d
docker compose --profile harness up -d
docker compose --profile heavy up -d
docker compose --profile harness --profile heavy up -d
Qinisekisa isitaki esisebenzayo nge-make compose-check. Ihlola i-health endpoint eyinhloko futhi iqinisekisa ukuthi amasevisi angeziwe avuliwe angasebenzisa imiyalo yawo yosizo.
Ukucushwa nokuphepha
Awekho ama-environment variable adingekayo ekuhlanzeni umbhalo okuvamile. Izilungiselelo ongazikhetha zingakopishwa kufayela le-.env elisezingeni le-repository, i-Docker Compose elilayisha ngokuzenzakalelayo:
cp .env.example .env
docker compose up -d
Ifayela lifakwe ku-gitignore futhi akufanele neze lifakwe ku-commit. Izilungiselelo ezibalulekile zihlanganisa:
- I-
WATERMARKS_SERVER_API_KEYidinga ukuqinisekiswa kwe-bearer ku-HTTP API. - I-
WATERMARKS_SERVICE_URLitshela amaklayenti ukuthi afinyelele kuphi isevisi. - I-
WATERMARKS_REWRITE_BACKEND,WATERMARKS_REWRITE_MODEL, namanye ama-variable ahlobene alungiselela izingcingo eziqondile zamamodeli e-Layer B. - I-
WATERMARKS_SYNTHID_SCORER_URLixhumanisa isevisi eyinhloko ne-sidecar yokukala izithombe ye-SynthID ongayikhetha. - I-
HF_TOKENinikeza i-token ye-Hugging Face esendaweni kuphela kuma-backend ongawakhetha asebenzisa amamodeli adinga ukufinyelela okukhethekile.
Ngokuzenzakalelayo, iseva ibophezela ku-loopback futhi ihloselwe inethiwekhi ethembekile. Uma ushintsha i---host ukuze uyiveze ngaphandle komshini wendawo, lungiselela i-WATERMARKS_SERVER_API_KEY futhi ungeze izivikelo zenethiwekhi ezifanele.
Amathiphu athuthukile
Faka amathuluzi emethadatha ongawakhetha ukuze usebenze ku-host
Izikripthi eziyinhloko ze-Python zisebenzisa i-standard library, kodwa amathuluzi angaphandle athuthukisa izinqubo ezithile. I-c2patool ihlola ama-manifest e-C2PA, i-exiftool isusa imethadatha esele, ikakhulukazi kuma-PDF, futhi i-qpdf iyadingeka ekususeni isakhiwo sangempela se-PDF. Lawa mathuluzi asevele ekhona esithombeni esiyinhloko se-Docker.
Linganisa amasignali ezithombe zohlobo lwe-SynthID
Ukuhlanganiswa kokuzikhethela kwe-reverse-SynthID kungakhiqiza isikolo sokuzethemba esizindeni samaphikseli. Kusebenza ekutholeni kuphela futhi akususi izimpawu zamanzi zamaphikseli. Ikhodi yayo yokuhlola evela kumthombo ayifakwanga ngoba isebenzisa ilayisensi yocwaningo engekho eyokuhweba.
SCRIPTS=service/scripts
"$SCRIPTS/setup_synthid.sh"
REVERSE_SYNTHID_DIR=~/reverse-SynthID \
~/reverse-SynthID/.venv/bin/python \
"$SCRIPTS/inspect_image.py" shot.png
Iphrofayela esindayo ye-Compose ingasebenzisa lo mhloli njengensizakalo eseceleni ye-HTTP. Lungiselela WATERMARKS_SYNTHID_SCORER_URL kanye WATERMARKS_SYNTHID_SCORER_API_KEY eyabiwe, bese ucela ukutholwa ngaphambi nangemva kokuhlanza.
Sebenzisa i-CtrlRegen ekucubunguleni kwesizinda samaphikseli
I-CtrlRegen iyinjini yangaphandle yokuzikhethela yezimpawu zesizinda samaphikseli zohlobo lwe-SynthID, i-StegaStamp, i-Tree-Ring, ne-StableSignature. Ayifakwanga noma ishicilelwe ngoba inqolobane yayo yomthombo ayinalo ifayela lelayisensi. Ukusethwa kwayo kwakha indawo ehlukanisiwe enokuncika kocwaningo lwesikhathi sayo oluqondile.
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
Amandla azenzakalelayo angaguquki kakhulu angu-0.25. Amasethi alungiselelwe abhaliwe asukela ku-0.15 wokukhiqiza kabusha okuncane kuya ku-0.7 wamandla aphezulu. Amanani aphezulu angasusa ingxenye enkulu yesignali, kodwa aphinde akhiqize kabusha okuqukethwe kwesithombe okwengeziwe.
I-CtrlRegen isebenza ngokwemvelo ngamaphikseli angu-512 ngamaphikseli angu-512. Okokufaka okukhulu kuhlukaniswa ngokuzenzakalelayo kube amathayela, ngakho isikhathi sokucubungula nokusetshenziswa kwememori kuyakhula kuye ngenani lamathayela. Kunconywa kakhulu i-GPU, kulindeleke ukulanda cishe u-10 GB wamamodeli, futhi izithombe ezinkulu kakhulu kufanele zehliswe kuqala lapho kungenzeka.
Qinisekisa ukuhlolwa kombhalo okulawulwayo nge-MarkLLM
Uhlaka lokuhlola lwe-MarkLLM lokuzikhethela lungakhiqiza futhi luphinde luthole umbhalo wokuhlola lisebenzisa ukulungiselelwa okuhambisanayo kwezikimu ze-KGW noma ze-SynthID. Luwusizo ekuhloleni okulawulwayo, kodwa aluyona i-oracle yomthengisi futhi alukwazi ukufakazela ukuthi umtshina womthengisi uzowenqaba umbhalo obhalwe kabusha.
SCRIPTS=service/scripts
"$SCRIPTS/setup_markllm.sh"
Ukuze uthole imiphumela enencazelo, sebenzisa ukulungiselelwa kwesikimu kanye nokhiye abafanayo ekukhiqizeni nasekutholeni.
Isiphetho
i-watermarks-remover inikeza indlela eqaphile, eqaphela ifomethi yokuhlanza izindawo ezisekelwayo zemvelaphi kokuqukethwe okugunyaziwe. Qala ngemiyalo yokuhlola ehlanganisiwe, sebenzisa ukuhlanza okunqumayo kwe-Layer A lapho kungenzeka, engeza ukubhalwa kabusha kwe-Layer B kuphela lapho kudingeka, futhi unike amandla imitshina yangaphandle noma izinjini zamaphikseli ngokukhetha. Ekuhlanganiseni nezinhlelo, i-API yendawo ye-HTTP kanye nokucaciswa kwe-OpenAPI okukhiqiziwe kunikeza isixhumi esibonakalayo esiguquguquka kakhulu.
