PP-OCRv5
PP-OCRv5 — пайплайн детекции и распознавания текста из PaddleOCR: детектор с дифференцируемой бинаризацией находит четырёхугольники с текстом, а распознаватель SVTR/CTC их читает. LibreYOLO портирует его на PyTorch в двух уровнях.
- Задачи
- ocr
- Размеры
- t, l at 960 px
- Установка
pip install libreyolo- Уровень поддержки
- Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
- Исходный проект
- PaddleOCR (PP-OCRv5) от PaddlePaddle Authors, Apache-2.0. Статья, исходный код
- Лицензии
- Код: Apache-2.0, веса: Apache-2.0. Коммерческое использование
Установка
PP-OCRv5 не требует ничего сверх базового пакета.
pip install libreyoloПредсказание
Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePPOCRl-ocr.pt")result = model(SAMPLE_IMAGE, save=True) for text, conf in zip(result.ocr.texts, result.ocr.conf): print(text, float(conf))libreyolo predict model=LibrePPOCRl-ocr.pt source=receipt.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibrePPOCRl-ocr.pt")result = model(SAMPLE_IMAGE) # полигоны (N, 4, 2) в порядке чтения: верхний левый, верхний правый,# нижний правый, нижний левый. Четырёхугольники детекции — настоящие# полигоны (повёрнутый текст), поэтому они попадают в result.ocr,# а не в result.boxes.print(result.ocr.data.shape)print(result.ocr.det_conf)Каждый чекпойнт упаковывает обе стадии, детекцию и распознавание, в один файл
.pt, а набор символов распознавателя и значения пайплайна по умолчанию лежат
в метаданных чекпойнта. Распознаватель читает упрощённый и традиционный
китайский, английский, японский и пиньинь по одному словарю. result.ocr — это
структура OCRRegions: в .data лежат четырёхточечные полигоны, в .texts —
распознанный текст, в .conf — оценка уверенности распознавания по каждой
области, а в .det_conf — оценка детекции. Источники из нескольких изображений
обрабатываются последовательно: двухстадийный пайплайн не собирает батчи из
разных изображений. Об источниках, стриминге и обработке результатов — в разделе
предсказание.
Варианты
Два уровня: t на более лёгких бэкбонах PP-LCNetV3/PP-OCRv5_mobile для работы
на CPU и l на серверных бэкбонах PP-HGNetV2 для более высокой точности. Оба
уровня запускают детекцию с фиксированным ограничением по длинной стороне и
распознают вырезанные фрагменты батчами; rec_batch задаёт, сколько фрагментов
проходит через распознаватель за один прямой проход.
Валидация
val() прогоняет пайплайн по каталогу изображений и файлу
labels/<split>.jsonl либо по эквивалентному YAML датасета, где каждая метка
перечисляет полигоны текстовых областей изображения и их текст. Считаются hmean
детекции (точность/полнота/F1 при сопоставлении по IoU), сквозная F1 (тот же
hmean плюс точное совпадение текста после нормализации — метрика fitness
чекпойнта) и 1-NED, среднее нормализованное расстояние редактирования по
сопоставленным парам.
from libreyolo import LibreYOLO model = LibreYOLO("LibrePPOCRl-ocr.pt")metrics = model.val(data="my-dataset") print(metrics["metrics/det_hmean"])print(metrics["metrics/e2e_f1"]) # главная метрикаprint(metrics["metrics/rec_1-NED"])libreyolo val model=LibrePPOCRl-ocr.pt data=my-datasetЭкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ocr | ocr to ONNX: не поддерживается | ocr to TorchScript: не поддерживается | ocr to ExecuTorch: не поддерживается | ocr to TensorRT: не поддерживается | ocr to OpenVINO: не поддерживается | ocr to Paddle: не поддерживается | ocr to MNN: не поддерживается | ocr to RKNN: не поддерживается | ocr to ncnn: не поддерживается | ocr to TFLite: не поддерживается | ocr to CoreML: не поддерживается | ocr to Core AI: не поддерживается |
PP-OCRv5 — пайплайн из двух сетей, детекция и распознавание работают вместе, а
не как один трассируемый граф, и экспорт для него не реализован: пока не
поддерживается ни один формат. Если вам нужен чекпойнт вне этого формата,
дообучите напрямую оригинальный код обучения под Apache-2.0 и сконвертируйте
результат скриптом weights/convert_ppocr_weights.py.
Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| ocr | ||
| LibrePPOCRt-ocr.pt | apache-2.0 | |
| LibrePPOCRl-ocr.pt | apache-2.0 | |
Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.
Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- PaddleOCR (PP-OCRv5), PaddlePaddle Authors
- Лицензия исходного проекта
- Apache-2.0
- Исходный код проекта
- github.com/PaddlePaddle/PaddleOCR
- Код LibreYOLO
- MIT
- Веса
- Apache-2.0, повторно опубликованы на huggingface.co/LibreYOLO
- Толкование
- Apache-2.0 is a permissive license: the architecture, the officially released PP-OCRv5 checkpoints this port converts, and LibreYOLO's own PyTorch port may all be used, modified and redistributed, including commercially, provided the license text and attribution notices travel with any copy. It grants a patent license and places no obligation on your own application code.
Цитирование
@misc{cui2025paddleocr30technicalreport,
title={PaddleOCR 3.0 Technical Report},
author={Cheng Cui and Ting Sun and Manhui Lin and Tingquan Gao and Yubo Zhang and Jiaxuan Liu and Xueqing Wang and Zelun Zhang and Changda Zhou and Hongen Liu and Yue Zhang and Wenyu Lv and Kui Huang and Yichao Zhang and Jing Zhang and Jun Zhang and Yi Liu and Dianhai Yu and Yanjun Ma},
year={2025},
eprint={2507.05595},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2507.05595},
}Скопировано из блока цитирования авторов на странице github.com/PaddlePaddle/PaddleOCR#citation.