👁️
OCRオープンソースカタログ — 画像からテキストを抽出するすべての方法
TesseractからEasyOCR、PaddleOCR、Surya、TrOCR、Qwen2-VLまで — 難易度・言語・速度比較
OCR = image → model(image) → text
今まで整理したパターンと同じ。
最も簡単:EasyOCR(3行)
import easyocr
reader = easyocr.Reader(['ja', 'en'])
result = reader.readtext('doc.png')
ツール比較
| ツール | タイプ | サイズ | GPU | CJK | 難易度 |
|---|---|---|---|---|---|
| EasyOCR | CNN+RNN | ~100MB | 不要 | 対応 | ★☆☆☆☆ |
| Tesseract | LSTM | ~15MB | 不要 | 対応 | ★★☆☆☆ |
| PaddleOCR | CNN+RNN | 10-150MB | 不要 | 最強 | ★★☆☆☆ |
| Surya | Transformer | ~300MB | 推奨 | 対応 | ★★☆☆☆ |
| Qwen2-VL | LLM | 2B+ | 必要 | 対応 | ★★★★☆ |
キーコンセプト
1
EasyOCR(★☆☆☆☆)— pip install+3行。80言語。最も簡単
2
PaddleOCR(★★☆☆☆)— CJK最強。軽量モデル10MB
3
Surya(★★☆☆☆)— 最新Transformer。90言語。ベンチマーク最高
4
Tesseract(★★☆☆☆)— 15MBで最軽量。100言語。GPU不要
5
Qwen2-VL(★★★★☆)— マルチモーダルLLM。「読んで」の一言でOCR。GPU必要
ユースケース
文書デジタル化 — スキャンされた文書/画像からテキスト抽出
シーンテキスト認識 — 看板、メニュー、名刺などの写真からテキスト抽出
RAGパイプライン — OCRで文書をテキスト化→ベクトルDBに保存→LLM質疑応答