fetchしたときCORSで弾かれるので、こいつで解決!
https://corsproxy.io/
意味あるんかな?!この謎スクレイパー。
| 項目 | あなたの実装 (EasyOCR) | NDLOCR-Lite (Python版) |
|---|---|---|
| 推論ランタイム | PyTorch (~2GB+) | ONNX Runtime (~50MB) |
| 検出モデル | CRAFT | DEIMv2 (2025年, 最新) |
| 認識モデル | EasyOCR内蔵 LSTM/Transformer | PARSeq × 3 (カスケード) |
| 依存関係の重さ | 非常に重い (PyTorch + torchvision) | 軽い (onnxruntime + opencv-headless) |
| モデルサイズ | ~200MB+ (自動DL) | ~146MB (ONNX) |
| GPU対応 | PyTorch CUDA | ONNX Runtime CUDA (オプション) |
| 文字セット | EasyOCR内蔵 (en/ja) | NDLmoji (国会図書館文字セット) |
依存関係の軽さが圧倒的に違う
NDLOCR-Liteのrequirements.txtを見ると:
PyTorch が一切不要です。EasyOCRはPyTorch + torchvision が必須で、これだけで2GB以上のインストールサイズになります。NDLOCR-Liteは ONNX Runtime のみで動作するため、環境構築が格段に簡単で軽量です。
モデルの世代が新しい
| モデル | EasyOCR | NDLOCR-Lite |
|---|---|---|
| 検出 | CRAFT (2019年) | DEIMv2 (2025年, arXiv:2509.20787) |
| 認識 | LSTM/Transformer (旧世代) | PARSeq (2022年, arXiv:2207.06966) |
DEIMv2は「Real-Time Object Detection Meets DINOv3」がベースで、CRAFTより5年以上新しいモデルです。PARSeqも「Permuted Autoregressive Sequence Models」で、EasyOCRの内蔵モデルより世代が新しいです。
カスケード認識が賢い
NDLOCR-Liteのソースコードを読むと、単純に3モデルを使い分けるだけでなく、フォールバック機構が実装されています:
これにより、文字数予測が外れた場合でも精度が担保されます。
NDLOCR-Lite Python版: 適合度 ★★★☆☆
前回のWeb版(★★☆☆☆)より評価を上げた理由:
| 利点 | 詳細 |
|---|---|
| PyTorch不要 | 環境構築が劇的に簡単。N100等の低スペックマシンでもインストール容易 |
| ONNX Runtimeは高速 | PyTorch推論より一般的に速い。CPU推論に最適化されている |
| Python統合が容易 | そのままPythonプロジェクトに組み込める |
| GPU対応 | onnxruntime-gpu で CUDA も使える |
| 課題 | 詳細 |
|---|---|
| 訓練データの不一致 | NDLmojiは日本の書籍・雑誌向け。ゲームUIの「mBTC0.71」は訓練分布外 |
| DEIMv2が不要 | あなたは既にテンプレートマッチングで領域を特定済み。レイアウト検出は無駄なオーバーヘッド |
| 文字セットの偏り | 英数字+通貨記号は含まれるが、主力は漢字・かな。数字認識に最適化されていない |
これにより:
parse_balance_value() の後処理はそのまま維持| 評価軸 | EasyOCR | NDLOCR-Lite全体 | NDLOCR-Lite Web版 | PARSeq単体利用 |
|---|---|---|---|---|
| 数値認識精度 | ◎ | ○ | ○ | ○ |
| 環境構築の容易さ | △ | ◎ | ◎ | ◎ |
| 推論速度 (CPU) | ○ | ○ | △ | ◎ |
| 推論速度 (GPU) | ◎ | ○ | - | ○ |
| メモリ消費 | △ (~2GB+) | ○ (~200MB) | ○ (~146MB) | ◎ (~50MB) |
| Python統合 | ◎ | ◎ | △ | ◎ |
| 用途適合度 | ★★★★ | ★★★ | ★★ | ★★★☆ |
NDLOCR-Liteでは、PARSeqを3つのサイズ違いで使い分けている:
| モデル | 入力サイズ | 最大文字数 | 用途 |
|---|---|---|---|
| PARSeq-30 | 16×256 | ≤30文字 | 短い行(見出し等) |
| PARSeq-50 | 16×384 | ≤50文字 | 中程度の行 |
| PARSeq-100 | 16×768 | ≤100文字 | 長い行(本文等) |
入力幅が異なるだけで、アーキテクチャは同じ。短い行に大きなモデルを使うと無駄が出るので、効率化のためにカスケード方式を採用している。
| モデル | 年代 | 役割 |
|---|---|---|
| DEIMv2 | 2025年 (arXiv:2509.20787) | レイアウト検出(テキスト行の矩形を見つける) |
| PARSeq | 2022年 (arXiv:2207.06966) | テキスト認識(切り出した画像から文字を読む) |
あいうえお