π Image Evaluator (nhk)
An AI quality gate that actually looks at your images
- image
- image
- passed
- confidence
- reasoning
- info
Most "quality checks" in ComfyUI are just a human squinting at a preview. ImageEvaluator tries to replace that with a vision model that reads the actual pixels, scores them against your own criteria, and hands you a pass/fail boolean you can route on. It's the gatekeeper node for an automated QC loop: generate, evaluate, keep the good ones, quietly discard or reroute the bad ones. That's a genuinely useful thing to want, and this is one of the few nodes I've seen attempt it on top of local Ollama instead of a paid API.
The catch is in the category: nhk/wip. This is part of the pack's experimental Image Evaluation workflow, and the author is upfront that behavior may shift while they sort out ComfyUI's pull-based execution quirks. It works, but treat it as a building block, not a finished product.
How it works
The node takes your image, saves it as a temporary JPEG, base64-encodes it, and fires it at your local Ollama server (http://localhost:11434/api/generate). The vision model reads the image against whatever evaluation_criteria you wrote and responds with a verdict. The node then parses that text.
This is where you need to be realistic about what you're getting. The confidence score isn't a calibrated model output - it's a regex that looks for patterns like confidence: 0.85, 8/10, or 85%, and falls back to keyword matching ("excellent" β 0.95, "poor" β 0.30). Pass/fail is a keyword vote plus an explicit "yes"/"no" check. It's a heuristic on top of a vision model, which is fine for "is this obviously blurry garbage" but don't expect it to agree with your taste.
passed is True only if the judgment says you met the criteria and the extracted confidence is at least confidence_threshold. That double gate is the right call - it stops a model that says "yes, but I'm really not sure" from passing.
The inputs that matter
- evaluation_criteria - the whole game. "Is this image high quality, sharp, and well-composed?" is the default and it's too vague for real QC. Be concrete: "eyes in focus, natural skin tones, no motion blur" or "product centered, clean background, no text artifacts."
- confidence_threshold (0.7) - how strict the gate is. 0.85+ is very strict, 0.5 is lenient.
- model -
qwen3-vl:8b(default) orllama3.2-vision:11b. You must have it pulled in Ollama. - temperature (0.3) - keep it low. Lower = more consistent judgments, which is what you want in a QC loop.
Outputs: image (passthrough), passed (BOOLEAN - wire this to a Conditional Router or Stop node), confidence (FLOAT), reasoning (STRING, the model's actual explanation - read it when the gate misfires), and info (a summary string). Note the node re-runs on every execution by design, so each run costs a local Ollama call. Local, so it's free, but it's not instant on an 8B model.
Installing and prerequisites
Install the pack the usual way - ComfyUI Manager, search "NHK Nodes", install, restart - or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Enashka/ComfyUI-nhknodes
Then the Ollama part, which is the real dependency:
ollama serve # keep this running
ollama pull qwen3-vl:8b
Where people get burned
- "Cannot connect to Ollama. Is it running?" - that's the error text when
ollama serveisn't up. Start it, pull the model, try again. - All images pass or all fail - your criteria are too vague or too strict. Read the
reasoningoutput; it'll tell you what the model actually saw. - Nothing seems to run at all - this is the WIP gotcha. ComfyUI only executes chains that lead into a real terminal, so your evaluation branch has to end in an actual Save/Preview (or a Conditional Router that feeds one). The passthrough preview nodes in this pack aren't terminals by themselves. If the evaluator silently does nothing, you've got no terminal reachable from it.
ImageEvaluator is the most "wow" node in the pack and the most undercooked. If you want a smarter filter for long batch runs, it's worth a shot - just verify its judgment on your own images before you let it discard anything you care about.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Image to evaluate | |
| evaluation_criteria | STRING | Is this image high quality, sharp, and well-composed? | Criteria for evaluation - be specific about what you want |
| confidence_threshold | FLOAT | 0.700β1 | Minimum confidence score to pass (0.0-1.0) |
| model | COMBO | qwen3-vl:8b | Vision model to use for evaluation |
| temperature | FLOAT | 0.30β1 | Lower = more consistent, higher = more varied judgments |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | Original image passthrough |
| passed | BOOLEAN | True if meets criteria AND confidence β₯ threshold |
| confidence | FLOAT | AI confidence score (0.0-1.0) |
| reasoning | STRING | AI's detailed explanation of judgment |
| info | STRING | Summary: model, threshold, result |