Skip to content

ocr-rs (formerly rust-paddle-ocr)

Biblioteca de Rust que ejecuta los modelos PaddleOCR v4, v5 y v6 de Baidu sobre el runtime MNN, con backends de CPU y GPU y una buena cobertura de CJK.

Reseña de Sheela · Actualizado

Ver en GitHub Código abierto

Nuestra nota

3.7/5

ocr-rs es la forma práctica de llevar la cobertura de chino y japonés de PaddleOCR a un binario de Rust, siempre que no te preocupen un único mantenedor y un runtime en C++.

¿Qué es ocr-rs (formerly rust-paddle-ocr)?

ocr-rs es un crate de Rust para ejecutar los modelos de detección y reconocimiento de PaddleOCR fuera de Python. Se llamaba rust-paddle-ocr hasta el 9 de septiembre de 2026, cuando se renombró el repositorio; la URL antigua redirige. Los modelos se ejecutan sobre MNN, el runtime de inferencia ligero de Alibaba, que el crate enlaza como código nativo, así que es Rust por fuera y no Rust puro de principio a fin.

Admite PP-OCRv4, PP-OCRv5 y los tres niveles de PP-OCRv6 (tiny, small, medium). Los modelos v6 small y medium cubren 50 idiomas, entre ellos chino simplificado y tradicional, japonés y 46 idiomas de escritura latina; el coreano, el cirílico, el árabe, el devanagari, el tailandés, el griego, el tamil y el telugu usan los modelos v5 específicos de cada escritura. Entre los extras hay un modo robusto para texto mixto horizontal y vertical y cuadros delimitadores por carácter para la selección en visores de imágenes. Los backends de GPU cubren CUDA, Vulkan, Metal y OpenCL.

El crate va por la versión 2.4.1 (5 de agosto de 2026) con unas 85.000 descargas en crates.io; el repositorio tiene 339 estrellas bajo Apache-2.0. Un solo desarrollador escribió 100 de sus 103 commits. Una CLI y una API en C están en repositorios aparte.

¿Merece la pena ocr-rs (formerly rust-paddle-ocr)?

ocr-rs se gana su sitio por la cobertura de idiomas. Donde Ocrs solo lee escritura latina, este crate lleva los modelos de PaddleOCR, que leen chino, japonés y una docena más de escrituras, a una aplicación de Rust con una API de tres líneas: cargar un detector, un reconocedor y una lista de caracteres, y llamar a recognize.

El detalle de ingeniería es mejor de lo que sugieren sus 339 estrellas. El crate distingue entre los niveles de PP-OCRv6 en lugar de incluir un solo modelo, se niega a volver en silencio a la CPU cuando falta un backend de GPU solicitado, y ejecuta en CI una comprobación de rendimiento que falla cuando el tiempo mediano del pipeline actual supera en más de un 15% al del pipeline antiguo en la misma máquina. El modo opcional de texto rotado repite la detección sobre copias giradas 90 y 270 grados, lo que importa para el texto vertical en japonés y chino.

Las contrapartidas están en el empaquetado y en las personas. MNN es C++, así que la compilación cruzada implica binarios precompilados de MNN o compilarlo desde el código fuente, y las compilaciones GNU para Windows necesitan una toolchain de MinGW. Convertir los modelos de Paddle al formato MNN pasa por un script de Python, así que un paso en Python vuelve en tiempo de compilación aunque producción nunca lo vea. El servicio HTTP que menciona el README no es público, y casi todos los commits vienen de un único mantenedor.

Frente a un modelo de visión y lenguaje como PaddleOCR-VL 1.6, este es un lector a nivel de línea: devuelve cuadros de texto con puntuaciones de confianza, no tablas en Markdown ni orden de lectura. Para tickets, carteles, capturas de pantalla y formularios en escrituras asiáticas en hardware modesto suele ser la elección correcta, y para documentos completos no lo es.

Dónde se gana su sitio

  • El desarrollador de una app lectora de manga y capturas de pantalla en japonés

    Permitir a los usuarios seleccionar y copiar texto de imágenes, incluidas las líneas verticales

    Cargar PP-OCRv6 small, activar RotatedTextMode::Robust y usar la API de alineación de caracteres para asignar a cada glifo su posición para la selección. Gratis; el modo robusto añade pasadas de detección sobre copias rotadas, así que cuesta latencia por imagen.

  • Un ingeniero de una empresa de comercio electrónico transfronterizo que procesa las subidas de los vendedores

    Leer a gran volumen texto en chino e inglés de fotos de productos y facturas

    Ejecutar el crate dentro de un servicio de Rust existente en workers de CPU, o el backend de CUDA en un nodo con GPU para más rendimiento. Sin tarifas por página; el trabajo es compilar MNN para la plataforma de destino y fijar un nivel de modelo.

Antes de decidirte

Puesta en marcha
cargo add ocr-rs, colocar los archivos de modelo MNN en models/ (convertir los modelos de inferencia de Paddle con el script de Python incluido) y después cargo build --release; los binarios precompilados de MNN se eligen automáticamente cuando están disponibles.
Integraciones
Crate de Rust; API en C en paddle-ocr-capi y una CLI en newbee-ocr-cli (repositorios aparte); GPU mediante las features cuda, vulkan, metal y opencl.
Datos y privacidad
Se ejecuta totalmente en local, sin llamadas de red durante la inferencia. Código Apache-2.0; los modelos PaddleOCR son Apache-2.0.
Coste a escala
Los modelos de clase móvil en CPU mantienen barato el cómputo; los backends de GPU son opcionales. Sin edición de pago ni servicio alojado.
Límites
Unas 6 incidencias abiertas; los arranques en frío en GPU requieren ajuste o una caché de kernels; el nivel tiny de PP-OCRv6 no admite japonés; CUDA compilado desde el código fuente en Windows requiere MSVC.

Lo bueno

  • PP-OCRv4, v5 y los tres niveles de v6
  • Cubre escrituras CJK, árabe, cirílica, índicas y tailandesa
  • Backends de CUDA, Vulkan, Metal y OpenCL con errores explícitos
  • Modo de texto vertical y cuadros por carácter

Lo malo

  • Enlaza MNN en C++; no es Rust puro
  • La conversión de modelos necesita un script de Python
  • En la práctica, un solo mantenedor
  • Solo texto por líneas y cuadros, sin estructura de documento

Ideal para

Desarrolladores de Rust que necesitan OCR de escrituras no latinas, sobre todo chino y japonés, dentro de una aplicación nativa.

Alternativas a ocr-rs (formerly rust-paddle-ocr)

ocr-rs (formerly rust-paddle-ocr): preguntas frecuentes

¿Merece la pena ocr-rs (formerly rust-paddle-ocr)?
ocr-rs es la forma práctica de llevar la cobertura de chino y japonés de PaddleOCR a un binario de Rust, siempre que no te preocupen un único mantenedor y un runtime en C++. Le damos un 3.7 sobre 5.
¿Cuánto cuesta ocr-rs (formerly rust-paddle-ocr)?
Gratuito bajo Apache-2.0; los modelos PaddleOCR de Baidu son Apache-2.0.
¿Qué inconvenientes tiene ocr-rs (formerly rust-paddle-ocr)?
Enlaza MNN en C++; no es Rust puro; la conversión de modelos necesita un script de Python; en la práctica, un solo mantenedor; solo texto por líneas y cuadros, sin estructura de documento.
¿Para quién es ocr-rs (formerly rust-paddle-ocr)?
Desarrolladores de Rust que necesitan OCR de escrituras no latinas, sobre todo chino y japonés, dentro de una aplicación nativa.
¿Cuánto cuesta ocr-rs (formerly rust-paddle-ocr) para un equipo o en producción?
Los modelos de clase móvil en CPU mantienen barato el cómputo; los backends de GPU son opcionales. Sin edición de pago ni servicio alojado.
¿Es ocr-rs (formerly rust-paddle-ocr) seguro para los datos de la empresa?
Se ejecuta totalmente en local, sin llamadas de red durante la inferencia. Código Apache-2.0; los modelos PaddleOCR son Apache-2.0.
¿Cuáles son las mejores alternativas a ocr-rs (formerly rust-paddle-ocr)?
Las alternativas más cercanas que hemos analizado son Ocrs, Xberg (formerly Kreuzberg), deepseek-ocr.rs y Docling.

Respuestas comprobadas el 26 oct 2026.