Yeqa uye kokuyinhloko
Izifundo ze-AI

Susa Izimpawu Zemvelaphi ye-AI Embhalweni Nakumafayela usebenzisa i-watermarks-remover

Funda ukuthi ungayisebenzisa kanjani i-watermarks-remover kokuqukethwe okungokwakho. Lesi sifundo sihlanganisa ukusethwa kwendawo kanye ne-Docker, ukuhlanzwa kombhalo namafayela, izicelo ze-HTTP, ukutholwa nokubhalwa kabusha ongakukhetha, ukucutshungulwa kwamaqoqo, ukuqinisekiswa kobunikazi, namathuluzi ezithombe athuthukile.

Susa Izimpawu Zemvelaphi ye-AI Embhalweni Nakumafayela nge-watermarks-remover

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.py ne-clean_file.py zithola 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-unknown futhi 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_KEY idinga ukuqinisekiswa kwe-bearer ku-HTTP API.
  • I-WATERMARKS_SERVICE_URL itshela 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_URL ixhumanisa isevisi eyinhloko ne-sidecar yokukala izithombe ye-SynthID ongayikhetha.
  • I-HF_TOKEN inikeza 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.