← 記事一覧に戻る

日本語OCRエンジン比較
YomiToku vs Tesseract vs RapidOCR

📅 2025年12月3日 👤 Ayumu 🏷️ OCR, Python, 技術比較

この記事のポイント

  • Tesseract: 日本語CER 3.49%、日英混在CER 5.36%で最高精度、かつYomiTokuの10〜20倍速
  • YomiToku: Tesseractと同等精度(CER 3.59%)、レイアウト解析・表認識が必要な場合に
  • PaddleOCR: 日本語対応(CER 4.92%)、設定次第で実用的
  • RapidOCR: デフォルト中国語モデルでは精度低め、日本語モデル要設定

はじめに

業務でOCRを使う場面は多い。請求書の読み取り、契約書のデジタル化、名刺管理など。 特に日本語文書を扱う場合、「どのOCRエンジンを選ぶべきか」は重要な問題だ。

今回は、Python環境で使える3つのオープンソースOCRエンジン (YomiTokuTesseractRapidOCR)を 実際にベンチマークして比較した。

テスト環境

OS: Ubuntu 22.04 (WSL2)
CPU: Intel Core i7
RAM: 32GB
GPU: なし(CPU実行)
Python: 3.10

テスト画像:
  - 日本語文書(約1,100文字)
  - 日英混在文書(約1,400文字)

各エンジンの概要

🇯🇵 YomiToku

2024年11月にリリースされた日本語特化のOCRエンジン。 4種類の独自AIモデル(文字検出、文字認識、レイアウト解析、表構造認識)を搭載し、 7,000文字以上の日本語文字に対応。縦書き・手書きにも対応。

✅ 長所
  • 日本語認識精度が高い
  • 縦書き・横書き両対応
  • レイアウト解析が優秀
  • 表の構造認識が可能
❌ 短所
  • 処理速度が遅い
  • 商用利用は要ライセンス
  • GPU推奨(CPUだと数十秒)

🔤 Tesseract (PyOCR) ⭐ 今回のベストパフォーマー

Googleが開発する歴史あるオープンソースOCRエンジン。 100以上の言語に対応し、世界中で広く使われている。 PyOCRはPythonからTesseractを使うためのラッパー。 今回のテストでは日本語・日英混在の両方で最速&最高精度を記録(CER 3.49%〜5.36%)。

✅ 長所
  • 完全無料・OSS(Apache 2.0)
  • 多言語対応(100+言語)
  • 日本語も高精度(CER 3.49%)
  • YomiTokuの10〜20倍速
  • 豊富なドキュメント
❌ 短所
  • 縦書き・手書きに弱い
  • レイアウト解析は限定的
  • 表構造の認識は非対応

⚡ RapidOCR

PaddleOCRをベースにした高速OCRエンジン。 ONNX Runtime対応で、GPUなしでも高速に動作。 注意:デフォルトは中国語モデル。日本語には別途モデル設定が必要。

✅ 長所
  • 処理速度が非常に速い
  • 軽量(ONNX Runtime)
  • インストールが簡単
  • Apache 2.0ライセンス
❌ 短所
  • デフォルトは中国語のみ
  • 日本語モデルは別途設定要
  • ドキュメントが中国語中心

ベンチマーク結果

日本語文書(約1,100文字)

エンジン 処理時間 CER(文字誤り率) 評価
Tesseract 2.5秒 3.49% 最速&最高精度
YomiToku 31.5秒 3.59% 高精度
PaddleOCR 32.5秒 4.92% 高精度
RapidOCR 6.5秒 32.51% 中国語モデル

*RapidOCRはデフォルトが中国語モデルのため日本語認識精度が低い。日本語モデル設定で改善可能。

日英混在文書(約1,400文字)

エンジン 処理時間 CER(文字誤り率) 評価
Tesseract 1.4秒 5.36% 最速&最高精度
YomiToku 28.7秒 7.91% 高精度
RapidOCR 5.2秒 18.91% 中国語モデル
PaddleOCR 18.8秒 18.36% 要調査

精度比較 - 日英混在文書(CER: 低いほど良い)

Tesseract 5.36%
YomiToku 7.91%
PaddleOCR 18.36%
RapidOCR 18.91%

速度比較 - 日英混在文書(秒: 低いほど良い)

Tesseract 1.4秒
RapidOCR 5.2秒
PaddleOCR 18.8秒
YomiToku 28.7秒

認識結果の例

Tesseractの認識結果(抜粋)

Technical Specification Document v2.5
Project: Advanced OCR Engine Evaluation
Date: December 3, 2025
Author: Al Research Team

...

日本語テキストの認識精度は、従来のルールベース手法と比較して、
ニューラルネットワークベースの手法で大幅に向上している。

日本語も英語もほぼ完璧に認識。「AI」→「Al」の軽微なエラーのみ。CER 3.49%〜5.36%の高精度。

YomiTokuの認識結果(抜粋)

Technical Specification Document v2.5
Project: Advanced OCR Engine Evaluation
Date: December 3, 2025
Author: Al Research Team

...

日本語テキストの認識精度は、従来のルールベース手法と比較して、
ニューラルネットワークベースの手法で大幅に向上している。

Tesseractと同等の高精度認識。レイアウト解析や表構造認識が必要な場合に強み。

PaddleOCR(日本語モデル)の認識結果

Technical Specification Document v2.5
Project: Advanced OCR Engine Evaluation
Date: December 3,2025
Author: Al Research Team

...

日本語テキストの認識精度は、従来のルールベース手法と比較して、
ニューラルネットワークベースの手法で大幅に向上している。

日本語も認識可能。ただし一部の英語で誤認識あり(CER 4.92%〜18.36%)。

RapidOCR(中国語モデル)の認識結果

Technical Specification Document v2.5
Project:AdvancedOCREngineEvaluation
...
日本語テキストの認識精度は、従来のルールペース手法と比較して、
ニューラルネットワークベースの手法で大幅に向上している
2.Methodology

デフォルトの中国語モデルでも日本語は部分的に読める。ただし精度は低め(CER 18.91%〜32.51%)。日本語モデル設定で改善可能。

インストール方法

YomiToku

# インストール
pip install yomitoku

# 使用例
from yomitoku import DocumentAnalyzer
import cv2

img = cv2.imread("document.png")
analyzer = DocumentAnalyzer(device='cpu')  # GPUがあれば 'cuda'
result = analyzer(img)
text = '\n'.join(para.contents for para in result[0].paragraphs)
print(text)

Tesseract + PyOCR

# Tesseractインストール(Ubuntu/Debian)
sudo apt install tesseract-ocr tesseract-ocr-jpn tesseract-ocr-eng

# Pythonラッパーインストール
pip install pyocr pillow

# 使用例
import pyocr
from PIL import Image

tools = pyocr.get_available_tools()
tool = tools[0]

img = Image.open("document.png")
text = tool.image_to_string(img, lang='jpn+eng')
print(text)

RapidOCR

# インストール
pip install rapidocr-onnxruntime

# 使用例(デフォルトは中国語)
from rapidocr_onnxruntime import RapidOCR

ocr = RapidOCR()
result, _ = ocr("document.png")
text = '\n'.join([item[1] for item in result])
print(text)

# 日本語モデルを使う場合は別途設定が必要
# https://github.com/RapidAI/RapidOCR/discussions/336

PaddleOCR

# インストール
pip install paddleocr paddlepaddle

# 使用例(日本語モデル)
from paddleocr import PaddleOCR

ocr = PaddleOCR(lang='japan')
result = ocr.predict("document.png")

for item in result:
    texts = item['rec_texts']
    print('\n'.join(texts))

💡 用途別おすすめ

🎯 シンプルなテキスト抽出(日本語・英語・混在)

Tesseract一択。日本語CER 3.49%、日英混在CER 5.36%で最高精度、かつ最速。

⚡ 大量の文書を高速処理したい

Tesseract。YomiTokuの10〜20倍速で、精度は同等以上。

📊 表やレイアウトも解析したい

YomiToku。表構造認識機能が標準搭載。処理は遅いがGPU利用で改善可能。

💰 完全無料で商用利用したい

Tesseract(Apache 2.0)またはRapidOCR(Apache 2.0)。YomiTokuは商用ライセンスが必要。

🌏 多言語文書を扱いたい

Tesseract。100以上の言語に対応。

まとめ

日本語OCRエンジンは、用途に応じて選ぶのが重要。今回のテストでTesseractが圧倒的に優秀だったのは驚きだった。

Tesseractは「古い」「日本語は苦手」というイメージがあったが、実際にテストすると 日本語でもYomiTokuと同等の精度で、処理速度は10〜20倍速いという結果になった。 シンプルなテキスト抽出ならTesseract一択。 一方、YomiTokuは表構造認識やレイアウト解析が必要な場合に強力。 処理速度の課題はGPU利用で大幅に改善できる。

参考リンク