Skip to main content

docling-pp-ocrv6

A Docling OCR plugin for PaddlePaddle's PP-OCRv6 models.

This plugin seamlessly integrates with Docling's standard pipeline to provide local OCR capabilities using PaddlePaddle's PP-OCRv6 models. It runs the PP-OCRv6 detection and recognition ONNX checkpoints locally through RapidOCR (onnxruntime), so OCR happens inside the docling worker — no external service required.


GitHub  |  PyPI


PyPI version Python versions License CI Ruff Coverage

GPU acceleration is automatic when the docling accelerator device resolves to CUDA and onnxruntime-gpu is installed.

Installation

Pick exactly one onnxruntime extra — installing both the CPU and GPU wheels at once is unsupported and prevents the CUDA provider from registering:

pip install "docling-pp-ocrv6[cpu]"     # CPU (onnxruntime)
pip install "docling-pp-ocrv6[gpu]"     # CUDA (onnxruntime-gpu)

The detection and recognition ONNX models are downloaded from HuggingFace on first use and cached under docling's model cache. To pre-fetch them (e.g. at container build time):

from docling_pp_ocrv6 import PPOCRv6Model
PPOCRv6Model.download_models()

Usage

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling_pp_ocrv6 import PPOCRv6Options

pipeline_options = PdfPipelineOptions(do_ocr=True)
pipeline_options.ocr_options = PPOCRv6Options()

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("scanned.pdf")
print(result.document.export_to_markdown())

With docling-serve, request the engine by its kind:

{ "options": { "ocr": true, "ocr_engine": "pp-ocrv6" } }

(DOCLING_SERVE_ALLOW_EXTERNAL_PLUGINS=true must be set for the plugin to load.)

Configuration

All options are settable via PPOCRv6Options(...) or environment variables:

Option Env var Default
lang PPOCRV6_LANG de,en,fr,it,es,nl,pt,... (German-led European set)
text_score PPOCRV6_TEXT_SCORE 0.5
use_det / use_cls / use_rec PPOCRV6_USE_DET / _CLS / _REC true
det_repo PPOCRV6_DET_REPO PaddlePaddle/PP-OCRv6_medium_det_onnx
rec_repo PPOCRV6_REC_REPO PaddlePaddle/PP-OCRv6_medium_rec_onnx
det_model_path / rec_model_path / rec_keys_path / cls_model_path PPOCRV6_*_MODEL_PATH / _KEYS_PATH auto

The recognition character dictionary is extracted automatically from the recognition model's inference.yml. Angle classification uses RapidOCR's bundled cls model unless cls_model_path is set.

Development

make install   # uv sync + pre-commit
make check     # ruff lint + format check + ty type check
make test      # pytest with coverage

License

MIT

Metadata

Release files for docling-pp-ocrv6 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for docling-pp-ocrv6 0.2.0
File Size Uploaded
docling_pp_ocrv6-0.2.0.tar.gz 163.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for docling-pp-ocrv6 0.2.0
File Interpreter ABI Platform
docling_pp_ocrv6-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 176.5 kB

Release files / docling_pp_ocrv6-0.2.0.tar.gz

Download URL docling_pp_ocrv6-0.2.0.tar.gz
Size 163.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2b96b5725a8acb86f2e376e771bef4eaff7bcf86a511f5830599d85de318be7f
BLAKE2b-256 checksum
How to use checksums
3db283f8d8bfa1b193bbc4eba0d9a88869b9efdecb5fc12f6c5224ac75f1a277
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / docling_pp_ocrv6-0.2.0-py3-none-any.whl

Download URL docling_pp_ocrv6-0.2.0-py3-none-any.whl
Size 12.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aa389286a260f00b4a1f74872875a7fc32c8ca561e00cda41df2760417df2390
BLAKE2b-256 checksum
How to use checksums
a54044dc0ef8a1177a6d1b7595dbcc628b168671475a241ae2dc77268fd91d06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page