PaddleOCR-VL-1.5 のような最先端 OCR モデルのデプロイは大変な作業です。開発者は、不明確なハードウェア要件、複雑な環境構築、GPU コストの不確実性に直面します。PaddleOCR-VL-1.5 は、Baidu の最先端視覚言語モデルであり、OmniDocBench v1.5 で 94.5% の精度を達成しており、最適なパフォーマンスを得るには正確なデプロイ設定が必要です。
このガイドでは、適切な GPU の選択から本番環境での推論実行まで、Novita AI の GPU インスタンスで PaddleOCR-VL-1.5 をデプロイする手順を説明します。Docker イメージのセットアップ、環境設定、GPU の選択、実際のコスト分析についてもカバーします。
PaddleOCR-VL-1.5 とは?
PaddleOCR-VL-1.5 は、Baidu の次世代視覚言語モデルで、文書解析、OCR、レイアウト理解に最適化されています。0.9B パラメータを持ち、エンタープライズグレードの精度を提供しながら、コンシューマ向け GPU でもデプロイ可能です。
| 仕様 | 値 |
|---|---|
| モデルタイプ | 視覚言語モデル(VLM) |
| パラメータ数 | 0.9B |
| コンテキストウィンドウ | 131,072 トークン |
| 精度 | bfloat16 |
| OmniDocBench v1.5 精度 | 94.5% |
| ベースモデル | ERNIE-4.5-0.3B-Paddle |
主な機能
PaddleOCR-VL-1.5 は、文書 AI 向けに注目すべき機能を導入しています。
- 不規則形状検出: 傾いたり歪んだ文書に対するポリゴン位置特定 — スキャンアーティファクト、スクリーン撮影、照明のばらつきに対応し、Real5-OmniDocBench ベンチマークで検証済み。
- 拡張要素認識: テーブル、数式、テキスト認識において、先行モデルと比較して大幅に改善。
- 印鑑・テキストスポッティング: 印鑑認識とテキストスポッティングタスクのネイティブサポート — 法務や政府文書処理に不可欠。
- 多言語サポート: 英語、中国語、多言語データセットで学習。

Hugging Face より
なぜ Novita AI GPU インスタンスにデプロイするのか?
Novita AI GPU インスタンスは、PaddleOCR-VL-1.5 をデプロイするために最適な環境を提供し、以下の重要な利点があります。
- 事前設定済み CUDA 環境: Novita テンプレートは、PaddlePaddle 3.1.0/3.1.1 に必要な CUDA 11.x および 12.x をサポート。
- コスト効率の良い GPU オプション: RTX 5090 32GB をオンデマンドで $0.73/時間で利用可能。
- 柔軟なスケーリング: 従量課金制で、オンデマンドおよびスポットインスタンスに対応 — 単一 GPU から 8×GPU クラスターまでスケール可能。
- Docker ネイティブデプロイ: パブリック/プライベートレジストリを使用したカスタムイメージのサポートにより、環境構築の複雑さを排除。
- ネットワークボリュームストレージ: $0.002/GB/日 のネットワークボリュームで、インスタンス間でのモデルの永続ストレージが可能。

Novita GPU テンプレート上で PaddleOCR-VL-1.5 をデプロイする
ステップ1: コンソールへのアクセス
GPU インターフェースを起動し、Get Started を選択してデプロイメント管理にアクセスします。
ステップ2: パッケージの選択
テンプレートリポジトリで PaddleOCR-VL-1.5 を見つけ、インストールシーケンスを開始します。
ステップ3: インフラストラクチャの設定
メモリ割り当て、ストレージ要件、ネットワーク設定などのコンピューティングパラメータを構成します。Deploy を選択して実装します。
ステップ4: 確認と作成
構成の詳細とコスト概要を再確認します。問題がなければ、Deploy をクリックして作成プロセスを開始します。
Novita AI のスポットモード は、プラットフォームのアイドル状態または未使用の GPU 容量を活用したコスト最適化 GPU レンタルシステムです。専用ハードウェアを予約して安定した継続的使用を提供するオンデマンドインスタンスとは異なり、スポットインスタンスは 中断可能 です — GPU がシステムによって回収された場合、ジョブは一時停止または終了される可能性があります。スポットモードは、そうでなければアイドル状態になる GPU リソースを再割り当てするため、通常、オンデマンド料金より 40〜60% 安くなります。
ステップ5: 作成を待つ
デプロイを開始すると、システムは自動的にインスタンス管理ページにリダイレクトします。インスタンスはバックグラウンドで作成されます。
ステップ6: ダウンロード進捗を監視
イメージのダウンロード進捗をリアルタイムで追跡します。デプロイが完了すると、インスタンスステータスが Pulling から Running に変わります。インスタンス名の横にある矢印アイコンをクリックすると、詳細な進捗を確認できます。
ステップ7: インスタンスステータスの確認
Logs ボタンをクリックしてインスタンスログを表示し、PaddleOCR サービスが正しく起動したことを確認します。
ステップ8: 環境へのアクセス
Connect インターフェースから開発スペースを起動し、Start Web Terminal を初期化します。
以下は Python テストケースです。
import base64
import requests
import pathlib
API_URL = "http://localhost:8080/layout-parsing" # Service URL
image_path = "./demo.jpg"
# ローカル画像を Base64 にエンコード
with open(image_path, "rb") as file:
image_bytes = file.read()
image_data = base64.b64encode(image_bytes).decode("ascii")
payload = {
"file": image_data, # Base64 エンコードされたファイル内容、またはファイル URL
"fileType": 1, # ファイルタイプ、1 は画像ファイルを意味
}
# API を呼び出す
response = requests.post(API_URL, json=payload)
# API 応答データを処理
assert response.status_code == 200
result = response.json()["result"]
for i, res in enumerate(result["layoutParsingResults"]):
print(res["prunedResult"])
md_dir = pathlib.Path(f"markdown_{i}")
md_dir.mkdir(exist_ok=True)
(md_dir / "doc.md").write_text(res["markdown"]["text"])
for img_path, img in res["markdown"]["images"].items():
img_path = md_dir / img_path
img_path.parent.mkdir(parents=True, exist_ok=True)
img_path.write_bytes(base64.b64decode(img))
print(f"Markdown ドキュメントが {md_dir / 'doc.md'} に保存されました")
for img_name, img in res["outputImages"].items():
img_path = f"{img_name}_{i}.jpg"
pathlib.Path(img_path).parent.mkdir(exist_ok=True)
with open(img_path, "wb") as f:
f.write(base64.b64decode(img))
print(f"出力画像が {img_path} に保存されました")
サンプル画像をダウンロードし、テストスクリプトを実行します:
# テスト用サンプル画像をダウンロード
curl https://raw.githubusercontent.com/PaddlePaddle/PaddleOCR/main/tests/test_files/book.jpg -o demo.jpg
# ポートマッピングアドレスをコピーし、test.py の API_URL を置き換えて実行:
python test.py
# 期待される出力:
# Markdown ドキュメントが markdown_0/doc.md に保存されました
# 出力画像が layout_det_res_0.jpg に保存されました
Novita GPU テンプレート上で PaddleOCR-VL-1.5 をデプロイするための最適化
バッチ処理設定
AMD デプロイガイドでは、スループット最適化のために batch_size: 64 を推奨しています。GPU に応じて調整してください:
| GPU | 推奨バッチサイズ | スループット (文書/分) |
|---|---|---|
| RTX 5090 32GB | 32-48 | ~120-150 |
| RTX 4090 24GB | 24-32 | ~90-120 |
| H100 80GB | 64-96 | ~250-350 |
レイアウト検出設定
テーブル、数式、チャートを含む複雑な文書では use_layout_detection: True を有効にします。プレーンテキスト文書では無効にすることで、レイテンシを 30〜40% 削減できます。
よくある問題のトラブルシューティング
問題1: モデルダウンロードのタイムアウト
症状: コンテナが “Connection timeout to huggingface.co” で起動に失敗する。
解決策: モデルを事前に Novita ネットワークボリュームにダウンロードし、マウントする:
# 一時的なインスタンス上で:
pip install huggingface-hub
huggingface-cli download PaddlePaddle/PaddleOCR-VL-1.5 --local-dir /mnt/models
# Dockerfile 内:
ENV HF_HOME=/mnt/models
VOLUME /mnt/models
問題2: メモリ不足エラー
症状: 推論中に CUDA out of memory が発生する。
解決策: 設定で batch_size を減らす:
batch_size: 16 # 64 から減らす
gpu_memory_utilization: 0.85 # 15% の余裕を残す
問題3: 複雑な文書での推論が遅い
症状: 文書あたりの処理時間が 5 秒を超える。
解決策: AMD 最適化ガイドに従い、不要な機能を無効にする:
- プレーンテキスト文書では
use_layout_detection: Falseを設定(30〜40% 高速化) - 生の要素位置が必要な場合は
merge_layout_blocks: Falseを設定 - 複雑なレイアウトで 2〜3 倍のスループットが必要な場合は H100 SXM 80GB にアップグレード
Novita AI GPU インスタンス上での PaddleOCR-VL-1.5 のデプロイにより、プロダクショングレードの文書解析が実現します。 0.9B パラメータの効率性と Novita の柔軟な GPU 価格設定により、スタートアップからエンタープライズまで、予算を圧迫することなく月間数百万の文書を処理できます。
結論
Novita AI GPU テンプレート上で PaddleOCR-VL-1.5 をデプロイすると、エンタープライズグレードの文書解析を数分で実現できます — 複雑な環境構築やアイドル GPU コストは不要です。0.9B パラメータ、OmniDocBench v1.5 で 94.5% の精度、そして $0.73/時間から始まる柔軟な GPU オプションにより、大量の文書を大規模に処理するチームにとって効率的なソリューションです。
重要なポイント: スループット要件に基づいて GPU 階層を選択し、本番ワークロードではバッチ処理を有効にし、スポットインスタンスを使用してコストを 40〜60% 削減しましょう。Novita AI で始めて、今すぐ PaddleOCR-VL-1.5 をデプロイしてください。
PaddleOCR-VL-1.5 を実行するにはどの GPU が必要ですか?
PaddleOCR-VL-1.5 は 8GB 以上の VRAM を持つ任意の GPU で動作します。本番環境では RTX 5090 32GB ($0.73/時間) を推奨します。
PaddleOCR-VL-1.5 は歪んだスキャン文書を処理できますか?
はい。PaddleOCR-VL-1.5 の不規則形状検出 は、Real5-OmniDocBench ベンチマークで検証された、傾き、歪み、スキャンアーティファクトを処理します。
PaddleOCR-VL-1.5 は本番使用に適していますか?
はい。0.9B パラメータと 94.5% の精度により、パフォーマンスと効率のバランスが優れており、エンタープライズ文書処理パイプラインに適しています。
Novita AI は AI およびエージェントクラウドプラットフォームであり、開発者やスタートアップが高性能、信頼性、コスト効率の高いモデルやエージェントアプリケーションを構築、デプロイ、スケーリングするのを支援します。
おすすめの記事
DeepSeek vs Qwen: 本番ニーズに合うエコシステムを見極める
