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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| docling_pp_ocrv6-0.2.0.tar.gz | 163.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|