TurboOCR: Paddle + TensorRT(C++/CUDA、FP16)で270〜1200 img/sのOCR [P]

Reddit r/MachineLearning / 2026/4/13

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical Usage

要点

  • この記事では、単一スレッドのPython PaddleOCR推論を、FP16 TensorRT、融合カーネル、バッチング、そしてマルチストリーム・パイプラインに置き換えることでスループットを大幅に向上させるC++/CUDAのOCRシステム「TurboOCR」を紹介します。
  • Linux上でRTX 50シリーズおよびCUDA 13.2を用いたテストでは、TurboOCRはテキスト量の多いページで約270 img/s、疎なページでは1,200 img/s以上を達成したと報告されており、大規模RAGワークフローに対してほぼ即時のインデキシングを可能にします。
  • TurboOCRはHTTP/gRPC経由で画像とPDFを受け付け、PP-DocLayoutV3(25クラス)を用いて、バウンディングボックス、認識テキスト、レイアウト領域ラベルを返します。レイアウト処理は、有効にするとレイテンシをおよそ〜20%追加します。
  • 著者はトレードオフについて言及しています。複雑な表の抽出や、請求書からJSONのような構造化出力は、PaddleOCR-VLのようなVLMベースのOCR手法がいまだ必要だとしています。
  • 著者は、速度低下を最小限に抑えつつ、構造化抽出、Markdown出力、表のパース、さらに多言語対応を追加する計画を述べており、導入用のGitHubリンクも提示しています。

処理すべきPDFは約94万本ありました。100万ページに対してVLMを実行するのは遅くて高コストで、OCRがトランスフォーマーやVLMベースのアプローチへ移行するにつれて、その差はさらに広がっています。複雑な理解にはとても優れていますが、大規模運用ではスループットとコストがボトルネックになり得ます。

PaddleOCR(VLMではないバージョン)は、私の意見では最良のVLMなしのオープンソースOCRで、私のRTX 5090では約15 img/sしか出ませんでした。これでもまだ遅すぎました。PaddleOCR-VLはvLLMで2 img/sまでしか進みませんでした。

PaddleOCRはFP32推論のシングルスレッドPythonで、カーネル融合もありません。それをTurbo-OCRではC++/CUDA、FP16 TensorRT、融合カーネル、バッチ認識、マルチストリームのパイプライン・プーリングで置き換えました。HTTP/gRPC経由で画像とPDFを受け取り、バウンディングボックス、テキスト、レイアウト領域(PP-DocLayoutV3、25クラス)を返します。

レイアウトはリクエストごとに切り替え可能で、推論時間に追加されるのは約20%だけです。

結果:レイアウトなしのテキスト多めページで270 img/s、スカスカのページでは1,200+。ドキュメントを即座にインデックスする必要があるリアルタイムRAGにうまく機能しますし、大規模なコレクションを低コストで一括処理する用途にも向いています。

トレードオフ:複雑な表の抽出や構造化出力(インボイス → JSON)は、PaddleOCR-VLのようなVLMベースのOCRがまだ必要です。私は、Turbo-OCRに構造化抽出、markdown出力、表のパース、さらに多言語を持ち込む作業をしていますが、可能な限り速度を犠牲にしないようにしています..

Linux、RTX 50シリーズ、CUDA 13.2でテストしました。

https://github.com/aiptimizer/TurboOCR

投稿者: /u/Civil-Image5411
[リンク] [コメント]