CV / PPOCR
PPOCR
reComputer RK3588
Detección y reconocimiento de texto de extremo a extremo con RKNN PPOCR-Det y PPOCR-Rec.
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.
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 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
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:
# 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 docker2. 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
| 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.
Paso A: Descargar las imágenes
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:latestPaso B: Ejecutar con un clic
Para 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 8000Para RK3588:
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.
🔌 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:
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. |
Formato de respuesta (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
| 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_server🛠️ Guía para desarrolladores (recomendaciones de producción)
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.