XLiteOCR is not a wrapper around a cloud API. It is a real, CPU-only OCR pipeline you run on your own servers, built entirely from permissively licensed open-source components. This page documents exactly what is inside it and how the pieces fit together.
XLiteOCR turns images and PDFs into structured, machine-readable data. There are two modes, both running on plain CPUs with no GPU.
Text with precise bounding boxes and per-line confidence, plus the detected color of each line returned as hex, RGB, and a readable color name.
Passing ?structured=true adds markdown, typed
layout blocks (title / text / table / figure), HTML tables, and
figures vectorized to scalable SVG.
Every layer is a permissively licensed open-source component. There is no GPL or AGPL anywhere in the pipeline, and no proprietary model weights, so the whole thing is free to run, modify, and ship.
| Layer | Component | License |
|---|---|---|
| Language & runtime | Python 3.11+ engine & API — atop a polyglot native runtime: C++ (PaddlePaddle, PDFium) and Rust (VTracer) | — |
| Text detection + recognition | PaddleOCR 2.9.1 — PP-OCRv3 detection + PP-OCRv4 English recognition (code + released weights) | Apache-2.0 |
| Layout, structure & tables | PP-Structure — document layout analysis, table parsing, markdown reconstruction | Apache-2.0 |
| Inference runtime | PaddlePaddle 2.6.2 — CPU build, MKL-DNN enabled | Apache-2.0 |
| PDF rasterization | pypdfium2 4.30.0 — Google PDFium, V8-free build (no JavaScript engine bundled) | BSD-3 / Apache-2.0 |
| Raster → SVG vectorizer | VTracer 0.6.11 — geometric tracing of figures, logos, and line art (never potrace, which is GPL) | MIT |
| Imaging & numerics | Pillow 11.0.0 + NumPy 1.26.4 — color detection and array math (deliberately no OpenCV in the color path) | HPND / BSD-3 |
| HTTP service |
FastAPI 0.115.6 + Uvicorn 0.34.0
— the /ocr and /health API,
single worker
|
MIT / BSD-3 |
PaddleOCR 2.9.1 with lang='en' serves PP-OCRv3 detection
and PP-OCRv4 English recognition, both Apache-2.0. PP-OCRv5
multilingual weights are a configuration swap; the pipeline shape is
identical. The full 82-package dependency manifest, resolved from each
package's authoritative license metadata, ships in the source as
THIRD_PARTY_LICENSES.md.
A single in-process pipeline. Nothing is written to disk, and nothing leaves the machine.
Image or PDF is read into memory. PDFs are rasterized page by page with pypdfium2.
PaddleOCR finds text regions and reads them, returning boxes, text, and confidence.
Pillow + NumPy sample the dominant glyph-stroke color of each line.
On request, PP-Structure reconstructs layout into markdown, blocks, and HTML tables.
Figure regions are traced to SVG by VTracer and returned inline as JSON.
The service reads each upload into memory and never writes documents to disk.
Every component runs on ordinary CPUs. No accelerator, no specialized hardware bill.
A test in the source (tests/test_compliance.py) is
a hard license gate: the build fails if any GPL/AGPL component
appears or if the bundled PDFium is not V8-free.
It binds to localhost and expects to sit behind your own reverse proxy and access control. Honest about its boundaries.
XLiteOCR is released under the Apache License 2.0 and is assembled only from permissively licensed components: Apache 2.0, MIT, BSD, HPND, and the like. There is no GPL or AGPL anywhere in the stack, so there are no copyleft obligations or licensing surprises to clear before you put it into production.
XLiteOCR is open source under Apache-2.0. The interactive demo lets you download the full source as a zip once you are in. Want access to the demo and the source? Email us and we will send you the access password.