arxivparse
Convert arXiv papers to clean plain text using LaTeXML. Download any arXiv paper and get structured text with title, abstract, sections, and math notation preserved.
Install
pip install arxivparse
Quick verification that LaTeXML is installed:
latexml --version
Usage
Get text as a string
from arxivparse import arxiv_to_text
text = arxiv_to_text("1706.03762") # Attention is All You Need paper
print(text[:200])
Save text to a file
from arxivparse.pipeline import convert_arxiv_to_text
from pathlib import Path
output_path = convert_arxiv_to_text("1706.03762", output_path="paper.txt")
text = Path("paper.txt").read_text()
Handle errors gracefully
from arxivparse.errors import (
Arxiv2TextError,
DownloadError,
NoLatexSourceError,
ConversionError,
)
try:
text = arxiv_to_text("1706.03762")
except NoLatexSourceError:
print("Paper is PDF-only")
except DownloadError:
print("Download failed")
except ConversionError:
print("LaTeXML conversion failed")
Library Usage
Simple: get text as a string
from arxivparse import arxiv_to_text
text = arxiv_to_text("1706.03762")
Full pipeline control
from arxivparse.pipeline import convert_arxiv_to_text
from arxivparse.errors import Arxiv2TextError
try:
output_path = convert_arxiv_to_text("1706.03762")
text = output_path.read_text(encoding="utf-8")
except Arxiv2TextError as e:
print(f"Failed: {e}")
Configuration
Both functions accept optional timeouts:
# arxiv_to_text() - returns string
text = arxiv_to_text(
arxiv_id="1706.03762",
download_timeout=60, # seconds to wait for download
convert_timeout=120, # seconds to wait for LaTeXML
)
# convert_arxiv_to_text() - returns file path
path = convert_arxiv_to_text(
arxiv_id="1706.03762",
output_path="paper.txt", # custom output file
download_timeout=60,
convert_timeout=120,
keep_temp=False, # keep intermediate files
)
Error Handling
from arxivparse.errors import (
DownloadError, # network/HTTP failure
NoLatexSourceError, # paper is PDF-only
ConversionError, # LaTeXML failed
MainTexNotFoundError, # no .tex file found
Arxiv2TextError, # any pipeline failure
)
CLI Reference (Optional)
If you prefer the command line:
# Install the CLI (comes with the package)
arxivparse 1706.03762
# Multiple papers
arxivparse 1706.03762 2301.07041
# Custom output
arxivparse -o paper.txt 1706.03762
# Verbose output
arxivparse -v 1706.03762
# Keep temp files for debugging
arxivparse --keep-temp 1706.03762
Output Format
QASPER-style plain text: title, abstract, section headings, body paragraphs, inline math (LaTeX notation like h_{t}), and figure/table captions. No bibliography entries, footnotes, author affiliations, or citation numbers.
Metadata
Release files for arxivparse 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| arxivparse-0.2.0.tar.gz | 8.5 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arxivparse-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.6 kB
Release files / arxivparse-0.2.0.tar.gz
| Download URL | arxivparse-0.2.0.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
28fc06532ac8b839e07a49006018650acc36df91fe54b60db0033d3a18645ec9
|
|
BLAKE2b-256 checksum How to use checksums |
5f394df04cea5c1fe3d227dee15a74823dac0c35297e9ed023ebb79913c17b66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.
Transparency logRelease files / arxivparse-0.2.0-py3-none-any.whl
| Download URL | arxivparse-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df3a13437dd28ac6ed484e47728fea90dde1f97b8e6054f436e77361ce0f0a0e
|
|
BLAKE2b-256 checksum How to use checksums |
46cf2c93b6f317e03d2f82dcf53f918366f58e098ff0d1c69c9329b15dfb8ebd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.
Transparency logSecurity for arxivparse 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for arxivparse-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.