Skip to content
cccskills
FreePublished on GitHub

yomitoku-ocr

YomiTokuでPDF書籍をOCR処理しMarkdownに変換、目次解析・章分割・テーブル抽出まで 一貫実行するパイプラインスキル。4モード(通常/figure/デュアル/辞書)対応。Apple Silicon MPS最適化。

並列バッチ処理で大規模PDFも高速処理。「書籍OCR」「PDF→Markdown」「章分割」「YomiToku」「本のデジタル化」 「OCRして」「この本をテキスト化」「PDFをMarkdownに」などのキーワードで使用。PDFや書籍のOCR処理を依頼されたら、たとえユーザーが明示的にスキル名を言わなくても 積極的にこのスキルを使うこと。

The English summary is being prepared. Showing the original description.

Works withHugging Face
See how to install

Files included (29)

  • SKILL.md10.2 KB
  • .gitignore104 B
  • agents/ocr-book.md5.0 KB
  • agents/ocr-dictionary.md7.3 KB
  • agents/ocr-extract.md2.9 KB
  • agents/ocr-pipeline.md8.0 KB
  • agents/ocr-toc.md3.1 KB
  • data/known_fixes/__init__.py0 B
  • data/known_fixes/てにをは辞典.py4.6 KB
  • evals/evals.json1.3 KB
  • README.en.md4.0 KB
  • README.md6.5 KB
  • references/API_REFERENCE.md7.0 KB
  • references/APPLE_SILICON.md5.4 KB
  • references/BATCH.md4.8 KB
  • references/CLI_REFERENCE.md10.2 KB
  • references/EXTRACTOR_PITFALLS.md5.5 KB
  • references/EXTRACTOR_REFERENCE.md13.7 KB
  • references/TROUBLESHOOTING.md11.2 KB
  • scripts/check_dependencies.py4.3 KB
  • scripts/clean_ruby_text.py7.5 KB
  • scripts/detect_ruby_errors.py8.6 KB
  • scripts/generate_schema.py5.1 KB
  • scripts/ocr_book.sh9.4 KB
  • scripts/process_book.py45.7 KB
  • scripts/rebuild_chapters.py6.2 KB
  • scripts/reprocess_chapters.py5.7 KB
  • scripts/scan_tables.py6.9 KB
  • scripts/validate_and_fix.py19.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

YomiToku OCR Pipeline

PDF書籍をOCR処理し、目次解析・章分割・テーブル抽出まで一貫実行するパイプライン。

Quick Start

agents/ocr-pipeline.md を Read して、その手順に従って実行する。

PDF入力 → OCR (pages/*.md) → テーブル抽出 → 目次解析 → 章分割 (chapters/*.md)

パス規約

本スキル内のすべてのパスは SKILL_DIR をプレースホルダーとして使用する。

SKILL_DIR = このSKILL.mdが存在するディレクトリの絶対パス。

実行前に解決すること:

SKILL_DIR="/path/to/yomitoku-ocr"  # このファイルの場所

Prerequisites

項目要件
Python3.10-3.13(3.14未対応)
PyTorch2.6以降(pyproject.tomlで torch>=2.6.0, torchvision>=0.21.0)
YomiTokuv0.13.0以降
macOS14.0以降(MPS推論時)。macOS 26 (Tahoe) では PyTorch 2.12 時点で MPS 不可。TROUBLESHOOTING を参照
popplerbrew install poppler
RAM16GB以上(64GB推奨)
VRAM8GB以上推奨(GPUモード)

インストール

brew install uv poppler

# SOCKS プロキシを経由する環境では httpx[socks] を同梱しないと起動できない
uv tool install 'yomitoku[extract]' --with 'httpx[socks]' --python 3.13

# 既存インストールを最新版に上げる(socks 同梱を保つ)
uv tool install 'yomitoku[extract]' --with 'httpx[socks]' --reinstall --python 3.13
# あるいは
uv tool upgrade yomitoku

SOCKS proxy について: ALL_PROXY=socks5://... や Cloudflare WARP, Mullvad 等が有効な環境では、yomitoku が HuggingFace Hub に HEAD リクエストを送る段階で ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. を踏む。上記の --with 'httpx[socks]' でこれを回避する。

モデルキャッシュ

download_model でモデルを明示的にプリフェッチする。初回は sandbox 外で 1 回実行する(sandbox の filesystem 制限で ~/.cache/huggingface/hub/ への書き込みが拒否されるため):

# ターミナルで直接、または Claude Code 内で `!` プレフィックスで sandbox を抜けて実行
download_model

# 確認: モデルキャッシュが取得されたか
ls ~/.cache/huggingface/hub/ | grep -i yomitoku

未実行でも初回 OCR 時に自動ダウンロードを試みるが、sandbox 制限下では PermissionError: Operation not permitted: ~/.cache/huggingface/hub/... で失敗する。

依存関係チェック

python3 SKILL_DIR/scripts/check_dependencies.py

パイプライン概要

4つのモードがある:

モードいつ使う処理内容
A. 通常デフォルトOCR → テーブル抽出 → 章分割
B. figure図版が必要な本OCR(--figure) → テーブル抽出 → 章分割
C. デュアルテキスト+図版両方必要通常OCR + figureOCR → テーブル抽出 → 章分割(2種)
D. 辞書辞書・事典類OCR(--dpi 300 --ignore_ruby --ruby_threshold 2.0) → 残ルビ最終調整 → エラー検出 → 章分割

辞書モードは --ignore_ruby でルビを除去し、残ったルビを clean_ruby_text.py の Stage 1 (既知パターン置換) で補正する。詳細は agents/ocr-dictionary.md。

使い方

  1. このSKILL.mdのパスから SKILL_DIR を解決する
  2. agents/ocr-pipeline.md を Read する
  3. そこに記載された手順に従ってパイプラインを実行する

パイプラインは人間の介入なしに自動で各ステップを連結する。

エージェント一覧

ステップエージェント役割
全体制御ocr-pipelineパイプライン全体のオーケストレーション
OCR実行ocr-bookPDF→ページ単位Markdown変換
テーブル抽出ocr-extractテーブルリッチ文書の構造化データ抽出
目次解析+章分割ocr-tocLLMベース目次解析と章分割
辞書後処理ocr-dictionaryルビ崩壊修正+JMDictエラー検出

サンドボックスとセットアップ

YomiToku は初回起動時に HuggingFace Hub からモデル(約630MB)をダウンロードする。 2回目以降はローカルキャッシュを使用するが、起動時に HEAD リクエストを送る仕様がある。

初回セットアップ(必須)

パイプライン実行前にモデルキャッシュを準備する。 ユーザーに以下を実行してもらう:

download_model

または Claude Code 内で ! プレフィックスを使う:

! download_model

サンドボックス内での動作

モデルキャッシュ済みの場合、yomitoku の HEAD リクエストは 404 を受けて正常続行する。 ただしサンドボックスがネットワークをブロックすると LocalEntryNotFoundError になる。

推奨: サンドボックスの allowedHosts に HuggingFace を追加する:

{
  "permissions": {
    "allow": [],
    "deny": []
  },
  "sandbox": {
    "allowedHosts": ["huggingface.co", "*.hf.co"]
  }
}

フォールバック

上記で解決しない場合のみ dangerouslyDisableSandbox: true を使用する。 これは全保護を無効化するため最終手段として扱うこと。

  • HF_HUB_OFFLINE=1 は使用禁止(キャッシュ参照にも失敗する)
  • /tmp 問題は $TMPDIR で回避済み(ocr_book.sh が自動処理)

メモリ制約

load_pdf はページを遅延レンダリングするので、メモリの制約になるのは OCR推論時の GPU/MPS メモリ:

  • 1プロセスあたり OCR 推論で約 5-7GB(M2 Pro 32GB / M4 Pro 64GB 共通の実測値)
  • 並列上限: 通常モード最大5、figureモード最大1(検出器が大きく単体でVRAMを食う)
  • 並列はあくまで「OCR推論のスループット最大化」目的。1プロセス全通しと比較した実測値は references/BATCH.md を参照
  • ユーザー指示なしにオプションを追加しないこと

Apple Silicon 環境変数

詳しくは references/APPLE_SILICON.md を参照。スキル側の既定方針は以下:

export PYTORCH_ENABLE_MPS_FALLBACK=1
  • PYTORCH_MPS_HIGH_WATERMARK_RATIO / PYTORCH_MPS_LOW_WATERMARK_RATIO は両方ペアで明示する場合のみ設定する(HIGH のみ単独設定で invalid low watermark ratio を踏んだ報告あり)
  • macOS 26 (Tahoe) は PyTorch 2.12 時点で MPS が available=False。CPU 推論 (--lite -d cpu) で動かすか、対応版の PyTorch を待つこと

出力構造

ocr_output/{書籍名}/
├── README.md              # 目次リンク付きメタ情報
├── chapters/              # 章ごとに統合されたMarkdown
├── pages/                 # ページごとのOCR出力(元データ)
├── figures/               # 図版(figureモード時)
├── _extractions/          # テーブル抽出結果(テーブルリッチ時)
├── chapter_override.json  # 章構成定義
└── .ocr_complete          # OCR完了フラグ

リファレンス一覧

ドキュメント内容いつ読むか
API ReferencePython API詳細カスタムスクリプト作成時
Apple SiliconMPS設定・メモリ管理Apple Silicon環境の最適化時
Batch処理ディレクトリ一括処理大量ファイル処理時
CLI Reference全CLIオプションオプション確認時
Extractor ReferenceYAMLスキーマ詳細テーブル抽出のカスタマイズ時
Extractor PitfallsExtractor注意点抽出結果に問題がある時
Troubleshootingエラー対処法エラー発生時

エラーハンドリング

エラー解決策
ModuleNotFoundError: yomitokuuv tool install yomitoku --python 3.13
PDFInfoNotInstalledErrorbrew install poppler
LocalEntryNotFoundError「サンドボックス内での動作」の手順 (allowedHosts 追加) を先に試し、解決しない場合のみ dangerouslyDisableSandbox: true
The MPS backend is supported on macOS 14.0+macOS 26 では PyTorch 2.12 が MPS を未対応扱いする既知問題。CPU 推論にフォールバック
MPS device not foundmacOS 14.0以降 + ARM64 Python必須
Out of Memory--lite使用、並列数を減らす
PDF 0バイトDropbox Smart Sync確認、ローカルにダウンロード

デバイス別性能

環境デバイス処理時間/ページ
NVIDIA GPUcuda約7秒
Apple Silicon (M2 Pro)mps約12秒 (PyTorch 2.9.1) — macOS 14/15 で実測
CPUcpu (--lite)約78秒

macOS 26 + PyTorch 2.12 では現状 MPS が使えないため、上記の MPS 行は再現できない。CPU フォールバック (--lite -d cpu) で約 78 秒/ページが現実的なライン。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill