Ruka hadi maudhui makuu
Mafunzo ya AI

Ondoa Alama za Asili ya AI kutoka kwa Maandishi na Faili kwa watermarks-remover

Jifunze jinsi ya kutumia watermarks-remover kwenye maudhui unayomiliki. Mafunzo haya yanashughulikia usanidi wa ndani na Docker, kusafisha maandishi na faili, maombi ya HTTP, ugunduzi na kuandika upya kwa hiari, uchakataji wa kundi, uthibitishaji, na zana za hali ya juu za picha.

Ondoa Alama za Asili ya AI kutoka kwa Maandishi na Faili kwa watermarks-remover

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.py na clean_file.py hugundua 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 unknown na 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_KEY inahitaji uthibitishaji wa bearer kwa API ya HTTP.
  • WATERMARKS_SERVICE_URL huwaambia 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_URL huunganisha huduma ya msingi na sidecar ya hiari ya kuorodhesha picha za SynthID.
  • HF_TOKEN hutoa 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.