OCR
PaddleOCR v5 server
PP-OCRv5 with the 88 MB server detector for harder pages.
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 appModel files are being prepared.
Explore the model’s examples, source links, and integration notes while download variants are added.
Example inference
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
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
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}));