--- title: Image Services LaMa emoji: 🧩 colorFrom: blue colorTo: indigo sdk: docker app_port: 7860 pinned: false license: apache-2.0 short_description: LaMa inpainting, API gateways, and CPU OCR. --- # Image Services LaMa Minimal Hugging Face Space for Stage 1/2 validation: ```text image + mask -> LaMa inpaint -> PNG result ``` This implementation mirrors the local `remove-ai-watermarks` LaMa path: - `Carve/LaMa-ONNX` - `onnxruntime` CPU execution - padded mask ROI resized to the model square input - paste back only masked pixels so unmasked areas remain pixel-exact ## Deployment Target This Dockerfile explicitly declares `DEPLOYMENT_TARGET=huggingface`, loads LaMa from `Carve/LaMa-ONNX` on Hugging Face, and loads MI-GAN from the Sanster GitHub Release URL. Deploy it from the canonical repository with: ```powershell .\scripts\deploy-image-services.ps1 -Target huggingface ``` The target is required; do not upload the repository-root ModelScope Dockerfile to this Space. ## Sub2API HTTPS Gateway The Space also exposes `/v1/*` as a streaming reverse proxy to the standalone Sub2API service. This gives Codex Desktop an HTTPS endpoint without changing the existing image routes. ```text https://flakego-image-services-lama.hf.space/v1/models https://flakego-image-services-lama.hf.space/v1/responses https://flakego-image-services-lama.hf.space/login ``` The legacy `/sub2api` entry redirects to `/login`. After authentication, the Sub2API router sends administrators to `/admin/dashboard`. Configure the origin with `SUB2API_ORIGIN_URL` and `SUB2API_ORIGIN_HOST` when the defaults are no longer appropriate. ## XToken Images Proxy The Space also forwards the two image operations used by the static GPT image workspace: ```text POST /xtoken-images/generations POST /xtoken-images/edits ``` Only these two operations are accepted. The client supplies its own XToken API key in the bearer authorization header, and request bodies are limited to 32 MiB. ## OCR Service The same Space also provides CPU OCR. It uses the `rapidocr` deployment profile, so it preserves the existing LaMa, Sub2API, and XToken services while keeping the additional runtime small. The other local OCR engines are not enabled in this Space profile. On process startup, the Space preloads RapidOCR plus both watermark-removal backends: MI-GAN (`fast`) and LaMa ONNX (`quality`). A running process therefore keeps all three models in memory; an HF restart repeats this startup warmup. ```text GET /ocr/health POST /ocr/api/invoke ``` `/ocr/api/invoke` follows the unified OCR contract. Supported operations are `ocr.recognize`, `ocr.compare`, `providers.status`, and `providers.warmup`. For remote requests, provide `image.base64`; `image.path` only refers to files already present inside the container. ```json { "operation": "ocr.recognize", "payload": { "provider": "rapidocr", "image": {"base64": ""} } } ``` Successful responses use `{ "ok": true, "result": ..., "error": null }`. Provider and input errors use the same shape with `ok: false` and a structured `error` object. ## Douyin Parser The Space also resolves public Douyin share links for the Image Services `/douyin-parser/` page: ```text GET /douyin/health POST /douyin/parse ``` The parse request body is `{ "share_text": "..." }`. The response returns the numeric post ID, title, cover, engagement counts, and the public playback URL from the share page's `play_addr`. The resolver accepts only `douyin.com` and `iesdouyin.com` URLs and has no download, transcription, comment, or account collection capability.