The DetikzifyPipeline allows you to synthesize TikZ graphics programs from images.
Key workflow:
- Load the model using
load(). - Initialize
DetikzifyPipeline. - Use
.sample(image=...) to generate a single TikZ program. - Use
.simulate(image=..., timeout=...) to run MCTS-based inference, which returns a generator of (score, fig) tuples. - Use
.rasterize().show() on the resulting figure object if is_rasterizable is true to view the result. - Use
.save("filename.tex") to save the TikZ code.
from operator import itemgetter
from detikzify.model import load
from detikzify.infer import DetikzifyPipeline
image = "https://w.wiki/A7Cc"
pipeline = DetikzifyPipeline(*load(
model_name_or_path="nllg/detikzify-v2.5-8b",
device_map="auto",
torch_dtype="bfloat16",
))
# generate a single TikZ program
fig = pipeline.sample(image=image)
# if it compiles, rasterize it and show it
if fig.is_rasterizable:
fig.rasterize().show()
# run MCTS for 10 minutes and generate multiple TikZ programs
figs = set()
for score, fig in pipeline.simulate(image=image, timeout=600):
figs.add((score, fig))
# save the best TikZ program
best = sorted(figs, key=itemgetter(0))[-1][1]
best.save("fig.tex")