)
watermarks-remover HTTP API速查手册接入/inspect、/clean、/detect端点到你的产品附curl与OpenAPI示例【免费下载链接】watermarks-removerA privacy-first app that strips AI watermarks from content you own.项目地址: https://gitcode.com/gh_mirrors/wa/watermarks-removerwatermarks-remover 是一个隐私优先的 AI 水印去除工具能把文本、图片和文件中的 AI 来源标记隐形 Unicode、C2PA/EXIF/XMP 元数据等从你拥有的内容中剥离。它的清洗管线通过一个仅依赖 Python 标准库的 HTTP 服务对外提供——你的产品只需发几个 JSON 请求就能接入完整的检查、检测与清洗能力无需安装任何依赖。本文是一份速查手册3 个核心端点/inspect、/clean、/detect的请求格式、curl 示例、批量接口与 OpenAPI 规范全部一次讲清。一键启动3 种方式把服务跑起来服务入口是 service/scripts/server.py默认监听http://127.0.0.1:8765仅回环地址面向可信网络设计。方式一直接运行Python 3.10零依赖python3 service/scripts/server.py --host 127.0.0.1 --port 8765 # 或者用 Makefile 目标make serve方式二Docker 核心镜像预装 exiftool / qpdf / c2patooldocker run --rm -p 127.0.0.1:8765:8765 --read-only --tmpfs /tmp watermarks-remover方式三docker compose可扩展检测器与重型后端docker compose up -d # 仅核心服务 docker compose --profile harness up -d # MarkLLM / MarkDiffusioncompose 栈定义见 compose.yaml核心镜像构建见 service/Dockerfile。启动后先探活curl -s http://127.0.0.1:8765/health # {ok: true, version: ...}端点速查表9 个路由一览方法路径作用关键返回GET/health探活 版本ok、versionGET/capabilities查询可用的可选工具与后端tools、scorers、pixel_backendsGET/openapi.json动态生成的 OpenAPI 3.0.3 规范完整契约文档POST/inspect只检查不修改文件kind、suspicious、reportPOST/detect运行水印检测器detectionsPOST/clean清洗文件返回清洗后字节cleanedbase64、reportPOST/inspect/batch批量检查默认 ≤50 个文件results[]POST/detect/batch批量检测results[]POST/clean/batch批量清洗results[]所有 POST 端点共用同一请求格式文件以 base64 编码放进file字段name字段提供原始文件名——服务先按扩展名、再按魔数magic bytes自动路由到文本 / 图片 / 容器 / 音视频管线返回的kind取值为text/image/container/av无法识别时为unknown。/inspect 端点只读体检不改动文件适合在入库、上传前做一次AI 来源体检。文本会附带统计风格stylometry评分suspicious字段给出是否可疑的综合判断WMhttp://127.0.0.1:8765 curl -s -X POST $WM/inspect -H Content-Type: application/json \ -d {\file\: \$(base64 shot.png | tr -d \n)\, \name\: \shot.png\}响应示例结构{ ok: true, kind: image, suspicious: true, report: { ...: 各项发现C2PA、AI 元数据、统计评分等 } }⚠️ 注意/inspect支持可选的detect: true标志用于追加已配置的水印检测器结果——它可能调用外部 API 并把文本发送出去因此是显式开启的选项。/clean 端点一键清洗返回清洗后的文件这是最核心的端点传入 base64 文件返回清洗后的 base64 字节 一份操作报告做了哪些动作、统计数量。curl -s -X POST $WM/clean -H Content-Type: application/json \ -d {\file\: \$(base64 notes.md | tr -d \n)\, \name\: \notes.md\} # 响应中 cleaned 字段即清洗后的 base64 内容/clean 的可选参数options完整白名单定义在 service/scripts/server.py#L86-L96——未在白名单中的选项会直接被拒绝400不会静默忽略选项类型用途nfkcboolean启用 NFKC 归一化清洗aggressive_homoglyphsboolean激进清理同形字符keep_non_ai_metadataboolean保留非 AI 元数据图片/音视频strip_all_metadataboolean显式控制是否剥离全部元数据also_layer_a_textboolean容器内文本同时做 Unicode 层Layer A清洗remove_pixelstringctrlregen/diffusion像素级水印移除需外部后端detect_before/detect_afterboolean清洗前后各跑一次检测器量化洗掉了什么deep_imagesstringauto/always/lossless/never处理 PDF 内嵌图片里的元数据一个带选项的实际请求清洗前后对比检测curl -s -X POST $WM/clean -H Content-Type: application/json \ -d {\file\: \$(base64 shot.png | tr -d \n)\, \name\: \shot.png\, \options\: {\detect_before\: true, \detect_after\: true}}/detect 端点只跑检测器输出水印检测报告检测与清洗是独立步骤服务默认绝不调用任何供应商 API。/detect按文件类型分发文本→ 已配置的文本水印检测器 统计风格评分图片→ SynthID 像素评分需配置评分器音视频 / 容器→ 附带检查报告curl -s -X POST $WM/detect -H Content-Type: application/json \ -d {\file\: \$(base64 draft.txt | tr -d \n)\, \name\: \draft.txt\} # 响应: {ok: true, kind: text, detections: [ ... ]} 检测器是失败即软降级fail-soft设计未配置、超时或出错的检测器会返回{available: false, error: ...}不会阻塞清洗流程。先用GET /capabilities查看当前部署里有哪些检测器可用curl -s $WM/capabilities | python3 -m json.tool批量端点一次请求处理最多 50 个文件/inspect/batch、/detect/batch、/clean/batch把单文件管线包在一个files数组里默认上限 50 个可用环境变量WATERMARKS_MAX_BATCH_FILES调整curl -s -X POST $WM/clean/batch -H Content-Type: application/json \ -d {files: [ {file: SGVsbG8, name: a.md}, {file: V29ybGQ, name: b.txt}]}⚠️ 批量请求的关键特性单个文件的失败base64 损坏、未知选项、格式不识别只体现在该条目的ok: falseerror字符串里绝不中断整批处理——这是 server.py 的_batch_items明确保证的行为非常适合对用户上传做并发清洗。OpenAPI 规范/openapi.json 随代码自动生成这是本服务最值得称道的设计GET /openapi.json返回的 OpenAPI 3.0.3 文档是从路由表 运行时配置动态生成的见 server.py#L190-L25 注释与openapi_spec()实现包含版本、当前允许的全部 options、认证要求永远不会与实际端点漂移。# 拉取契约导入 Postman / Swagger Editor 即可生成客户端 curl -s $WM/openapi.json 附带福利当服务端配置了 API key 时规范里会自动加入bearerAuth安全方案CI 用openapi-spec-validator持续校验其合法性。认证、安全与错误码速查Bearer 认证设置环境变量WATERMARKS_SERVER_API_KEY后所有请求都必须携带curl -s -X POST $WM/clean \ -H Authorization: Bearer $WATERMARKS_SERVER_API_KEY \ -H Content-Type: application/json -d ...安全默认值默认仅绑定回环地址--host覆盖并打印警告JSON 请求体有大小上限超限返回 413客户端文件名会被安全化杜绝路径穿越。对外暴露时请经反向代理。错误码速查状态码含义常见原因400请求不合法base64 损坏、缺少file字段、unknown option选项不在白名单、deep_images取值错误401认证失败缺少或错误的Authorization: Bearer key404路径不存在打错端点413请求体过大超过 JSON 信封大小上限500内部错误服务端异常响应体只含internal error细节见服务日志排错时的可靠参考是 HTTP 服务测试套件 tests/test_http_server.py——每个端点的成功与失败路径都有对应用例行为以它为准。快速上手清单make serve或docker run起服务/health探活GET /capabilities确认本机可用的检测器与工具上传前用/inspect体检suspicious: true再走/clean清洗前后想留证据加detect_before: true, detect_after: true批量场景用/clean/batch逐条检查results[].ok需要生成客户端/openapi.json拉走即可⚖️ 免责提示watermarks-remover 面向你拥有或获授权处理的内容用于隐私与卫生目的。统计型文本水印的去除是尽力而为best-effort报告中的已验证移除与尽力而为项请以report字段为准。延伸阅读服务入口源码service/scripts/server.py部署方案CLI API in Dockerdocs/plans/ideas/deployment-docker-cli-api.mdHTTP 服务行为测试tests/test_http_server.py本地自动启动服务Windowsdocs/windows-autostart.md【免费下载链接】watermarks-removerA privacy-first app that strips AI watermarks from content you own.项目地址: https://gitcode.com/gh_mirrors/wa/watermarks-remover创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考