ocr-rs (formerly rust-paddle-ocr)とは?
ocr-rs は、PaddleOCR の検出モデルと認識モデルを Python の外で動かすための Rust クレートです。2026年9月9日にリポジトリ名が変わるまでは rust-paddle-ocr という名前で、旧 URL はリ ダイレクトされます。モデルは Alibaba の軽量推論ランタイム MNN で動きます。クレートは MNN をネイティブコードとしてリンクするため、外側は Rust でも、全体が純粋な Rust というわけではありません。
PP-OCRv4、PP-OCRv5 と、PP-OCRv6 の三つのティア(tiny、small、medium)に対応しています。v6 の small と medium は、簡体字と繁体字の中国語、日本語、46 のラテン文字言語を含む 50 言語をカバーします。韓国語、キリル文字、アラビア文字、デーヴァナーガリー、タイ語、ギリシャ語、タミル語、テルグ語は v5 の文字種別モデルを使います。ほかにも、横書きと縦書きが混在するテキスト向けの robust モード、画像ビューアーでの選択に使える文字ごとのバウンディングボックスがあります。GPU バックエンドは CUDA、Vulkan、Metal、OpenCL に対応しています。
クレートのバージョンは 2.4.1(2026年8月5日)で、crates.io でのダウンロード数は約 85,000 です。リポジトリは Apache-2.0 で、スター数は 339 です。103 件のコミットのうち 100 件を一人の開発者が書いています。CLI と C API は別のリポジトリにあります。
ocr-rs (formerly rust-paddle-ocr)は使う価値があるか?
ocr-rs の存在価値は言語の対応範囲にあります。Ocrs がラテン文字しか読めないのに対し、このクレートは中国語、日本語のほか十数種類の文字を読める PaddleOCR のモデルを、3 行の API で Rust アプリケーションに持ち込めます。検出器、認識器、文字リストを読み込み、recognize を呼ぶだけです。
エンジニアリングの細部は、339 というスター数から想像するより優れています。モデルを一つだけ同梱するのではなく PP-OCRv6 のテ ィアを区別し、要求した GPU バックエンドがないときに黙って CPU に切り替えることはしません。CI ではパフォーマンスチェックを実行し、同じランナー上で現行パイプラインの実行時間の中央値が旧パイプラインを 15% より多く上回ると失敗します。オプトインの回転テキストモードは、90 度と 270 度に回転したコピーで検出をやり直します。日本語や中国語の縦書きでは、これが効いてきます。
トレードオフはパッケージングと人の面にあります。MNN は C++ なので、クロスコンパイルにはビルド済みの MNN バイナリかソースからのビルドが必要で、Windows の GNU ビルドには MinGW ツールチェーンが要ります。Paddle のモデルを MNN 形式に変換するには Python スクリプトを使うため、本番環境で Python を使わなくても、ビルド時には Python の手順が戻ってきます。README が触れている HTTP サービスは公開されておらず、ほぼすべてのコミットは一人のメンテナーによるものです。
PaddleOCR-VL 1.6 のような視覚言語モデルと比べると、これは行単位の読み取り器です。返すのは信頼度スコア付きのテキストボックスで、Markdown の表や読み順ではありません。控えめなハードウェアで、アジアの文字のレシート、看板、スクリーンショット、フォームを読むなら、多くの場合これが適切な選択です。文書全体を扱うなら、そうではありません。
真価を発揮する場面
日本のマンガやスクリーンショットを読むアプリの開発者
縦書きの行も含め、画像からテキストを選択してコピーできるようにする
PP-OCRv6 small を読み込み、RotatedTextMode::Robust を有効にし、文字位置合わせの API で各グリフを選択用の位置に対応付けます。無料ですが、robust モードは回転したコピーで検出を追加で行うため、画像ごとの遅延が増えます。
出品者のアップロードを処理する越境 EC 企業のエンジニア
商品写真や請求書の中国語と英語のテキストを大量に読み取る
既存の Rust サービスの中で CPU ワーカー上でクレートを動かすか、スループットが必要なら GPU ノードで CUDA バックエンドを使います。ページごとの料金はかかりません。手間は対象環境向けの MNN のビルドと、モデルのティアの固定です。
導入前に確認すること
- 導入
- cargo add ocr-rs を実行し、MNN のモデルファイルを models/ の下に置き(Paddle の推論モデルは同梱の Python スクリプトで変換)、cargo build --release を実行します。ビルド済みの MNN バイナリがある環境では自動的に選ばれます。
- 連携
- Rust クレート、paddle-ocr-capi の C API、newbee-ocr-cli の CLI(い ずれも別リポジトリ)があります。GPU は cuda、vulkan、metal、opencl の feature で使えます。
- データとプライバシー
- 完全にローカルで動作し、推論時にネットワーク呼び出しはありません。コードは Apache-2.0 で、PaddleOCR のモデルも Apache-2.0 です。
- 大規模利用時のコスト
- モバイル向けのモデルを CPU で動かすため、計算コストは低く抑えられます。GPU バックエンドは任意です。有料版やホスト型サービスはありません。
- 制限
- 未解決の issue は約 6 件です。GPU のコールドスタートにはチューニングかカーネルキャッシュが必要です。PP-OCRv6 の tiny ティアは日本語に対応していません。Windows でソースから CUDA 版をビルドするには MSVC が必要です。
良い点
- PP-OCRv4、v5、v6 の三つのティアすべてに対応
- CJK、アラビア文字、キリル文字、インド系文字、タイ文字をカバー
- CUDA、Vulkan、Metal、OpenCL のバックエンドを備え、エラーが明示的
- 縦書きモードと文字ごとのボックス
気になる点
- C++ の MNN をリンクしており、純粋な Rust ではない
- モデルの変換に Python スクリプトが必要
- 実質的にメンテナーが一人
- 行のテキストとボックスのみで、文書構造は出力しない
おすすめの人
ネイティブアプリケーションの中で、ラテン文字以外、特に中国語と日本語の OCR を必要とする Rust 開発者に向いています。
ocr-rs (formerly rust-paddle-ocr)の代替
ocr-rs (formerly rust-paddle-ocr):よくある質問
- ocr-rs (formerly rust-paddle-ocr)は使う価値があるか?
- ocr-rs は、PaddleOCR の中国語と日本語への対応を Rust のバイナリに取り込む実用的な方法です。メンテナーが一人であることと C++ のランタイムが気にならなければ、の話です。 評価は5点満点中3.7点です。
- ocr-rs (formerly rust-paddle-ocr)の料金は?
- Apache-2.0 で無料です。PaddleOCR のモデルは Baidu による Apache-2.0 です。
- ocr-rs (formerly rust-paddle-ocr)の欠点は?
- C++ の MNN をリンクしており、純粋な Rust ではない; モデルの変換に Python スクリプトが 必要; 実質的にメンテナーが一人; 行のテキストとボックスのみで、文書構造は出力しない.
- ocr-rs (formerly rust-paddle-ocr)は誰に向いているか?
- ネイティブアプリケーションの中で、ラテン文字以外、特に中国語と日本語の OCR を必要とする Rust 開発者に向いています。
- チームや本番環境でocr-rs (formerly rust-paddle-ocr)を使うと費用はいくらか?
- モバイル向けのモデルを CPU で動かすため、計算コストは低く抑えられます。GPU バックエンドは任意です。有料版やホスト型サービスはありません。
- ocr-rs (formerly rust-paddle-ocr)は企業データを扱っても安全か?
- 完全にローカルで動作し、推論時にネットワーク呼び出しはありません。コードは Apache-2.0 で、PaddleOCR のモデルも Apache-2.0 です。
- ocr-rs (formerly rust-paddle-ocr)の代わりになるものは?
- 当サイトでレビューした中で最も近い代替はOcrs, Xberg (formerly Kreuzberg), deepseek-ocr.rs 、 Doclingです。
回答確認日:2026年10月26日
