--- title: WygLore Leaf Korean NER sdk: docker app_port: 7860 pinned: false --- # WygLore Leaf — Korean NER endpoint `wl-ko-ner-v2` (RP 도메인 적응) ONNX 를 CPU 로 서빙. 한국어 텍스트 -> 엔티티 스팬 (PS / LC / OG / DT / TI / QT). - **용도**: WygLore Leaf 플러그인의 *모바일 저메모리 폴백* — on-device 로 모델(215-430MB)을 못 올리는 기기가 이 엔드포인트에 *NER 추론만* 위임. canon-앵커 / POS 필터 / assemble 은 플러그인 JS 가 그대로 수행. - **모델**: [m6dd8m/wl-ko-ner-v2](https://huggingface.co/m6dd8m/wl-ko-ner-v2) (CC-BY-SA-4.0). 토크나이저는 base `monologg/koelectra-base-v3-discriminator`. - **출력 모양**: on-device `ner.js` 와 동일 — `[{text, type, score, start, end}, ...]`. - **API** (FastAPI, 한 방 JSON): - `POST /extract` — `{"text":"..."}` -> `{"entities":[{text,type,score,start,end}, ...]}` - `POST /extract_batch` — `{"texts":[...]}` -> `{"results":[[...], ...]}` (콜드스타트 배치, max 512) - `GET /health` -> `{ok, model, onnx}` · `GET /docs` -> 인터랙티브 Swagger UI - UI(테스트용)는 `/` 그대로. 플러그인은 `/extract` 를 `host.nativeFetch` 로 호출. ※ fastapi/uvicorn 은 gradio 의존성이라 requirements 불요. ## 한계 / TODO (프로덕션 전) - 무료 CPU Space: 48h *무트래픽* 시 sleep -> 첫 요청 ~30-60s wake (일일 트래픽 있으면 계속 깨어있음). - abuse 보호 없음 (public URL) — rate-limit / 토큰은 FastAPI 이주 시 추가. - 프라이버시 (민감 유저): 앱이 사용자 텍스트를 *로그/저장/학습 안 함* (stateless) · gradio analytics OFF · uvicorn access_log OFF · HTTPS. 단 텍스트가 HF 인프라를 *경유*는 함 -> 서버 경로는 플러그인에서 **opt-in + 고지** (자동 라우팅 X). 완전-로컬 원하면 on-device/lean (로컬 Ollama 유저 등). - 첫 부팅 로그(`[boot] ...`)에서 (a) 어떤 onnx 가 선택됐는지, (b) `id2label` 이 `B-PS..` 인지(=정상) `LABEL_0..` 인지(=라벨맵 필요) 확인.