Language / 言語
日本語ホーム 機能特徴 導入手順 ドキュメント サイト概要 GitHub

📋 PaddleOCR 日本語サマリー

  • PaddleOCRは世界最高水準の認識精度(OmniDocBench v1.6で96.33%)を誇るオープンソースOCRツールキットです。
  • pip install paddlepaddle paddleocr のみでWindows、macOS、Linux(CPU/GPU)に導入可能。
  • 主な構成:PP-OCRv6(高速テキスト抽出)、PP-StructureV3(PDF・帳票表解析)、PaddleOCR-VL(Document AI大モデル)。
  • 日本語(漢字・ひらがな・カタカナ)の縦書き・傾き・レシート・請求書を高い精度で認識。
  • 完全ローカル動作でデータ漏洩のリスクなく安全に利用可能です。
概要

PaddleOCR 概要と特徴

PaddleOCRは、百度(Baidu)のPaddlePaddleチームによって開発された産業グレードのオープンソースOCRツールキットです。高い文字認識精度、超軽量なモデル設計、そして豊富な文書解析機能を兼ね備えています。

主要3大パイプライン

PP-OCRv6

高精度テキスト検出・文字認識

日本語を含むマルチ言語に対応。Tiny (1.5M)、Small (7.7M)、Medium (34.5M) の各サイズを提供。

PP-StructureV3

PDF・表レイアウト構造化復元

複雑なレイアウトの請求書・契約書・学術論文から表を抽出し、HTMLやMarkdownに変換します。

PaddleOCR-VL

視覚言語ドキュメント大モデル (0.9B)

エンドツーエンドで画像全体を理解し、段落構造や数式を保ったままMarkdown形式で出力します。

導入手順

インストール手順 (Installation)

Python 3.8〜3.12 環境で以下のコマンドを実行します:

ステップ 1:PaddlePaddle のインストール

CPU環境(一般的なPC・Mac・CPUサーバー)
pip install paddlepaddle
GPU環境(NVIDIA CUDA対応環境)
pip install paddlepaddle-gpu

ステップ 2:PaddleOCR のインストール

PaddleOCRライブラリ
pip install paddleocr
クイックスタート

Pythonでの実行サンプル

日本語テキストを含む画像を読み込み、テキストを抽出するコード:

日本語OCRテストコード
from paddleocr import PaddleOCR

# 日本語モデルを初期化 (lang='japan')
ocr = PaddleOCR(use_angle_cls=True, lang='japan')

# 画像を推論
result = ocr.ocr('sample_invoice.jpg', cls=True)

# テキストとスコアを出力
for line in result[0]:
    text, score = line[1]
    print(f"テキスト: {text} | 信頼度: {score:.4f}")
表解析

PP-StructureV3 請求書・PDF表構造解析

請求書や財務諸表のPDFから表データを抽出してHTML形式で復元します:

表抽出コード
from paddleocr import PPStructureV3

engine = PPStructureV3(show_log=True, lang='japan')
result = engine('invoice.pdf')

for region in result:
    if region['type'] == 'table':
        print("復元されたHTML表:")
        print(region['res']['html'])
フロントエンド&WASM

JavaScript / WebAssembly (ブラウザ直接実行)

Python環境なしで、ブラウザ純フロントエンド (WebAssembly / WebGPU) または Node.js で PaddleOCR を実行:

npm インストール
npm install @paddlejs-models/ocr onnxruntime-web
ブラウザ JavaScript 実行例
import * as ocr from '@paddlejs-models/ocr';

// 初期化(モデルはブラウザキャッシュに自動保存)
await ocr.init();

// 画像要素(<img> または <canvas>)を認識
const imgElement = document.getElementById('sample-doc');
const result = await ocr.recognize(imgElement);

console.log('認識テキスト:', result.text);
console.log('バウンディングボックス:', result.points);
エラー対処

よくあるエラーと解決策 (Error Dictionary)

1. ImportError: cannot import name 'draw_ocr' from 'paddleocr'

原因: 新バージョンでは可視化ツールが tools サブモジュールに分離されました。
解決策: pip install "paddleocr[tools]" を実行し、from paddleocr.tools.infer.utility import draw_ocr からインポートしてください。

2. TypeError: predict() got an unexpected keyword argument 'cls'

原因: .predict() メソッドに cls=True を渡したことが原因です。
解決策: ocr.ocr('img.jpg', cls=True) を使用するか、クラス初期化時に PaddleOCR(use_angle_cls=True) を指定してください。

3. convertpirattribute2runtimeattribute (Windows OneDNN エラー)

原因: Windows環境におけるPIRコンパイラとOneDNNの衝突。
解決策: 実行前に環境変数を設定:import os; os.environ['FLAGS_enable_pir_api'] = '0'

4. バウンディングボックス座標の取得とスコア絞り込み

result = ocr.ocr('invoice.jpg', cls=True)
for line in result[0]:
    box = line[0]        # 四隅の座標 [[x1,y1],[x2,y2],[x3,y3],[x4,y4]]
    text, score = line[1] # 認識文字列と信頼度
    if score >= 0.85:
        print(f"高精度テキスト: {text} | 座標: {box}")

5. Windows環境で ImportError: DLL load failed が発生する

マイクロソフト公式の Visual C++ 2015-2022 再頒布可能パッケージ をインストールしてください。