CV / PPOCR

PPOCR

Detects text polygons, rectifies each region, recognizes the text, and returns coordinates and confidence.

7 ダウンロード
精度
RKNN

使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。

はじめる

デプロイ
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest \
  python web_service.py --platform rk3576 --model_dir /app/model --host 0.0.0.0 --port 8000

REST API

REST API を使用して推論を実行します。以下のコマンドをコピーしてください。

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "ppocr-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "ppocr-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

モデル詳細

reComputer RK3576およびRK3588でPPOCRを実行する

このエンドツーエンドOCRサービスはreComputer-RK-CVに由来します。テキスト多角形を検出して読み順に並べ、各切り抜きを透視補正し、各テキスト行を認識します。

モデル情報

コンポーネントファイル
テキスト検出器model/ppocr_det.rknn
テキスト認識器model/ppocr_rec.rknn
文字辞書model/ppocr_keys_v1.txt
注釈フォントmodel/simfang.ttf
出力テキスト、信頼度、四辺形座標、切り抜き、レイテンシ

PPOCRは静止画像のみをサポートします。上流サービスには意図的にカメラ、ローカル動画、MP4解析のコントロールが含まれていません。

サービスを実行する

RK3576

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppocr:latest \
  python web_service.py --platform rk3576 --model_dir /app/model \
  --host 0.0.0.0 --port 8000

RK3588

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppocr:latest \
  python web_service.py --platform rk3588 --model_dir /app/model \
  --host 0.0.0.0 --port 8000

http://<BOARD_IP>:8000または/docsを開きます。

起動引数

引数デフォルト説明
--platform必須rk3576またはrk3588
--model_dirmodelモデル、辞書、フォント、サンプル画像。
--imageなしサーバー起動前に解析する静止画像。
--outputなし--image用の注釈付きJPG/PNG出力パス。
--no_serverオフ--image処理後に終了します。
--host / --port0.0.0.0 / 8000サービスアドレスとポート。

マウントした画像を一枚解析し、注釈を保存してJSONを表示し、終了するには:

bash
python web_service.py --platform rk3576 --model_dir model \
  --image /data/document.jpg --output /data/document_result.jpg --no_server

REST API

エンドポイント: POST /api/models/ppocr/predict

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/ppocr/predict" \
  -F "file=@document.jpg" -F "drop_score=0.5" \
  -F "include_crops=false"

任意フィールドはdet_thresholdbox_thresholdunclip_ratiodrop_scoremax_resultsinclude_cropsです。その他のエンドポイントでは、ヘルス状態、設定、最新の構造化結果、最新の注釈付きJPEG、対話型OpenAPIドキュメントを提供します。

フィールドデフォルト説明
det_threshold0.30から1までのピクセルマップ検出しきい値。
box_threshold0.6DBテキストボックスの最小スコア。
unclip_ratio1.50.1から5までの多角形拡張率。
drop_score0.5結合テキストに含める最小認識信頼度。
max_results100認識へ送る領域の最大数。
include_cropsfalse結果行にbase64 JPEG切り抜きを含めます。

重要なレスポンスフィールド:

json
{
  "success": true,
  "model": "ppocr",
  "result": {
    "text": "Recognized first line\nRecognized second line",
    "lines": [
      {
        "index": 1,
        "text": "Recognized first line",
        "confidence": 0.9621,
        "accepted": true,
        "box": [[42, 31], [286, 29], [287, 72], [43, 74]]
      }
    ],
    "count": 2,
    "timing_ms": {"detection": 54.2, "recognition": 71.4, "total": 129.8}
  }
}

検出品質は認識へ直接影響します。非常に小さい、ぼやけた、湾曲した、縦書き、低コントラスト、大きく回転したテキストは見落とされる可能性があり、単純な読み順ヒューリスティックは複雑な複数列文書に適さない場合があります。include_crops=trueはレスポンスサイズを増やし、主にWeb結果パネル向けです。検出器と認識器はパイプライン段階であり、文字辞書および透視切り抜きロジックとの互換性が必要です。

ローカルでビルドする

bash
docker build -f docker/rk3576/ppocr.dockerfile \
  -t rk3576-ppocr:local src/rk3576_ppocr

docker build -f docker/rk3588/ppocr.dockerfile \
  -t rk3588-ppocr:local src/rk3588_ppocr

入力と出力

Input: still image. Output: ordered text lines, confidence scores, quadrilaterals, and annotated image.