--- title: WygLore Leaf Korean NER sdk: gradio app_file: app.py 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 이주 시 추가. - 프라이버시: 텍스트가 HF 인프라 경유 (클라우드-LLM 유저 무방 / 로컬 Ollama 의 완전-로컬은 깨짐 / NER=태깅이라 생성 ToS 리스크 낮음). - 첫 부팅 로그(`[boot] ...`)에서 (a) 어떤 onnx 가 선택됐는지, (b) `id2label` 이 `B-PS..` 인지(=정상) `LABEL_0..` 인지(=라벨맵 필요) 확인.