CV / PPOCR
PPOCR
Detects text polygons, rectifies each region, recognizes the text, and returns coordinates and confidence.
Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.
Primeros pasos
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest \
python web_service.py --platform rk3576 --model_dir /app/model --host 0.0.0.0 --port 8000API REST
Usa la API REST para ejecutar inferencia. Copia los comandos siguientes.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "ppocr-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "ppocr-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Detalles del modelo
PPOCR en reComputer RK3576 y RK3588
Este servicio OCR de extremo a extremo procede de reComputer-RK-CV. Detecta polígonos de texto, los ordena según el orden de lectura, rectifica cada recorte en perspectiva y reconoce cada línea.
Información del modelo
| Componente | Archivo |
|---|---|
| Detector de texto | model/ppocr_det.rknn |
| Reconocedor de texto | model/ppocr_rec.rknn |
| Diccionario de caracteres | model/ppocr_keys_v1.txt |
| Fuente de anotación | model/simfang.ttf |
| Salida | Texto, confianza, coordenadas del cuadrilátero, recortes y latencia |
PPOCR solo admite imágenes fijas. El servicio upstream no incluye deliberadamente controles de cámara, vídeo local ni análisis MP4.
Ejecutar el servicio
RK3576
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest \
python web_service.py --platform rk3576 --model_dir /app/model \
--host 0.0.0.0 --port 8000RK3588
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppocr:latest \
python web_service.py --platform rk3588 --model_dir /app/model \
--host 0.0.0.0 --port 8000Abra http://<BOARD_IP>:8000 o /docs.
Argumentos de inicio
| Argumento | Predeterminado | Descripción |
|---|---|---|
--platform | Obligatorio | rk3576 o rk3588. |
--model_dir | model | Modelos, diccionario, fuente e imagen de muestra. |
--image | Ninguno | Imagen fija analizada antes de iniciar el servidor. |
--output | Ninguno | Ruta JPG/PNG anotada para --image. |
--no_server | Desactivado | Salir después de procesar --image. |
--host / --port | 0.0.0.0 / 8000 | Dirección y puerto del servicio. |
Para analizar una imagen montada, guardar la anotación, imprimir JSON y salir:
python web_service.py --platform rk3576 --model_dir model \
--image /data/document.jpg --output /data/document_result.jpg --no_serverREST API
Endpoint: POST /api/models/ppocr/predict
curl -X POST "http://<BOARD_IP>:8000/api/models/ppocr/predict" \
-F "file=@document.jpg" -F "drop_score=0.5" \
-F "include_crops=false"Los campos opcionales son det_threshold, box_threshold, unclip_ratio, drop_score, max_results e include_crops. Otros endpoints ofrecen estado, configuración, último resultado estructurado, último JPEG anotado y documentación OpenAPI interactiva.
| Campo | Predeterminado | Descripción |
|---|---|---|
det_threshold | 0.3 | Umbral de detección del mapa de píxeles, de 0 a 1. |
box_threshold | 0.6 | Puntuación mínima de cuadro de texto DB. |
unclip_ratio | 1.5 | Relación de expansión del polígono, de 0.1 a 5. |
drop_score | 0.5 | Confianza mínima de reconocimiento incluida en el texto combinado. |
max_results | 100 | Número máximo de regiones enviadas al reconocimiento. |
include_crops | false | Incluir recortes JPEG base64 en las líneas de resultado. |
Campos importantes de respuesta:
{
"success": true,
"model": "ppocr",
"result": {
"text": "Recognized first line\nRecognized second line",
"lines": [
{
"index": 1,
"text": "Recognized first line",
"confidence": 0.9621,
"accepted": true,
"box": [[42, 31], [286, 29], [287, 72], [43, 74]]
}
],
"count": 2,
"timing_ms": {"detection": 54.2, "recognition": 71.4, "total": 129.8}
}
}La calidad de detección afecta directamente al reconocimiento. El texto muy pequeño, borroso, curvado, vertical, de bajo contraste o muy girado puede omitirse, y la heurística simple de orden de lectura puede no ser adecuada para documentos complejos de varias columnas. include_crops=true aumenta el tamaño de la respuesta y está pensado principalmente para el panel web de resultados. Detector y reconocedor son etapas del pipeline y deben ser compatibles con el diccionario de caracteres y la lógica de recorte en perspectiva.
Compilar localmente
docker build -f docker/rk3576/ppocr.dockerfile \
-t rk3576-ppocr:local src/rk3576_ppocr
docker build -f docker/rk3588/ppocr.dockerfile \
-t rk3588-ppocr:local src/rk3588_ppocrEntradas y salidas
Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.