pp-nsfw_Inspector / src /moderator.py
philcuriosity1024's picture
Upload folder using huggingface_hub
670cf0c verified
Raw
History Blame Contribute Delete
1.01 kB
"""ε…¨ι“Ύθ·―ε…₯ε£οΌšι’„ε€„η† β†’ ζ„ŸηŸ₯ β†’ 理解 β†’ 决策"""
from PIL import Image
from .preprocess.pipeline import run as preprocess_run
from .perception.pipeline import run as perception_run
from .understanding.pipeline import run as understanding_run
from .decision.pipeline import decide, DecisionResult
def moderate(img: Image.Image, fmt: str, debug_prefix: str = None) -> DecisionResult:
pre = preprocess_run(img, fmt)
results = []
for sub_img in pre.images:
perc = perception_run(sub_img, pre.scene_result, debug_prefix)
texts = [b.text for b in perc.ocr.blocks]
und = understanding_run(texts)
result = decide(
scene=pre.scene_result.scene,
nsfw=perc.nsfw,
qr=perc.qr,
ocr=perc.ocr,
rule_hits=und.rule_hits,
)
results.append(result)
# ε€šεˆ‡η‰‡ε–ζœ€ι«˜ι£Žι™©
priority = {"REJECT": 0, "REVIEW": 1, "PASS": 2}
return min(results, key=lambda r: priority[r.action])