selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
PaddleOCR Local logo

Self-host PaddleOCR Local

0.2.0

Local-first document parsing workbench with five OCR models

BetaOpen SourceApache-2.0
Updatedlast month
LanguagePython
Setup difficultyAdvanced
Stars
138
Ports
8000 (WebUI and FastAPI proxy), 8001 (Internal model controller API)
Requires
Docker
Install with Docker Compose
PaddleOCR Local WebUI showing document parsing interface

What is PaddleOCR Local?

PaddleOCR Local is a self-hosted document parsing workbench that converts PDFs, images, and Office documents (Word, PowerPoint) into editable Markdown. It provides a unified WebUI and CLI for five OCR models: PaddleOCR-VL 1.6, PP-OCRv6, OvisOCR2, HPD-Parsing, and NaviDC-OCR. The software runs entirely locally with no cloud uploads, supports model switching with automatic GPU memory release, and offers batch processing, progress tracking, and multiple export formats (Markdown, JSON, DOCX, searchable PDF, HTML, CSV/XLSX). It deploys via Docker Compose on Linux/Windows with NVIDIA GPU, has a CPU-only mode using PP-OCRv6, and provides native Apple Silicon support via MLX for OvisOCR2. The project includes an API token for access control and a FastAPI interface with OpenAPI documentation.

Should you self-host PaddleOCR Local?

PaddleOCR Local scores 44/100 on selfhost.directory (how scoring works) and ranks #35 of 46 in Document Management. It has 138 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. It is Apache-2.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Reactive Resume (87/100, 44 977 stars). It scores higher overall, so compare the two before you pick. See PaddleOCR Local vs Reactive Resume side by side.

Features

  • Apple Silicon / MLX support
  • Batch processing and CLI
  • Bilingual UI (Chinese/English)
  • CPU-only deployment
  • External OCR engine integration
  • FastAPI with OpenAPI
  • Five OCR models unified
  • GPU memory pre-check
  • Model switching with GPU memory release
  • Multiple Export Formats
  • Office document support
  • PDF to Markdown conversion
  • Side-by-side original and result view
  • Table and formula rendering
  • Task history and search

PaddleOCR Local README

How to install PaddleOCR Local

Install PaddleOCR Local with Docker Compose

Docker (Linux containers on Windows), no GPU required
Environment variables
PANDOCR_API_TOKEN, PANDOCR_MODEL_CONTROL, PANDOCR_MODEL_CATALOG, PANDOCR_GPU_DEVICE_ID, VLM_BACKEND, API_IMAGE_TAG_SUFFIX, VLM_IMAGE_TAG_SUFFIX, and model-specific vars
make doctor
cp env.docker env.txt
./build.sh
./deploy.sh

Requires NVIDIA GPU, Docker, and NVIDIA Container Toolkit. Supports RTX 30/40/50 series with appropriate env file.

How to configure PaddleOCR Local

  • API_IMAGE_TAG_SUFFIXlatest-nvidia-gpu-offlineDocker image tag suffix for API services

    Docker image tag suffix for API services

    values: Image tag suffix

  • HPD_PARSING_MODEL_NAMEPaddlePaddle/HPD-ParsingHPD-Parsing model name

    HPD-Parsing model name

    values: Model identifier

  • NAVIDC_OCR_MODEL_NAMEStarDoc-AI/NaviDC-OCRNaviDC-OCR model name

    NaviDC-OCR model name

    values: Model identifier

  • OVISOCR2_MODEL_NAMEATH-MaaS/OvisOCR2OvisOCR2 model name

    OvisOCR2 model name

    values: Model identifier

  • PADDLEOCR_VL_MODEL_NAMEPaddleOCR-VL-1.6-0.9BPaddleOCR-VL model name

    PaddleOCR-VL model name

    values: Model identifier

  • PANDOCR_ACTIVE_MODEL_ON_STARTpaddleocr-vl-1.6Model to activate on startup

    Model to activate on startup

    values: Model ID from catalog

  • PANDOCR_API_TOKENAPI token for WebUI access control

    API token for WebUI access control

    values: Any string

  • PANDOCR_CONTROLLER_OCR_LEASE_TTL_SECONDS0OCR lease TTL in seconds (0 = no expiry)

    OCR lease TTL in seconds (0 = no expiry)

    values: Integer seconds

  • PANDOCR_CORS_ORIGINShttp://localhost:8000,http://127.0.0.1:8000Allowed CORS origins for WebUI

    Allowed CORS origins for WebUI

    values: Comma-separated URLs

  • PANDOCR_CPU_PORT8000Port for CPU deployment WebUI

    Port for CPU deployment WebUI

    values: Integer port

  • PANDOCR_ENABLE_API_DOCS0Enable FastAPI /docs endpoint

    Enable FastAPI /docs endpoint

    values: 0 or 1

  • PANDOCR_ENFORCE_ORIGIN_CHECK1Enforce origin check for cross-site requests

    Enforce origin check for cross-site requests

    values: 0 or 1

  • PANDOCR_GPU_DEVICE_ID0GPU device ID to use

    GPU device ID to use

    values: Integer

  • PANDOCR_GPU_RELEASE_TIMEOUT60GPU memory release timeout in seconds

    GPU memory release timeout in seconds

    values: Integer seconds

  • PANDOCR_MAX_CONCURRENT_OCR1Maximum concurrent OCR requests

    Maximum concurrent OCR requests

    values: Integer

  • PANDOCR_MAX_UPLOAD_MB512Maximum upload size in MB

    Maximum upload size in MB

    values: Integer

  • PANDOCR_MODEL_CATALOGpaddleocr-vl-1.6,pp-ocrv6,ovisocr2,hpd-parsing,navidc-ocrComma-separated list of enabled models

    Comma-separated list of enabled models

    values: Model IDs

  • PANDOCR_MODEL_CONTROLdockerModel control mode: docker, none, or external

    Model control mode: docker, none, or external

    values: docker, none, external

  • PANDOCR_MODEL_SWITCH_TIMEOUT1200Model switch timeout in seconds

    Model switch timeout in seconds

    values: Integer seconds

  • PPOCR_V6_MODEL_NAMEPP-OCRv6_mediumPP-OCRv6 model name

    PP-OCRv6 model name

    values: Model identifier

  • VLM_BACKENDvllmVLM backend for PaddleOCR-VL

    VLM backend for PaddleOCR-VL

    values: vllm

  • VLM_IMAGE_TAG_SUFFIXlatest-nvidia-gpu-offlineDocker image tag suffix for VLM services

    Docker image tag suffix for VLM services

    values: Image tag suffix

More in OCR

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…