CV / PPOCR

PPOCR

reComputer RK3588

Detección y reconocimiento de texto de extremo a extremo con RKNN PPOCR-Det y PPOCR-Rec.

35 descargas
Precisión
RKNN

Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.

Primeros pasos

Armbian 26.8.7 Gnome o posterior con OTA overlayroot: Configura el almacenamiento de Docker antes de ejecutar contenedores para evitar errores de montaje de overlay.

Desplegar
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 8000

API REST

Usa la API REST para ejecutar inferencia. Copia los comandos siguientes.

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "ppocr-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
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

Armbian 26.8.7 Gnome o posterior con OTA overlayroot: Configura el almacenamiento de Docker antes de ejecutar contenedores para evitar errores de montaje de overlay.

Inicio rápido

1. Instalar Docker

Ejecute los siguientes comandos en la placa de desarrollo para instalar Docker:

bash
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyun
sudo sh get-docker.sh --mirror Aliyun
# systemd
sudo systemctl enable docker
sudo systemctl start docker

2. Ejecutar el proyecto (un comando y vista previa de doble modo)

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

ComponenteArchivo
Detector de textomodel/ppocr_det.rknn
Reconocedor de textomodel/ppocr_rec.rknn
Diccionario de caracteresmodel/ppocr_keys_v1.txt
Fuente de anotaciónmodel/simfang.ttf
SalidaTexto, 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.

Paso A: Descargar las imágenes

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppocr:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest

Paso B: Ejecutar con un clic

Para RK3576:

bash
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 8000

Para RK3588:

bash
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 8000

Abra http://<BOARD_IP>:8000 o /docs.


🔌 Documentación de la API

1. Interfaz OCR (Predict)

Endpoint: POST /api/models/ppocr/predict

Parámetros de solicitud (Multipart/Form-Data):

Suba file; puede usar det_threshold, box_threshold, unclip_ratio, drop_score, max_results e include_crops.

Ejemplos de uso:

bash
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.

CampoPredeterminadoDescripción
det_threshold0.3Umbral de detección del mapa de píxeles, de 0 a 1.
box_threshold0.6Puntuación mínima de cuadro de texto DB.
unclip_ratio1.5Relación de expansión del polígono, de 0.1 a 5.
drop_score0.5Confianza mínima de reconocimiento incluida en el texto combinado.
max_results100Número máximo de regiones enviadas al reconocimiento.
include_cropsfalseIncluir recortes JPEG base64 en las líneas de resultado.

Formato de respuesta (JSON):

json
{
  "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.

2. Interfaz de configuración del sistema (Config)

GET /api/config / POST /api/config.

3. Argumentos de línea de comandos

ArgumentoPredeterminadoDescripción
--platformObligatoriork3576 o rk3588.
--model_dirmodelModelos, diccionario, fuente e imagen de muestra.
--imageNingunoImagen fija analizada antes de iniciar el servidor.
--outputNingunoRuta JPG/PNG anotada para --image.
--no_serverDesactivadoSalir después de procesar --image.
--host / --port0.0.0.0 / 8000Dirección y puerto del servicio.

Para analizar una imagen montada, guardar la anotación, imprimir JSON y salir:

bash
python web_service.py --platform rk3576 --model_dir model \
  --image /data/document.jpg --output /data/document_result.jpg --no_server

🛠️ Guía para desarrolladores (recomendaciones de producción)

Compilar localmente

bash
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_ppocr

Entradas y salidas

Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.