--- license: apache-2.0 tags: - libreyolo - ocr - text-detection - text-recognition - pp-ocr --- # LibrePPOCRl-ocr PP-OCRv5 server tier (quality tier) converted to the LibreYOLO checkpoint format: one composite `.pt` bundling the DB text detector (`det.*`) and the CTC text recognizer (`rec.*`) plus the PP-OCRv5 recognition dictionary as `charset` metadata. Recognition covers Simplified Chinese, Traditional Chinese, English, Japanese, and Chinese pinyin with one dictionary and one model. ```python from libreyolo import LibreYOLO model = LibreYOLO("LibrePPOCRl-ocr.pt") r = model("receipt.jpg") for poly, text, conf in zip(r.ocr.polygons, r.ocr.texts, r.ocr.conf): print(text, float(conf)) ``` ## Provenance Converted with `weights/convert_ppocr_weights.py` from the official Apache-2.0 PP-OCRv5 training checkpoints released by the [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) project (paper: [PaddleOCR 3.0 Technical Report](https://arxiv.org/abs/2507.05595)): | Upstream checkpoint | SHA-256 | |---|---| | `PP-OCRv5_server_det_pretrained.pdparams` | `2802f7d4748ea592819ae4550c195c5bdb43755dfdb5ebd25e01bb4d885aebc9` | | `PP-OCRv5_server_rec_pretrained.pdparams` | `8ce5dfc1294af6ee680d562841a9909257d6a9a9242387c2e8dc50ea8f647143` | This file: `LibrePPOCRl-ocr.pt`, SHA-256 `6a58b6a2af947a40d48e50c2aa2f050b300d10367bdba5840993b900bf59358e`. The conversion is a name-mapped metadata wrap (batch-norm buffer renames, Linear transposes, `det.`/`rec.` namespacing); learned parameters are unchanged. Stage parity vs the official PP-OCRv5 inference graphs on identical input tensors: detection maps match to <= 1e-4 and recognition probabilities to <= 6e-5 with identical argmax. Code and weights are used under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0). Copyright (c) 2020 PaddlePaddle Authors.