Flatten and clean LaTeX files for LLM consumption
Project description
LaTeX LLM Cleaner
A Python CLI tool that takes a LaTeX .tex file or compiled .pdf and produces a cleaned text version optimized for LLM consumption. Combines functionality from tools like flachtex, arxiv_latex_cleaner, and pandoc into a single utility.
Installation
pip install latex-llm-cleaner
# With PDF support:
pip install latex-llm-cleaner[pdf]
Or from source:
pip install .
# or for development:
pip install -e ".[dev]"
Usage
latex-llm-cleaner paper.tex # output to stdout
latex-llm-cleaner paper.tex -o cleaned.tex # output to file
latex-llm-cleaner paper.tex --no-bibliography # skip bib inlining
latex-llm-cleaner thesis.pdf -o thesis.md # extract text from PDF
latex-llm-cleaner thesis.pdf --ocr -o thesis.md # OCR with LaTeX equation recovery
All features are on by default. Disable individual steps with --no-* flags:
latex-llm-cleaner INPUT_FILE [options]
Options:
-o, --output FILE Write to FILE (default: stdout)
--no-flatten Disable \input/\include flattening
--no-comments Disable comment removal
--no-bibliography Disable bibliography inlining
--no-figures Disable figure summary substitution
--figure-summary-suffix S Suffix for summary files (default: _summary.txt)
--ocr Use Surya vision OCR (recovers LaTeX equations, slower)
--encoding ENC File encoding (default: utf-8)
-v, --verbose Print processing info to stderr
PDF Input
For compiled PDFs (e.g., theses, published papers), latex-llm-cleaner extracts the text as markdown, preserving table structure and dropping images. This requires the optional pdf extra:
pip install latex-llm-cleaner[pdf]
latex-llm-cleaner thesis.pdf -o thesis.md
Tables are output as markdown tables with | delimiters. Images are noted as [picture omitted] placeholders. The .tex pipeline flags (--no-flatten, etc.) are ignored for PDF input since they don't apply.
OCR mode (equation recovery)
The default PDF extraction is fast but loses display equations. For compiled LaTeX PDFs, the --ocr flag uses Surya vision-based OCR to recover equations as LaTeX source:
pip install latex-llm-cleaner[ocr]
latex-llm-cleaner thesis.pdf --ocr -o thesis.md
This reconstructs inline math as $...$ and display equations as $$...$$ with full LaTeX notation. It's slower (~30s/page on Apple Silicon) but dramatically more accurate for math-heavy documents. Requires Python ≤ 3.13.
Processing Pipeline (.tex files)
The four steps run in this order (each operates on the output of the previous step):
- Flatten includes — inline
\input{},\include{}, and\subfile{}recursively, with cycle detection - Remove comments — strip
%comments while respecting\%escapes and verbatim environments - Inline bibliography — use a pre-compiled
.bblfile if available (common in arXiv downloads), otherwise parse.bibfiles; replaces\bibliography{}with a\begin{thebibliography}block - Figure summary substitution — replace
\includegraphicswith text descriptions when summary files are available
Figure Summaries
LLMs (as of early 2026) are still poor at extracting precise information from complex figures in papers — dense plots, multi-panel layouts, small labels, etc. To work around this, latex-llm-cleaner can replace figures with equivalent text descriptions.
For each image (e.g., figs/plot.png), place a summary file alongside it with the configured suffix:
figs/plot.png ← the image
figs/plot_summary.txt ← the text summary
What to put in a summary
A summary should be data-equivalent to the figure: it should convey the same information a reader would get from looking at the figure, and nothing more. Avoid editorial commentary, interpretation, or conclusions that aren't visually present in the figure itself.
Good example:
Bar chart with four groups (A, B, C, D). Method X scores 0.92, 0.87, 0.76, 0.81. Method Y scores 0.85, 0.91, 0.80, 0.74. Error bars show standard deviation across 5 runs.
Bad example:
This figure clearly demonstrates the superiority of Method X, which aligns with our hypothesis.
Accessibility benefits
LaTeX has limited built-in support for producing accessible output — generated PDFs typically lack alt-text for figures, making them difficult to navigate with screen readers. These same summary files can serve as alt-text source material when compiling to tagged PDF or HTML, improving accessibility beyond the LLM use case.
Development
pip install -e ".[dev]"
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file latex_llm_cleaner-0.6.1.tar.gz.
File metadata
- Download URL: latex_llm_cleaner-0.6.1.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbb4f65a775c9f1a1f0053a663d459afecf9ffe0756bad72814f0a21e7df32c6
|
|
| MD5 |
7b0a7728410d06554e71cbb22cc2f5be
|
|
| BLAKE2b-256 |
ed95d421d61a3dfb253e79a35d248cd27acaf2d958b3da59b90a152bb75c2293
|
File details
Details for the file latex_llm_cleaner-0.6.1-py3-none-any.whl.
File metadata
- Download URL: latex_llm_cleaner-0.6.1-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0cfbf1c9f864141f7aaf86b99cf7350fc75c78d438ae079db56b4c32c6e892e
|
|
| MD5 |
f405ffc0c1d3a6933b9532bb473701b8
|
|
| BLAKE2b-256 |
5bd136cb1b1d85c77f4c8c9d241495cf2ae0a077f9282916a98e35e1be0294b9
|