展开本页目录
开始前准备什么
- 解压到独立目录,先读README和运行状态;不覆盖原素材。
- Python脚本基础校验需要Pillow;模型环境按本页官方工具单独准备。
- 使用自有或有权使用素材;权重许可与工具代码许可分别核对。
- 先检查原创输入与上传脚本
- 安装官方服务所需 extra
- 绑定 localhost 并打开 API 文档
- 同时提交 file 和 model 表单字段
- 检查状态、类型和完整图像再保存
- 用坏响应验证下载保护
- 分别保留服务实跑与客户端测试记录
1. 先检查原创输入与上传脚本
使用 input.png 耳机杯子图,不上传客户素材。upload.py 只请求显式传入的 localhost 服务,默认不读密钥,不把返回文本直接写成 PNG。
bash
python3 verify.py2. 安装官方服务所需 extra
使用 Python 3.11–3.13 的隔离环境安装官方 CPU/CLI extra;服务额外依赖以实际版本为准。本文固定 2.0.85,官方入口是 rembg s,而不是 openai serve。
bash
python3 -m venv .venv
.venv/bin/python -m pip install "rembg[cpu,cli]==2.0.85" pillow3. 绑定 localhost 并打开 API 文档
执行下方命令,在浏览器打开 http://127.0.0.1:7041/api。选择 POST /api/remove 的文件上传入口;--no-ui 只关闭 Gradio,OpenAPI 文档仍在。本机演示不应照抄公开监听。
bash
.venv/bin/rembg s --host 127.0.0.1 --port 7041 --no-ui4. 同时提交 file 和 model 表单字段
官方 POST 使用 Form model;本练习显式选 u2netp,避免默认模型触发不同权重与许可。不要把 API Key 或 apizt Base URL 填到这个本地专用接口。
bash
.venv/bin/python upload.py --url http://127.0.0.1:7041/api/remove5. 检查状态、类型和完整图像再保存
upload.py 先检查 HTTP 成功和 image/png,再用 Pillow load 完整解码,确认 RGBA 和画布,最后写临时文件并替换。HTML 错误页、200 JSON 错误和破损 PNG 都不得成为 output.png。
bash
python3 verify.py --results output6. 用坏响应验证下载保护
运行 test_upload.py 的本地假服务:分别发送 200 HTML、200 JSON、破损 PNG 与有效 PNG。它验证客户端保护逻辑,不是官方模型推理,也不代表官方服务一定返回这些错误。
bash
python3 test_upload.py7. 分别保留服务实跑与客户端测试记录
official-http.json 若存在,记录的是实际 rembg 服务上传;fixture-tests.json 是本地客户端负例测试。两者不混写成“生产接口全部通过”。关闭本练习服务时仅终止自己启动的进程。
bash
python3 verify.py --results output怎样确认已经完成
- POST 显式上传 file 与 model=u2netp。
- 错误正文不会被保存为 .png;成功图完整解码且画布匹配。
- 官方服务实跑和客户端假响应测试分别记录。
常见问题
rembg HTTP API 兼容 OpenAI 吗?
不兼容。它使用 /api/remove 文件表单,本地 URL 与 OpenAI Images 参数不是同一协议。
200 响应为什么也要检查正文?
中间代理或自建服务可能给出 HTML/JSON;还需检查 Content-Type、PNG 解码与尺寸后再写最终文件。
本地抠图服务完全离线吗?
首次模型下载会联网。权重已存在、只上传本机文件时推理可本地进行;远程图片 URL 或云端模型是另一条路径。




