Load PixText Model
Two Packages, One Obvious Default, One Folder Everyone Gets Wrong
- model
PixText is the first thing I'd reach for when a generated image is perfect except for four letters on a bag and someone's name, and you need those pixels repaired without touching a single pixel elsewhere. It's not a general image editor - it's a text specialist. Give it an image, boxes, and the words that should be there, and it renders those words into the frame in the typeface of the scene.
Load PixText Model is where that starts, and it's a two-widget node, so the interesting part is knowing which of the two packages to download and what a "complete package" even means.
Two checkpoints, one choice
The pack ships two variants, and they're the same architecture trained/sampled differently:
- PixText-MeanFlow - 4 steps, the README's default quick-start, and the one you should download first.
- PixText-Teacher - 25-step Euler, slower, the quality reference the paper's examples compare against.
Both run at 3.3 guidance. Both use the same package layout. They can coexist in one process, so if you have the disk space and you're doing anything fiddly - thin strokes, a language with dense glyphs - pull both and A/B them on the same seed. MeanFlow at 4 steps is roughly the difference between "usable in a workflow" and "go get coffee," and for most caption repairs it holds up fine. Reach for Teacher when MeanFlow smears a letterform and you'd rather wait than fight it.
What the node actually does
Almost nothing, on purpose. It reads model_name from a combo, maps precision to a torch dtype, and returns a handle. The weights don't load yet - the first Refine Text execution triggers the real load, through ComfyUI's own ModelPatcher with a forced full load, because these are native PixText modules that don't implement partial weight casting. That's why the loader node runs instantly and the first Refine is where the VRAM gets spent.
The model_name dropdown is populated by scanning ComfyUI/models/pixtext/*/manifest.json for folders that also contain model.safetensors. Nothing else qualifies. A loose .safetensors or a Hugging Face cache blob doesn't count - it has to be a folder with a manifest.
precision sits in the advanced section: bfloat16 or float32. Keep bf16 - same weights at half the memory, and this model isn't precision-sensitive the way a 12B pixel model is. fp32 doubles your footprint for a difference you probably won't see; the reason to reach for it is an older card that chokes on bf16.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ATH-MaaS/PixText.git
python -m pip install -r PixText/requirements.txt
Run that pip with ComfyUI's own Python, not system Python. The requirements file is almost apologetic - a single line, opencv-python-headless, because ComfyUI already provides torch, torchvision, numpy, Pillow and safetensors and the pack deliberately doesn't pin them. You do not need pip install -e .; the pack's entry point shims src/ onto sys.path itself, so a plain clone into custom_nodes is complete.
Then the model package. From huggingface.co/ATH-MaaS/PixText, into ComfyUI/models/pixtext/:
ComfyUI/models/pixtext/PixText-MeanFlow/
model.safetensors
config.json
inference_config.json
manifest.json
fonts/
AlibabaPuHuiTi-3-55-Regular.ttf
GoNotoCJKCore-v7.0.ttf
The fonts aren't optional. The renderer picks the first bundled font covering the whole target string - PuHuiTi, then Go Noto - and checksums are verified against the manifest, so a package missing fonts/ won't load.
Where people get burned
The combo says (install a model package). That placeholder is the node's honest way of saying the scan found nothing. Either the folder is in the wrong place (models/pixtext, not models/checkpoints, not models/pixtext_ocr - that's the OCR folder), or you're one directory too deep. The scan is exactly one level below models/pixtext, so extracting a zip that nests PixText-MeanFlow/PixText-MeanFlow/manifest.json hides it completely. Move the inner folder up.
"PixText requires an NVIDIA CUDA GPU with FlexAttention support." This is a hard requirement, not a soft one, and it fires at load. Refinement runs FlexAttention kernels; there's no CPU path for editing, and no AMD path either. The pipeline can load a package on CPU, but it refuses to edit, so a machine without a supported NVIDIA card can browse the node graph and not much else. If you're on Windows and seeing this with a real NVIDIA card, check that ComfyUI is actually on the CUDA build (--cpu launches and torch versions are the usual culprits).
One expectation to set: this node has no LoRA socket, no clip, no VAE, no text encoder. That's the design - a self-contained package plus fonts, which is why the install is two commands and a folder copy instead of the six-model scavenger hunt most modern packs require. If you were bracing for clip_l, you can stop.
One thing to set expectations: this pack is new enough that the community corpus has essentially nothing on it. No bug-report library to lean on - but also no inherited folklore. Every default in it came from people looking at a benchmark, not at a year of user complaints.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | Complete package folder, including configuration and fonts. | |
| precision | COMBO | bfloat16 | 2 options: bfloat16, float32 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | PIXTEXT_MODEL | — |