Downloads · 30 days
0
ozhyhinas/latexgen-models
latexgen-models is a image-to-text model from ozhyhinas. Use it when you need a caption or text from an image. It is set up for transformers.js.
The three ONNX models that LatexGen serves to the browser. LatexGen converts English math and equation screenshots into LaTeX entirely on-device, with nothing leaving the tab.
Downloads · 30 days
0
Access
Public
Updated Sep 9, 2026
Repo size
2.4 GB
Likes
0
Public
Click a slice to open those files.
.onnx1.1 GB · 64%
From the Hugging Face model README
The three ONNX models that LatexGen serves to the browser. LatexGen converts English math and equation screenshots into LaTeX entirely on-device, with nothing leaving the tab.
They are hosted here rather than in the application repository so a clone does not pull 1.6 GB of weights. Each model ships in several precisions plus pre-compressed .gz copies, so a static host can serve whichever the device can run.
| directory | model | role in the app | precisions | size |
|---|---|---|---|---|
intellitex/ | IntelliTeX, CodeT5+ 220M fine-tuned on English→LaTeX pairs | the specialist: single equations from plain English | int8, int4 | 629 MB |
texify/ | Texify | image OCR fallback for prose mixed with math, and dense equations | int8, int4 | 917 MB |
texo/ | Texo / FormulaNet, 20M | first-pass image OCR: tiny, fast, robust to small fonts and dark backgrounds | fp32 | 76 MB |
Each directory also carries its tokenizer and config. compressed.json lists which files have a pre-built .gz sibling.
LatexGen walks a ladder and only climbs when the previous tier's output fails validation. Texo reads an image first and Texify takes over when Texo's output fails a syntax check or spells out prose. IntelliTeX handles single-line text input before any language model is loaded. Measured on an Apple M5 Pro:
| model | ONNX Runtime Web | via webnn-catalog on Core ML |
|---|---|---|
| Texo | 770 ms | 25.9 ms |
| Texify | 810 ms | 145.7 ms |
| IntelliTeX | 450 ms | 146.2 ms |
The int4 variants are GPU-only: on CPU, int4 measured about ten times slower than int8, so the application selects int8 there.
LatexGen downloads a directory, serves it from its own static host, and loads it with transformers.js as a local model:
import { pipeline, env } from "@huggingface/transformers";
env.allowRemoteModels = false;
env.allowLocalModels = true;
env.localModelPath = "/models/"; // holds intellitex/, texo/, texify/
const specialist = await pipeline("text2text-generation", "intellitex", { dtype: "q8" });
const out = await specialist(
"Convert natural-language math into a STRICT LaTeX equation\nx squared plus one",
{ max_new_tokens: 64 },
);
Use dtype: "q4" for the int4 weights where WebGPU is available.
For the routing rules, the validation and repair loop, and the benchmarks behind every choice: https://github.com/OlehZhyhinas/LatexGen
Published by Oleh Zhyhinas (GitHub, LinkedIn).