この記事のポイント
- 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エンジン (YomiToku、Tesseract、RapidOCR)を 実際にベンチマークして比較した。
テスト環境
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の認識結果(抜粋)
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(CER 3.49%、2.5秒)≒ YomiToku(CER 3.59%、31.5秒)で精度同等、速度は12倍
- 日英混在文書: Tesseract(CER 5.36%、1.4秒)が圧勝、YomiToku(CER 7.91%、28.7秒)の20倍速
- レイアウト解析・表認識が必要ならYomiToku
- 商用利用ならTesseractかRapidOCR(Apache 2.0)
Tesseractは「古い」「日本語は苦手」というイメージがあったが、実際にテストすると 日本語でもYomiTokuと同等の精度で、処理速度は10〜20倍速いという結果になった。 シンプルなテキスト抽出ならTesseract一択。 一方、YomiTokuは表構造認識やレイアウト解析が必要な場合に強力。 処理速度の課題はGPU利用で大幅に改善できる。