本文へ移動
cccskills
無料GitHub で公開

reliable-pdf-extraction-ac5f89

Extract PDF text content using shell tools or Python libraries when read_file PDF handler fails

インストール方法を見る

含まれるファイル(2)

  • SKILL.md2.7 KB
  • .skill_id44 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Reliable PDF Text Extraction

Problem

The read_file tool with filetype='pdf' can be unreliable for PDF text extraction. It may:

  • Return binary image data instead of text
  • Fail with errors on certain PDF structures
  • Lose formatting or structured content

Solution

Use run_shell with dedicated PDF extraction tools instead of relying on read_file for PDFs.

Methods

Method 1: pdftotext (Recommended)

pdftotext input.pdf output.txt

Or to extract to stdout:

pdftotext input.pdf -

With layout preservation:

pdftotext -layout input.pdf output.txt

Method 2: pdfinfo (Metadata)

pdfinfo input.pdf

Useful for checking page count, dimensions, and PDF properties before extraction.

Method 3: Python with PyMuPDF (fitz)

import fitz  # PyMuPDF

doc = fitz.open("input.pdf")
text = ""
for page in doc:
    text += page.get_text()
doc.close()

Method 4: Python with pdfplumber (Tables)

import pdfplumber

with pdfplumber.open("input.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        tables = page.extract_tables()

Workflow

  1. Check PDF exists and is readable:

    pdfinfo input.pdf 2>/dev/null || echo "PDF not accessible"
    
  2. Extract text using pdftotext:

    pdftotext -layout input.pdf - > extracted_text.txt
    
  3. If pdftotext fails, try Python fallback:

    import fitz
    doc = fitz.open("input.pdf")
    for i, page in enumerate(doc):
        print(f"--- Page {i+1} ---")
        print(page.get_text())
    doc.close()
    
  4. Verify extraction succeeded:

    • Check output is non-empty
    • Verify text is readable (not binary/garbled)
    • Confirm expected content is present

When to Use

ToolBest For
pdftotextFast, simple text extraction
pdftotext -layoutPreserving spacing/formatting
PyMuPDFComplex PDFs, programmatic access
pdfplumberTables and structured data

Example Integration

# In your agent workflow, prefer this pattern:
result = run_shell(command="pdftotext document.pdf -", timeout=30)
if result.stdout and len(result.stdout.strip()) > 0:
    content = result.stdout
else:
    # Fallback to Python
    content = execute_python_to_extract_pdf("document.pdf")

Notes

  • Install tools if needed: apt-get install poppler-utils (for pdftotext/pdfinfo)
  • Python libraries: pip install pymupdf pdfplumber
  • Some PDFs are image-scanned and require OCR (Tesseract) instead
  • Always validate extracted content before proceeding with downstream tasks

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Incremental audio production with duration mismatch handling, adaptive stem extension, and pre-mix alignment verification

日本語の概要は準備中です。原文の説明を表示しています。

HKUDS/OpenSpace7,7552026年8月13日 更新

Incremental audio production with duration alignment handling, per-stem verification, and adaptive extension strategies

日本語の概要は準備中です。原文の説明を表示しています。

HKUDS/OpenSpace7,7552026年8月13日 更新

Create serverless API proxy endpoints that hide API keys and provide a unified backend for the dashboard frontend. Designed for Vercel deployment.

日本語の概要は準備中です。原文の説明を表示しています。

HKUDS/OpenSpace7,7552026年8月13日 更新

End-to-end audio production workflow with stems, effects, archiving, and verification

日本語の概要は準備中です。原文の説明を表示しています。

HKUDS/OpenSpace7,7552026年8月13日 更新

Handle cascading data retrieval tool failures by falling back to embedded knowledge generation

日本語の概要は準備中です。原文の説明を表示しています。

HKUDS/OpenSpace7,7552026年8月13日 更新

Fallback pattern for executing Python code when execute_code_sandbox fails

日本語の概要は準備中です。原文の説明を表示しています。

HKUDS/OpenSpace7,7552026年8月13日 更新

HKUDS のスキルをすべて見る

このスキルの問題を報告する