ONNX-only OCR runtime for mathematical documents
Project description
MathCraft OCR
MathCraft OCR is an ONNX-only OCR runtime for mathematical documents. It provides formula recognition, text recognition, mixed text/formula page OCR, explicit model-cache management, and structured block output for downstream Markdown or TeX document engines.
The package is developed for LaTeXSnipper but is usable as a standalone Python library.
Features
- ONNX Runtime inference only; no active PyTorch OCR runtime.
- Formula OCR: image to LaTeX.
- Text OCR: multilingual PP-OCRv5 mobile detector/recognizer.
- Mixed OCR: formula detection, text masking, batched recognition, and layout merge.
- Manifest-driven model cache with SHA-256 file checks.
- Automatic repair for missing or incomplete model directories.
- Resumable model downloads for interrupted first-run cache repair.
- CPU/GPU provider selection through ONNX Runtime.
- JSONL worker mode for GUI or service integration.
Installation
CPU backend:
pip install "mathcraft-ocr[cpu]"
GPU backend:
pip install "mathcraft-ocr[gpu]"
Install only one backend extra in a clean environment. onnxruntime and onnxruntime-gpu should not be mixed in the same environment.
Python 3.10-3.12 use the LaTeXSnipper-tested ONNX Runtime 1.19 line. Python 3.13 uses newer ONNX Runtime wheels because 1.19.x is not published for Python 3.13.
Quick Start
from mathcraft_ocr import MathCraftRuntime
runtime = MathCraftRuntime(provider_preference="auto")
result = runtime.recognize_mixed("page.png")
print(result.text)
for block in result.blocks:
print(block.role, block.kind, block.text[:80])
Formula-only recognition:
from mathcraft_ocr import MathCraftRuntime
runtime = MathCraftRuntime(provider_preference="cpu")
formula = runtime.recognize_formula("formula.png")
print(formula.text)
CLI
Check model cache:
mathcraft models check
Inspect runtime:
mathcraft doctor --provider auto
Warm up models:
mathcraft warmup --profile mixed --provider auto
Recognize an image:
mathcraft ocr "C:\path\to\page.png" --profile mixed --provider auto --output result.md
mathcraft ocr "C:\path\to\page.png" --profile mixed --provider auto --output-dir "D:\MathCraft\outputs"
mathcraft ocr "C:\path\to\formula.png" --profile formula --provider auto --json
Run JSONL worker mode:
mathcraft worker --provider auto
Model Cache
MathCraft reads models from:
%APPDATA%\MathCraft\models
or from a custom root:
$env:MATHCRAFT_HOME="D:\MathCraft\models"
mathcraft doctor --provider auto
Persist the custom root for future PowerShell sessions:
setx MATHCRAFT_HOME "D:\MathCraft\models"
Restore the default user cache root:
[Environment]::SetEnvironmentVariable("MATHCRAFT_HOME", $null, "User")
Remove-Item Env:\MATHCRAFT_HOME -ErrorAction SilentlyContinue
mathcraft doctor --provider auto
Open a new PowerShell window after removing the persistent variable. The default root is:
%APPDATA%\MathCraft\models
Model artifacts are downloaded from the MathCraft-Models release assets declared in mathcraft_ocr/manifests/models.v1.json.
Runtime Profiles
| Profile | Models | Output |
|---|---|---|
formula |
formula detector + formula recognizer | LaTeX string |
text |
text detector + text recognizer | OCR text and text blocks |
mixed |
formula detector + formula recognizer + text detector + text recognizer | Markdown-ready structured blocks |
Provider Selection
provider_preference accepts:
auto: prefer CUDA when available and valid, otherwise CPU.cpu: force CPU.gpu: request CUDA-capable ONNX Runtime.
The actual provider is available on results through the provider field.
Development
Run tests from the repository root:
cd E:\LaTexSnipper
python .\test\test_mathcraft_ocr.py
python .\test\test_mathcraft_document_engine.py
Build package artifacts:
cd E:\LaTexSnipper
python -m build --no-isolation --outdir .\release_assets\mathcraft-ocr-package\dist .
License
MIT. See LICENSE.
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 mathcraft_ocr-0.1.7.tar.gz.
File metadata
- Download URL: mathcraft_ocr-0.1.7.tar.gz
- Upload date:
- Size: 37.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
470568affb0824dc4befb4a3e16cc26f660df5e9a8f0986dc9f6d2bcd301c503
|
|
| MD5 |
b89875902fdf42ad3269867efc1dfdff
|
|
| BLAKE2b-256 |
27298daf374c1cd024a01223b08732994cffcaecca69c5807188aeacd75b7a66
|
File details
Details for the file mathcraft_ocr-0.1.7-py3-none-any.whl.
File metadata
- Download URL: mathcraft_ocr-0.1.7-py3-none-any.whl
- Upload date:
- Size: 43.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
940913d7e6266da043b6c94e5b20563eb6f1bffe9a469e4020e0aec663d27832
|
|
| MD5 |
fa8f9005f22b40e10c942f5499794882
|
|
| BLAKE2b-256 |
743b8f2a6c7e2796c0587adad686eb01f1d99c1c792878fadf1e298c759c495c
|