【実測】無料・オフラインで、日本語がここまで読める ―― Baidu の新OCR「PP-OCRv6」が地味にすごい
無料。 ローカル。 オフライン。 しかも、日本語がかなり読めます。
無料。
ローカル。
オフライン。
しかも、日本語がかなり読めます。
Baidu が出した新しい OCR、PP-OCRv6 を試しました。
正直、思っていたよりずっと実用的でした。
公式は、tiny について「1.5MB」「単画像 97ms」「ブラウザで動く」と打ち出しています。
この数字だけを見ると、かなり攻めています。
では、日本語でも本当に使えるのでしょうか。
手元の Apple M5 で測りました。
結論から言うと、日本語の実用解は Small です。
72ms。
約 31MB。
クリーンな日本語 5 文では精度 100%。
これが、かなり気持ちいい結果でした。
先に結論
実測環境は、Apple M5 / macOS 26.5 / Python 3.12 / paddleocr 3.7.0 / paddle 3.3.1 / CPU です。
日本語 5 文を、warm 10 回平均で測りました。
| モデル | 日本語対応 | 日本語精度 | 速度 | サイズ |
|---|---|---|---|---|
| Tiny | 仕様上は非対応 | 約 50% | 27ms | det 2MB + rec 5MB ≒ 7MB |
| Small | 対応 | 100% | 72ms | det 10MB + rec 21MB ≒ 31MB |
| Medium | 対応 | 100% | 225ms | det 60MB + rec 74MB ≒ 134MB |
tiny は速いです。
でも、日本語は仕様上サポート外です。
small は、かなり良いです。
速くて、軽くて、日本語が読めます。
medium は重いです。
ただし、いちばん粘ります。
何を入れればいいか
まず、動かし方です。
本文ではコマンドを書くだけにします。
実行はしていません。
uv venv /tmp/ocrtest --python 3.12
uv pip install --python /tmp/ocrtest paddlepaddle paddleocr # paddleocr 3.7.0
from paddleocr import PaddleOCR
# 日本語は Small が実用解
ocr = PaddleOCR(
text_detection_model_name="PP-OCRv6_small_det",
text_recognition_model_name="PP-OCRv6_small_rec",
lang="japan",
use_doc_orientation_classify=False,
use_doc_unwarping=False,
use_textline_orientation=False,
)
print(ocr.predict("test.png")[0]["rec_texts"])
small を tiny / medium に変えれば各档です。
モデルは初回に自動ダウンロードされます。
Small がちょうどいい
今回いちばん印象が変わったのは Small でした。
OCR は、だいたいこういう印象を持たれがちです。
軽いモデルは速いけれど読めない。
読めるモデルは重くて遅い。
PP-OCRv6 の Small は、その中間がうまいです。
72ms で日本語 100%、サイズは約 31MB。
この数字なら、ローカルの常駐部品としてかなり扱いやすいです。
もちろん、これは 1 行画像の値です。
語数が多い画像や、大きい画像では伸びます。
約 54 語のワードクラウドでは、Medium で約 1 秒でした。
それでも、クラウドに投げずに手元で読める OCR としては十分速いです。
どこまで読めたか
まず、クリーンな日本語文です。
Small も Medium も 100% でした。
ここまでは、ある程度予想できます。
きれいな印刷文字は、OCR にとってやさしい問題だからです。
次に、英数字・URL・コードです。
ここは tiny でも完璧でした。
入力: https://github.com/PaddlePaddle/PaddleOCR
出力: https://github.com/PaddlePaddle/PaddleOCR ← 完璧
入力: pip install paddleocr==3.7.0
出力: pip install paddleocr==3.7.0 ← 完璧
こういう用途なら、tiny はかなり強いです。
日本語を読ませないなら、27ms という速さが効きます。
驚いたのは、ここからです。
PaddleOCR 公式デモの実画像 japan_2 でも試しました。
大きさ、太さ、濃淡がバラバラな、約 54 語のワードクラウドです。
Small も Medium も、ほぼ読了しました。
これは想像より強かったです。
日本語 OCR は、整った文よりも、こういう画像で急に崩れます。
単語の大きさが違う。
色が薄い。
配置が散っている。
文字の周りに余白がない。
それでも読める。
ここで、これは使えるなと思いました。
カメラ写真でも崩れにくい
実カメラ写真でも見ました。
日本語ポスターの「だいじょうぶ。未来は元気だよ。」は正確でした。
屋外の縦書き看板も、漢字が 1 字違っただけでした。
スクリーンショット専用ではありません。
紙。
ポスター。
看板。
そういう現実の画像でも、かなり粘ります。
Agent に画像を渡す前の前処理として考えると、ここは大きいです。
スクショや PDF から文字を抜く。
看板写真から文字を抜く。
それをローカルでやる。
地味ですが、効きます。
手書きも、けっこう読む
手書きも試しました。
自分で字を並べたものでは「本物の手書き」とは言えないので、実際に手で書かれた写真を使いました。
Wikimedia Commons にある手書きのラブレターです(連筆、紙、照明ムラ、裏写りつきの実写)。

テスト画像:Love letter in Japanese by Umi from Oakland, U.S. — CC BY-SA 2.0(リサイズして掲載)
これを OCR にかけました。
人が読める範囲の正解はこうです。
愛とは決してあきらめないこと…
大好きです。 / ラブユー
海ちゃんへ(デザインされた飾り文字)
Small と Medium の出力:
Small : 「愛とは決して」◎ /「あきらめないこと…」◎ /「大好きです。」◎ /「ラブュー」(近い) /「海ちゃんへ」→ 海地ん
Medium:「愛とは決して」◎ /「あきらめないこと…」◎ /「大好きです。」◎ /「ラブュ」(ユー欠け) /「海ちゃんへ」→ 海ん
Tiny : ほぼ全滅(「大好飞有小」など)
正直、ここは驚きました。
連筆の本物の手書きでも、本文の「愛とは決してあきらめないこと…」「大好きです。」をそのまま読みました。
外したのは、デザインされた飾り文字の「海ちゃんへ」と、見切れた文字くらいです。
ここでも Small と Medium はほぼ互角でした(飾り文字は Small がやや健闘)。
Tiny は日本語非対応なので、手書きも全滅です。
手書きを本気で扱うなら手書き特化 OCR も併用すべきですが、
メモや手紙の本文をざっくり読む程度なら、Small で十分戦えます。
3 つの使い分け
tiny は、英数字・コード・URL 向けです。
49 言語対応で、日本語は仕様上含まれません。
サイズは手元で det 2MB + rec 5MB、合計約 7MB でした。
ブラウザや軽量な前処理では魅力があります。
ただし、日本語 OCR として選ぶモデルではありません。
small は、日本語の日常解です。
72ms。
約 31MB。
クリーンな日本語では 100%。
印刷、写真、ワードクラウドに強いです。
まずは small でいいと思います。
medium は、保険です。
225ms から。
約 134MB。
medium は 34.5M パラメータです。
手書きや、最難画像まで拾いたいなら medium です。
軽さより頑健さを取る選択です。
正直な注意点
まず、公式の「97ms」「1.5MB」は tiny の数字です。
そして tiny は、日本語非対応です。
日本語で使うなら、small か medium を見た方がいいです。
今回の手元実測では、small が 72ms / 約 31MB、medium が 225ms / 約 134MB でした。
cold start もあります。
初回はモデルダウンロードを含めて 8〜12 秒です。
以降は 1 秒未満です。
表のレイアウトも、そのまま戻るわけではありません。
文字は読めても、列や行の構造は崩れます。
帳票として扱うなら、別途レイアウト解析が必要です。
手書きは medium を選ぶ方が安全です。
Small は、今回の「こんにちは」「さくら」では崩れました。
こういう場面で効く
Agent の目として効きます。
スクリーンショット、PDF、看板画像を、まずローカルで文字にします。
そのあとで LLM に渡します。
大量画像のローカルバッチにも向きます。
クラウドに投げず、夜間にまとめて処理できます。
クラウドに上げたくない書類にも向きます。
個人情報や社内資料を、手元で OCR できます。
英数の高速抽出にも向きます。
ログ画像、コード断片、URL なら tiny が速いです。
日本語の普段使いなら small。
手書きや難しい画像なら medium。
英数字だけなら tiny。
この分け方が、いちばん素直です。
何がすごいのか
PP-OCRv6 の強みは、単体で世界一という話ではありません。
ローカル、無料、オフライン、オープン、そして日本語も実用レベル。
この組み合わせが強いです。
クラウドに上げない。
お金もかけない。
それで、日本語が業務で使えるくらい読める。
派手な話ではありません。
でも、かなり現場向きです。
試す前は、公式の tiny の数字が目立ちすぎて、日本語では厳しいのではと思っていました。
実際には違いました。
tiny は日本語向けではありません。
でも、small がいいです。
medium もちゃんと保険になります。
地味にすごい。
この表現が、いちばん近いと思います。
―― AI未来編集室「AIウォッチ」
← 一覧へ