ocr-and-documents について
ocr-and-documents は、PDF やスキャン文書から内容を抽出するスキルです。軽量な PyMuPDF と、複雑なレイアウトや画像ページに対応する marker-pdf の OCR を用途に応じて選べます。
主な機能
- 01PDFからテキストとMarkdownを抽出
- 02marker-pdfでスキャン文書をOCR
- 03表・画像・メタデータを抽出
- 04ページ指定と一括処理
- 05PDFの分割・結合・検索
活用シーン
- 01テキストベースのPDFから内容を抽出
- 02スキャンページを検索可能なテキストに変換
- 03文書から表や画像を取り出す
- 04PDFファイルを結合・分割・検索
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nousresearch/ hermes-agent --skill ocr-and-documentsインストール後、Claude Code で/ocr-and-documentsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
DESCRIPTION.mdscripts/extract_marker.pyextract_pymupdf.py詳細
PDF とドキュメントの抽出
DOCX の場合:作成・編集には docx スキルを参照するか、構造化された読み取りには python-docx を使用してください。
PPTX の場合:作成・読み取り・編集をすべてサポートする powerpoint スキルを参照してください。
PDF の操作(結合、分割、フォーム、透かし、作成)の場合:pdf スキルを参照してください。
このスキルでは、PDF およびスキャンされたドキュメントからのテキスト抽出を扱います。
read_fileの抽出範囲に関する警告が表示されましたか?read_fileはローカル PDF を自動変換しますが、テキストレイヤーのみを読み取ります。警告フッターには、テキストを取得できなかったページ(スキャン画像)が記載されています。数ページだけの場合は、レンダリングしてビジョンで解析するのが最速です:pdftoppm -jpeg -r 150 -f N -l N file.pdf /tmp/pageを実行し、各画像をvision_analyzeで解析します。多数のページを一括 OCR する場合は、以下の marker-pdf を使用してください(手順 2)。
手順 1:リモート URL はありますか?
ドキュメントに URL がある場合は、必ず最初に web_extract を試してください:
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
web_extract(urls=["https://example.com/report.pdf"])
これにより、ローカル依存関係なしで Firecrawl を介して PDF を Markdown に変換できます。
ローカル抽出を使用するのは、ファイルがローカルにある場合、web_extract が失敗した場合、または一括処理が必要な場合に限ります。
手順 2:ローカル抽出ツールを選択する
| 機能 | pymupdf(約25MB) | marker-pdf(約3〜5GB) |
|---|---|---|
| テキストベースの PDF | ✅ | ✅ |
| スキャンされた PDF(OCR) | ❌ | ✅(90 以上の言語) |
| 表 | ✅(基本) | ✅(高精度) |
| 数式 / LaTeX | ❌ | ✅ |
| コードブロック | ❌ | ✅ |
| フォーム | ❌ | ✅ |
| ヘッダー/フッターの削除 | ❌ | ✅ |
| 読み取り順序の検出 | ❌ | ✅ |
| 画像の抽出 | ✅(埋め込み) | ✅(コンテキスト付き) |
| 画像 → テキスト(OCR) | ❌ | ✅ |
| EPUB | ✅ | ✅ |
| Markdown 出力 | ✅(pymupdf4llm 経由) | ✅(ネイティブ、高品質) |
| インストールサイズ | 約25MB | 約3〜5GB(PyTorch + モデル) |
| 速度 | 即時 | 約1〜14秒/ページ(CPU)、約0.2秒/ページ(GPU) |
選択の目安:OCR、数式、フォーム、複雑なレイアウト分析が必要でない限り、pymupdf を使用してください。
ユーザーが marker の機能を必要としているものの、システムに約5GBの空き容量がない場合:
「このドキュメントには OCR/高度な抽出(marker-pdf)が必要で、PyTorch とモデル用に約5GBの空き容量が必要です。システムの空き容量は [X]GB です。空き容量を確保するか、URL を提供して web_extract を使用するか、テキストベースの PDF には対応しますが、スキャンされたドキュメントや数式には対応しない pymupdf を試すことができます。」
pymupdf(軽量)
pip install pymupdf pymupdf4llm
ヘルパースクリプト経由:
python scripts/extract_pymupdf.py document.pdf # Plain text
python scripts/extract_pymupdf.py document.pdf --markdown # Markdown
python scripts/extract_pymupdf.py document.pdf --tables # Tables
python scripts/extract_pymupdf.py document.pdf --images out/ # Extract images
python scripts/extract_pymupdf.py document.pdf --metadata # Title, author, pages
python scripts/extract_pymupdf.py document.pdf --pages 0-4 # Specific pages
インライン:
python -c "
import pymupdf
doc = pymupdf.open('document.pdf')
for page in doc:
print(page.get_text())
"
marker-pdf(高品質 OCR)
# Check disk space first
python scripts/extract_marker.py --check
pip install marker-pdf
ヘルパースクリプト経由:
python scripts/extract_marker.py document.pdf # Markdown
python scripts/extract_marker.py document.pdf --json # JSON with metadata
python scripts/extract_marker.py document.pdf --output_dir out/ # Save images
python scripts/extract_marker.py scanned.pdf # Scanned PDF (OCR)
python scripts/extract_marker.py document.pdf --use_llm # LLM-boosted accuracy
CLI(marker-pdf とともにインストール):
marker_single document.pdf --output_dir ./output
marker /path/to/folder --workers 4 # Batch
Arxiv 論文
# Abstract only (fast)
web_extract(urls=["https://arxiv.org/abs/2402.03300"])
# Full paper
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
# Search
web_search(query="arxiv GRPO reinforcement learning 2026")
分割、結合、検索
pymupdf はこれらをネイティブに処理できます。execute_code またはインライン Python を使用してください:
# Split: extract pages 1-5 to a new PDF
import pymupdf
doc = pymupdf.open("report.pdf")
new = pymupdf.open()
for i in range(5):
new.insert_pdf(doc, from_page=i, to_page=i)
new.save("pages_1-5.pdf")
# Merge multiple PDFs
import pymupdf
result = pymupdf.open()
for path in ["a.pdf", "b.pdf", "c.pdf"]:
result.insert_pdf(pymupdf.open(path))
result.save("merged.pdf")
# Search for text across all pages
import pymupdf
doc = pymupdf.open("report.pdf")
for i, page in enumerate(doc):
results = page.search_for("revenue")
if results:
print(f"Page {i+1}: {len(results)} match(es)")
print(page.get_text("text"))
追加の依存関係は不要です。pymupdf だけで、分割、結合、検索、テキスト抽出を一括して処理できます。
注意事項
- URL がある場合は、常に
web_extractを最初に試してください - pymupdf は安全なデフォルトです。即時に動作し、モデルは不要で、どこでも使用できます
- marker-pdf は OCR、スキャンされたドキュメント、数式、複雑なレイアウトに使用します。必要な場合にのみインストールしてください
- どちらのヘルパースクリプトも、全使用方法を確認するための
--helpを受け付けます - marker-pdf は初回使用時に約2.5GBのモデルを
~/.cache/huggingface/にダウンロードします - Word ドキュメントの場合:
pip install python-docxを実行してください(OCR より優れており、実際の構造を解析します) - PowerPoint の場合:
powerpointスキルを参照してください(python-pptx を使用します)