PP-OCRv6 tiny em ONNX, para o OCR local da extensão Epryx

Repositório de apoio da extensão Epryx (automação de processos judiciais no eproc). Reúne, num só lugar com revisão fixada, os modelos que o OCR local da extensão baixa na primeira leitura: detecção de texto, reconhecimento de texto e orientação de página do PP-OCRv6 tiny do PaddleOCR, já em ONNX, mais variantes em float16 geradas por nós para rodar em GPU (WebGPU) no ONNX Runtime Web.

Nada aqui é treinamento nosso: os pesos são os do PaddlePaddle. O trabalho próprio é a conversão para float16 e a troca da saída do reconhecimento por ArgMax (descritas abaixo).

Árvore

arquivo o que é grupo na extensão
dict.txt dicionário de 6.904 caracteres do reconhecimento (um por linha); as classes da saída são [blank] + dict + [espaço] = 6.906 base
det/config.json, rec/config.json, doc_ori/config.json parâmetros de pré e pós-processamento extraídos dos inference.yml (normalização, tamanhos, limiares) e descrição dos grafos base
det/fp32.onnx, rec/fp32.onnx, doc_ori/fp32.onnx modelos oficiais, sem alteração cpu-fp32 e gpu-fp32
det/fp16.onnx, doc_ori/fp16.onnx os mesmos modelos com pesos em float16 gpu-fp16
rec/fp16-argmax.onnx reconhecimento em float16, com ArgMax e ReduceMax no lugar da saída [N, T, 6906] gpu-fp16
rec/fp32-argmax.onnx reconhecimento fp32 com o mesmo ArgMax embutido gpu-fp32
LICENCA.txt Apache-2.0 e atribuição ao PaddlePaddle

Origem dos modelos oficiais

arquivo aqui repositório de origem revisão arquivo de origem sha256
det/fp32.onnx PaddlePaddle/PP-OCRv6_tiny_det_onnx 2ba1506c0380b8f0b03dd142459aac66d4421f6c inference.onnx 193bab7a04fca699a6c82e6abb5b81bdb28177f0abd4062552b04908dafb19f8
rec/fp32.onnx PaddlePaddle/PP-OCRv6_tiny_rec_onnx 2612ab37152ae0a677521bae4e1e3d4fb4cf7c30 inference.onnx 9ef676d6ed3c88256a2d92c640c44f25b0c40947e111b14b8be8f594091563e6
doc_ori/fp32.onnx PaddlePaddle/PP-LCNet_x1_0_doc_ori_onnx 7330ab7039123e46af2dc03154b9969aa412c61d inference.onnx af9a0a4f317ff0709ce752067807f819cb15d883f8ecad89f28df1c6ee2d9c92

Os três fp32.onnx são byte a byte iguais aos de origem (o sha256 acima confere com o lfs.oid de cada um). O doc_ori (PP-LCNet_x1_0_doc_ori) corrige páginas giradas em 0, 90, 180 ou 270 graus antes da detecção.

Como as variantes foram geradas

Script dev-tools/ppocr/modelos/variantes/gerar-variantes.py do repositório da Epryx (Python 3.11.9, onnx 1.23.2, onnxconverter-common 1.16.0, numpy 2.4.6):

  • float16: onnxconverter_common.float16.convert_float_to_float16(model, keep_io_types=True), com o bloqueio padrão do conversor (os 6 Resize da detecção ficam em float32, com Cast em volta). Entradas e saídas continuam float32.
  • ArgMax embutido (rec/*-argmax.onnx): a saída [N, T, 6906] é trocada por duas saídas indices (ArgMax, eixo 2) e probabilidades (ReduceMax, eixo 2), ambas [N, T]. A decodificação CTC gulosa é a mesma, conferida posição a posição contra a saída inteira; na GPU evita ler de volta 6.906 classes por passo.

Medição (corpus sintético de 115 páginas, máquina de desenvolvimento, ONNX Runtime Web 1.22): fp32 na CPU 2,2 % de CER; fp16 na GPU (WebGPU) 2,5 %, com lote de 16 linhas no reconhecimento. Variantes int8 não são publicadas aqui: no WebGPU travam e na CPU não aceleram.

Arquivos e checksums

arquivo bytes sha256
dict.txt 27156 c5cbe34ef40c29c4df07ed012bf96569cb69a2d2a01a07027e9f13cb832bd9cd
det/config.json 3160 27a81beab706aadcb1b47bec61828d753e652747b735740c6afaaed0179cfb89
rec/config.json 3312 3adef1348f21e3b19f957347ab7e53f1e2f885aef62aeda6e3747174821df31d
doc_ori/config.json 1883 70c257a76c458b618dcfe777a59533afc77d4be830e85a7b0611828fd5550e6a
det/fp32.onnx 1780590 193bab7a04fca699a6c82e6abb5b81bdb28177f0abd4062552b04908dafb19f8
rec/fp32.onnx 4462639 9ef676d6ed3c88256a2d92c640c44f25b0c40947e111b14b8be8f594091563e6
doc_ori/fp32.onnx 6788069 af9a0a4f317ff0709ce752067807f819cb15d883f8ecad89f28df1c6ee2d9c92
det/fp16.onnx 927431 ff8cc3111288b0b1c2c364a5c9c0f4187278a701c9874718ce6eccbc00e76a8f
rec/fp16-argmax.onnx 2253949 d380ba070dbb4e4c829560ab2e30e77fd68fc3c9f23a33e30dde620704d83ddc
doc_ori/fp16.onnx 3412464 c2261f45de9a2d341ce8da0e1d2fd9d58850c3da99378c29d052b1000ab6c068
rec/fp32-argmax.onnx 4462629 ae2cface95ec32daed954d76b042c6f7e8c6b831f69eddb8798b798555a51942

(O sha256 de README.md e LICENCA.txt não consta da lista porque eles descrevem os demais.)

Uso

Baixe os arquivos de um grupo e passe os bytes ao InferenceSession.create do ONNX Runtime Web; a extensão Epryx faz isso sozinha, conferindo o sha256 de cada arquivo contra o manifesto que vai no pacote, e recorre a um espelho próprio quando o Hugging Face está inacessível na rede do usuário.

Licença

Apache-2.0 (license: apache-2.0 no cabeçalho deste cartão). Atribuição ao PaddlePaddle e texto integral em LICENCA.txt. Este repositório não é do PaddlePaddle e não tem aval dele.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support