Skip to content
imaged

OCR

PaddleOCR v5 server

PP-OCRv5 with the 88 MB server detector for harder pages.

Apache-2.0
Explore model

About this model

Same orientation classifier and recognizer as the mobile variant, paired with the 88 MB DBNet server detector. The server detector finds smaller, fainter, and lower-contrast text the mobile detector misses.

Use this for offline batch OCR: document understanding, invoice processing, and archival scans. CPU warm latency on a 900x360 fixture sits near 2 seconds, so this is not a live-feed model.

What you can build

  • Batch-OCR a backlog of scanned invoices overnight.
  • Extract every line of small print from a contract photo.
  • Process a folder of scanned books for a search index.
  • Re-run pages where the mobile detector returned too few lines.

Variants & downloads

Choose the build for your app

Model files are being prepared.

Explore the model’s examples, source links, and integration notes while download variants are added.

Example inference

Input
A 3-line synthetic English test page with text and digits.
Output
The same page with detected lines boxed and read.

Performance

Results depend on the device, runtime, and test conditions. Each measurement keeps its own context.

M1 Max, macOS 15, ONNX Runtime 1.17

See original catalog hardware notes · CPU

2.05 s

Warm inference

Catalog reference · variant unspecifiedCold start (ms): 2057.75

Reference result from the existing catalog; conversion variant and measurement date were not recorded.

RTX 2060, Ubuntu 24.04, ONNX Runtime 1.24.3

See original catalog hardware notes · CUDA

123.6 ms

Warm inference

Catalog reference · variant unspecified

Reference result from the existing catalog; conversion variant and measurement date were not recorded.

Integration examples

Vision SDK integration

cpp

#include "imaged/sdk.hpp"
#include "imaged/families/paddleocr/paddleocr_family.hpp"

imaged::SDK::AI ai;
auto& config = ai.getOptions();
config.set("paddleocr.detection.model", "weights/detection_v5-large.onnx");
config.set("paddleocr.classification.model", "weights/classification.onnx");
config.set("paddleocr.recognition.model", "weights/recognition_v5.onnx");
config.set("paddleocr.recognition.dict", "weights/ppocrv5_dict.txt");

imaged::SDK::PaddleOcrFamily family;
family.load(config);

imaged::SDK::Image image;
image.load("scan.jpg");

auto result = std::get<imaged::SDK::OcrResult>(family.run({&image}));