Nodes/comfyui-fvmtools/Signs to Ideogram Caption
ComfyUI Node

Signs to Ideogram Caption

SIGN_DATA -> Ideogram 4 caption JSON. Wire `caption_json` into Ideogram4PromptBuilderKJ's `import_json` and set `import_mode` to 'always' — the builder's own elements_data is re-serialised from the browser at queue time, so any other route is silently overwritten.

By ping1979ping·Created 6 months ago·Updated 2 days ago· 1
Signs to Ideogram Caption
  • sign_data
  • image
  • caption_json
  • box_prompts
  • mask
  • bboxes
  • width
  • height
  • report
◄high_level_description►
◄background►
◄lookphotographic►
◄text_inset0.07►
◄mask_pad_px4►
◄empty_too_smalltrue►
◄min_word_px0►
◄fallback_text►
◄auto_scenetrue►
◄lm_base_urlhttp://localhost:1234/v1►
◄lm_model_idqwen3-8b-vl-instruct-abliterated►
◄surface_hint►
CategoryFVMtools/signs

Inputs (14)

NameTypeDefaultDescription
sign_dataSIGN_DATAFrom Sign Text Proposer (or the selector, if you supply the words yourself).
imageIMAGEThe image the selector scanned. Only its size is used, to convert boxes into Ideogram's 0-1000 grid.
high_level_descriptionSTRINGOne line about the whole picture. Blank is allowed.
backgroundSTRINGThe scene around the lettering: light, weather, materials. This is what keeps the replacement in the same photograph as the rest of the frame.
lookCOMBOphotographicIdeogram drifts towards poster art unless told otherwise. Use 'flat graphic' only when the source genuinely is one.
text_insetFLOAT0.070–0.45How far the TEXT box sits inside the region. The mask stays full size. A box that reaches the edge of a surface puts letters past that edge.
mask_pad_pxINT40–64Extra mask around each region. Err high: what the mask misses is restored unchanged and stands there as leftover scribble.
empty_too_smallBOOLEANtrueRegions the selector judged too small for a readable word are described as blank instead of being written on. Off: every region gets a word, which produces letter-like shapes that count as invented text.
min_word_pxINT00–200Box heights below this get no word — the surface is described as blank instead. 0 turns the test off. The selector has its own height floor, but it measures the region BEFORE the line splitter cuts it into bands, so a 90px sign split into four passes the selector and arrives here as four 20px strips that the splitter only checks against its own 8px 'is this a line at all' bar. This is the last station before the caption and the only one that sees the geometry that will actually be rendered.
fallback_textSTRINGUsed for a region the proposer left without a word. Blank means that region is emptied.
auto_sceneoptBOOLEANtrueLook at the picture and write the scene description itself when the two text fields above are empty. That is what lets the graph run from nothing but a chosen image.
lm_base_urloptSTRINGhttp://localhost:1234/v1LM Studio endpoint for the scene description.
lm_model_idoptSTRINGqwen3-8b-vl-instruct-abliteratedName it. 'Whatever is loaded' is not a default, it is a silent failure: LM Studio lists models it has not loaded, the call returns nothing, and the run continues with an empty description. Must be a VISION model.
surface_hintoptSTRINGPer class, one per line, 'class: description'. Overrides the built-in wording for that class.

Outputs (7)

NameTypeDescription
caption_jsonSTRING—
box_promptsSTRING—
maskMASK—
bboxesBOUNDING_BOX—
widthINT—
heightINT—
reportSTRING—