PP-OCRv5
O PP-OCRv5 é o pipeline de detecção e reconhecimento de texto do PaddleOCR: um detector de binarização diferenciável localiza os quadriláteros de texto e um reconhecedor SVTR/CTC os lê. O LibreYOLO o porta para PyTorch em dois níveis.
- Tarefas
- ocr
- Tamanhos
- t, l at 960 px
- Instalação
pip install libreyolo- Nível de suporte
- Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
- Origem
- PaddleOCR (PP-OCRv5) por PaddlePaddle Authors, Apache-2.0. Artigo, código-fonte
- Licenças
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalação
O PP-OCRv5 não precisa de nenhum extra além do pacote base.
pip install libreyoloPredição
Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache localmente.
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) # polígonos (N, 4, 2) em ordem de leitura: superior-esquerdo,# superior-direito, inferior-direito, inferior-esquerdo. Os# quadriláteros de detecção são polígonos de verdade (texto# rotacionado), então preenchem result.ocr, não result.boxes.print(result.ocr.data.shape)print(result.ocr.det_conf)Cada checkpoint reúne as duas etapas, detecção e reconhecimento, em um único
arquivo .pt, com o charset de reconhecimento e os padrões do pipeline
guardados nos metadados do checkpoint. O reconhecedor lê chinês simplificado e
tradicional, inglês, japonês e pinyin com um único dicionário. result.ocr é
um payload OCRRegions: .data guarda os polígonos de quatro pontos,
.texts as transcrições, .conf a pontuação de reconhecimento de cada região
e .det_conf a pontuação de detecção. Fontes com várias imagens rodam
sequencialmente: o pipeline de duas etapas não agrupa em batch entre imagens.
Veja predição para fontes, streaming e tratamento dos
resultados.
Variantes
Dois níveis: t, construído sobre os backbones mais leves
PP-LCNetV3/PP-OCRv5_mobile para uso em CPU, e l, construído sobre os
backbones de servidor PP-HGNetV2 para maior acurácia. Os dois níveis rodam a
detecção com um limite fixo do lado maior e reconhecem os recortes em batches;
rec_batch controla quantos recortes passam pelo reconhecedor a cada forward
pass.
Validação
val() mede o pipeline contra um diretório de imagens mais um arquivo
labels/<split>.jsonl, ou o YAML de dataset equivalente, em que cada label
lista os polígonos das regiões de texto de cada imagem e suas transcrições.
Ele reporta o hmean de detecção (precisão/recall/F1 com correspondência por
IoU), o F1 end-to-end (o hmean mais uma correspondência exata da transcrição
depois da normalização, a métrica de fitness do checkpoint) e o 1-NED, a
distância de edição normalizada média sobre os pares correspondentes.
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"]) # métrica principalprint(metrics["metrics/rec_1-NED"])libreyolo val model=LibrePPOCRl-ocr.pt data=my-datasetExportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ocr | ocr to ONNX: incompatível | ocr to TorchScript: incompatível | ocr to ExecuTorch: incompatível | ocr to TensorRT: incompatível | ocr to OpenVINO: incompatível | ocr to Paddle: incompatível | ocr to MNN: incompatível | ocr to RKNN: incompatível | ocr to ncnn: incompatível | ocr to TFLite: incompatível | ocr to CoreML: incompatível | ocr to Core AI: incompatível |
O PP-OCRv5 é um pipeline de duas redes, detecção e reconhecimento andando
juntos, não um único grafo rastreável, e a exportação não está implementada
para ele: nenhum formato é suportado ainda. Faça fine-tuning direto no código
de treinamento upstream sob Apache-2.0 e converta o resultado com
weights/convert_ppocr_weights.py se você precisar de um checkpoint fora
desse formato.
Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| ocr | ||
| LibrePPOCRt-ocr.pt | apache-2.0 | |
| LibrePPOCRl-ocr.pt | apache-2.0 | |
Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.
Licenciamento
Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.
Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.
- Trabalho original
- PaddleOCR (PP-OCRv5), PaddlePaddle Authors
- Licença original
- Apache-2.0
- Código-fonte original
- github.com/PaddlePaddle/PaddleOCR
- Código do LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicado em huggingface.co/LibreYOLO
- Interpretação
- 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.
Citação
@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},
}Copiado do bloco de citação dos autores em github.com/PaddlePaddle/PaddleOCR#citation.