Skip to content

ocr-rs (formerly rust-paddle-ocr)

Bibliothèque Rust qui fait tourner les modèles PaddleOCR v4, v5 et v6 de Baidu sur le runtime MNN, avec des backends CPU et GPU et une forte couverture CJK.

Avis de Sheela · Mis à jour

Voir sur GitHub Open source

Notre note

3.7/5

ocr-rs est la manière pratique d'amener la couverture chinoise et japonaise de PaddleOCR dans un binaire Rust, à condition qu'un seul mainteneur et un runtime C++ ne vous inquiètent pas.

Qu’est-ce que ocr-rs (formerly rust-paddle-ocr) ?

ocr-rs est une crate Rust pour faire tourner les modèles de détection et de reconnaissance de PaddleOCR hors de Python. Elle s'appelait rust-paddle-ocr jusqu'au 9 septembre 2026, quand le dépôt a été renommé ; l'ancienne URL redirige. Les modèles tournent sur MNN, le runtime d'inférence léger d'Alibaba, que la crate lie comme code natif, si bien qu'elle est Rust à l'extérieur plutôt que du Rust pur de bout en bout.

Elle prend en charge PP-OCRv4, PP-OCRv5 et les trois paliers PP-OCRv6 (tiny, small, medium). Les modèles v6 small et medium couvrent 50 langues, dont le chinois simplifié et traditionnel, le japonais et 46 langues à écriture latine ; le coréen, le cyrillique, l'arabe, le devanagari, le thaï, le grec, le tamoul et le télougou utilisent les modèles v5 spécifiques à l'écriture. Les extras incluent un mode robuste pour le texte horizontal et vertical mélangé et des boîtes englobantes par caractère pour la sélection dans les visionneuses d'images. Les backends GPU couvrent CUDA, Vulkan, Metal et OpenCL.

La crate est à la version 2.4.1 (5 août 2026) avec environ 85 000 téléchargements crates.io ; le dépôt a 339 étoiles sous Apache-2.0. Un seul développeur a écrit 100 de ses 103 commits. Un CLI et une API C vivent dans des dépôts séparés.

ocr-rs (formerly rust-paddle-ocr) vaut-il le coup ?

ocr-rs gagne sa place sur la couverture linguistique. Là où Ocrs ne lit que l'écriture latine, cette crate amène les modèles de PaddleOCR, qui lisent le chinois, le japonais et une douzaine d'autres écritures, dans une application Rust avec une API en trois lignes : chargez un détecteur, un reconnaisseur et une liste de caractères, puis appelez recognize.

Le détail d'ingénierie est meilleur que ses 339 étoiles ne le suggèrent. La crate distingue les paliers PP-OCRv6 plutôt que de livrer un seul modèle, refuse de retomber silencieusement sur le CPU quand un backend GPU demandé manque, et fait tourner une vérification de performance en CI qui échoue quand le temps médian du pipeline actuel dépasse de plus de 15 % celui du pipeline hérité sur le même runner. Le mode de texte pivoté sur activation relance la détection sur des copies à 90 et 270 degrés, ce qui compte pour le texte vertical japonais et chinois.

Les compromis sont dans l'empaquetage et les gens. MNN est du C++, si bien que la cross-compilation signifie des binaires MNN précompilés ou un build depuis les sources, et les builds Windows GNU ont besoin d'une chaîne d'outils MinGW. Convertir les modèles Paddle au format MNN passe par un script Python, si bien qu'une étape Python revient au moment du build même si la production n'en voit jamais une. Le service HTTP que le README mentionne n'est pas public, et presque chaque commit vient d'un seul mainteneur.

Face à un modèle vision-langage comme PaddleOCR-VL 1.6, c'est un lecteur au niveau de la ligne : il renvoie des boîtes de texte avec des scores de confiance, pas des tableaux Markdown ni l'ordre de lecture. Pour les reçus, la signalétique, les captures d'écran et les formulaires en écritures asiatiques sur du matériel modeste, c'est souvent le bon compromis, et pour des documents entiers, ce ne l'est pas.

Là où il fait la différence

  • Un développeur d'une appli de lecture de mangas et de captures d'écran japonaises

    Laisser les utilisateurs sélectionner et copier du texte depuis des images, y compris les lignes verticales

    Chargez PP-OCRv6 small, activez RotatedTextMode::Robust et utilisez l'API d'alignement de caractères pour mapper chaque glyphe à sa position pour la sélection. Gratuit ; le mode robuste ajoute des passes de détection supplémentaires sur les copies pivotées, si bien qu'il coûte de la latence par image.

  • Un ingénieur dans une entreprise de e-commerce transfrontalier qui traite les téléversements des vendeurs

    Lire le texte chinois et anglais sur les photos de produits et les factures à volume

    Faites tourner la crate dans un service Rust existant sur des workers CPU, ou le backend CUDA sur un nœud GPU pour le débit. Pas de frais par page ; le travail est de construire MNN pour la cible et d'épingler un palier de modèle.

Avant de vous engager

Mise en route
cargo add ocr-rs, placez les fichiers de modèles MNN sous models/ (convertissez les modèles d'inférence Paddle avec le script Python fourni), puis cargo build --release ; les binaires MNN précompilés sont choisis automatiquement là où ils sont disponibles.
Intégrations
Crate Rust ; API C dans paddle-ocr-capi et un CLI dans newbee-ocr-cli (dépôts séparés) ; GPU via les fonctions cuda, vulkan, metal et opencl.
Données et confidentialité
Tourne entièrement en local sans appels réseau à l'inférence. Code Apache-2.0 ; les modèles PaddleOCR sont Apache-2.0.
Coût à grande échelle
Les modèles de classe mobile sur CPU gardent le calcul bon marché ; les backends GPU sont optionnels. Pas d'édition payante ni de service hébergé.
Limites
Environ 6 issues ouvertes ; les démarrages à froid GPU ont besoin de réglage ou d'un cache de kernel ; le japonais n'est pas pris en charge par le palier PP-OCRv6 tiny ; le CUDA construit depuis les sources sur Windows exige MSVC.

Les points forts

  • PP-OCRv4, v5 et les trois paliers v6
  • Couvre les écritures CJK, arabe, cyrillique, indiennes et thaïe
  • Backends CUDA, Vulkan, Metal et OpenCL avec des erreurs explicites
  • Mode texte vertical et boîtes par caractère

Les points faibles

  • Lie le MNN C++ ; pas du Rust pur
  • La conversion de modèle a besoin d'un script Python
  • Effectivement un seul mainteneur
  • Texte et boîtes de ligne uniquement, pas de structure de document

Idéal pour

Les développeurs Rust qui ont besoin d'OCR non latin, surtout chinois et japonais, à l'intérieur d'une application native.

Alternatives à ocr-rs (formerly rust-paddle-ocr)

ocr-rs (formerly rust-paddle-ocr) : questions fréquentes

ocr-rs (formerly rust-paddle-ocr) vaut-il le coup ?
ocr-rs est la manière pratique d'amener la couverture chinoise et japonaise de PaddleOCR dans un binaire Rust, à condition qu'un seul mainteneur et un runtime C++ ne vous inquiètent pas. Nous lui donnons 3.7 sur 5.
Combien coûte ocr-rs (formerly rust-paddle-ocr) ?
Gratuit sous Apache-2.0 ; les modèles PaddleOCR sont Apache-2.0 de Baidu.
Quels sont les inconvénients de ocr-rs (formerly rust-paddle-ocr) ?
Lie le MNN C++ ; pas du Rust pur; la conversion de modèle a besoin d'un script Python; effectivement un seul mainteneur; texte et boîtes de ligne uniquement, pas de structure de document.
À qui s’adresse ocr-rs (formerly rust-paddle-ocr) ?
Les développeurs Rust qui ont besoin d'OCR non latin, surtout chinois et japonais, à l'intérieur d'une application native.
Combien coûte ocr-rs (formerly rust-paddle-ocr) pour une équipe ou en production ?
Les modèles de classe mobile sur CPU gardent le calcul bon marché ; les backends GPU sont optionnels. Pas d'édition payante ni de service hébergé.
ocr-rs (formerly rust-paddle-ocr) est-il sûr pour les données de l’entreprise ?
Tourne entièrement en local sans appels réseau à l'inférence. Code Apache-2.0 ; les modèles PaddleOCR sont Apache-2.0.
Quelles sont les meilleures alternatives à ocr-rs (formerly rust-paddle-ocr) ?
Les alternatives les plus proches que nous avons testées sont Ocrs, Xberg (formerly Kreuzberg), deepseek-ocr.rs et Docling.

Réponses vérifiées le 26 oct. 2026.