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.