diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..747ffb7 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/source/api.rst b/docs/source/api.rst new file mode 100644 index 0000000..5df7c49 --- /dev/null +++ b/docs/source/api.rst @@ -0,0 +1,39 @@ +API Reference +============= + +This section provides detailed API documentation for the TexTeller package. TexTeller is a tool for detecting and recognizing LaTeX formulas in images and converting mixed text and formula images to markdown. + +.. contents:: Table of Contents + :local: + :depth: 2 + + +Image to LaTeX Conversion +------------------------- + +.. autofunction:: texteller.api.img2latex + +Paragraph to Markdown Conversion +------------------------------ + +.. autofunction:: texteller.api.paragraph2md + +LaTeX Detection +--------------- + +.. autofunction:: texteller.api.detection.latex_detect + +Model Loading +------------- + +.. autofunction:: texteller.api.load_model +.. autofunction:: texteller.api.load_tokenizer +.. autofunction:: texteller.api.load_latexdet_model +.. autofunction:: texteller.api.load_textdet_model +.. autofunction:: texteller.api.load_textrec_model + + +KaTeX Conversion +---------------- + +.. autofunction:: texteller.api.to_katex diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..33d39e4 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,75 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute. +import os +import sys + +sys.path.insert(0, os.path.abspath('../..')) + +# -- Project information ----------------------------------------------------- + +project = 'TexTeller' +copyright = '2025, TexTeller Team' +author = 'TexTeller Team' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = [ + 'myst_parser', + 'sphinx.ext.duration', + 'sphinx.ext.intersphinx', + 'sphinx.ext.autosectionlabel', + 'sphinx.ext.autodoc', + 'sphinx.ext.viewcode', + 'sphinx.ext.napoleon', + 'sphinx.ext.autosummary', + 'sphinx_copybutton', + # 'sphinx.ext.linkcode', + # 'sphinxarg.ext', + 'sphinx_design', + 'nbsphinx', +] + +templates_path = ['_templates'] +exclude_patterns = [] + +# Autodoc settings +autodoc_member_order = 'bysource' +add_module_names = False +autoclass_content = 'both' +autodoc_default_options = { + 'members': True, + 'member-order': 'bysource', + 'undoc-members': True, + 'show-inheritance': True, + 'imported-members': True, +} + +# Intersphinx settings +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), + 'numpy': ('https://numpy.org/doc/stable', None), + 'torch': ('https://pytorch.org/docs/stable', None), + 'transformers': ('https://huggingface.co/docs/transformers/main/en', None), +} + +html_theme = 'sphinx_book_theme' + +html_theme_options = { + 'repository_url': 'https://github.com/OleehyO/TexTeller', + 'use_repository_button': True, + 'use_issues_button': True, + 'use_edit_page_button': True, + 'use_download_button': True, +} + +html_logo = "../../assets/logo.svg" diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..b8980b8 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,76 @@ +.. TexTeller documentation master file, created by + sphinx-quickstart on Sun Apr 20 13:05:53 2025. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +TexTeller Documentation +=========================================== + +Features +-------- + +- **Image to LaTeX Conversion**: Convert images containing LaTeX formulas to LaTeX code +- **LaTeX Detection**: Detect and locate LaTeX formulas in mixed text/formula images +- **Paragraph to Markdown**: Convert mixed text and formula images to Markdown format + +Installation +----------- + +You can install TexTeller using pip: + +.. code-block:: bash + + pip install texteller + +Quick Start +---------- + +Converting an image to LaTeX: + +.. code-block:: python + + from texteller import load_model, load_tokenizer, img2latex + + # Load models + model = load_model(use_onnx=False) + tokenizer = load_tokenizer() + + # Convert image to LaTeX + latex = img2latex(model, tokenizer, ["path/to/image.png"])[0] + +Processing a mixed text/formula image: + +.. code-block::python + + from texteller import ( + load_model, load_tokenizer, load_latexdet_model, + load_textdet_model, load_textrec_model, paragraph2md + ) + + # Load all required models + latex_model = load_model() + tokenizer = load_tokenizer() + latex_detector = load_latexdet_model() + text_detector = load_textdet_model() + text_recognizer = load_textrec_model() + + # Convert to markdown + markdown = paragraph2md( + "path/to/mixed_image.png", + latex_detector, + text_detector, + text_recognizer, + latex_model, + tokenizer + ) + +API Documentation +---------------- + +For detailed API documentation, please see :doc:`./api`. + +.. toctree:: + :maxdepth: 2 + :hidden: + + api