pdf-large-reader

Memory-efficient PDF processing library for large files exceeding 100MB and 1000 pages

5 stars

Best use case

pdf-large-reader is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Memory-efficient PDF processing library for large files exceeding 100MB and 1000 pages

Teams using pdf-large-reader should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/large-reader/SKILL.md --create-dirs "https://raw.githubusercontent.com/vamseeachanta/workspace-hub/main/.agents/skills/data/documents/pdf/large-reader/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/large-reader/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How pdf-large-reader Compares

Feature / Agentpdf-large-readerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Memory-efficient PDF processing library for large files exceeding 100MB and 1000 pages

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# pdf-large-reader Skill

Memory-efficient PDF processing library for large files (100MB+, 1000+ pages).

## Repository

- **Location:** `/mnt/github/workspace-hub/pdf-large-reader`
- **GitHub:** https://github.com/vamseeachanta/pdf-large-reader
- **Coverage:** 93.58% (215 tests)

## Installation

```bash
cd /mnt/github/workspace-hub/pdf-large-reader
pip install -e .
```

## Quick Usage

### Python API

```python
from pdf_large_reader import process_large_pdf, extract_text_only

# Simple text extraction
text = extract_text_only("large_document.pdf")

# Full processing with options
result = process_large_pdf(
    "document.pdf",
    output_format="generator",  # "generator", "list", or "text"
    extract_images=True,
    extract_tables=True
)

# Stream pages for memory efficiency
for page in result:
    print(f"Page {page['page_num']}: {page['text'][:100]}...")
```

### CLI Tool

```bash
# Extract text
pdf-large-reader extract document.pdf

# Extract with options
pdf-large-reader extract document.pdf --output-format text --extract-images

# Get PDF info
pdf-large-reader info document.pdf
```

## Key Features

| Feature | Description |
|---------|-------------|
| **Streaming** | Generator output for memory efficiency |
| **Auto Strategy** | Intelligent chunk sizing based on file size |
| **Multi-format** | Text, images, tables, metadata extraction |
| **Progress** | Built-in progress callbacks |
| **AI Fallback** | Codex integration for complex extraction |

## Output Formats

### Generator (Streaming) - Default
```python
for page in process_large_pdf("doc.pdf", output_format="generator"):
    # Process one page at a time - memory efficient
    handle_page(page)
```

### List
```python
pages = process_large_pdf("doc.pdf", output_format="list")
# All pages in memory - use for smaller files
```

### Text
```python
text = process_large_pdf("doc.pdf", output_format="text")
# Plain text concatenation
```

## When to Use

- Processing PDFs > 50MB
- Batch processing many PDFs
- Extracting content from 100+ page documents
- Memory-constrained environments
- Streaming PDF content to other systems

## Integration Example

```python
from pdf_large_reader import process_large_pdf
from pathlib import Path

def process_pdf_directory(directory: str):
    """Process all PDFs in a directory efficiently."""
    pdf_dir = Path(directory)

    for pdf_file in pdf_dir.glob("*.pdf"):
        print(f"Processing: {pdf_file.name}")

        # Stream pages to avoid memory issues
        for page in process_large_pdf(str(pdf_file)):
            # Index, analyze, or store each page
            yield {
                "file": pdf_file.name,
                "page": page["page_num"],
                "text": page["text"],
                "images": len(page.get("images", []))
            }
```

## Error Handling

```python
from pdf_large_reader import process_large_pdf
from pdf_large_reader.exceptions import PDFProcessingError

try:
    result = process_large_pdf("document.pdf")
except PDFProcessingError as e:
    print(f"PDF processing failed: {e}")
except FileNotFoundError:
    print("PDF file not found")
```

## Related Skills

- `file-org-standards` - Where to store extracted content
- `logging-standards` - Logging PDF processing operations

Related Skills

git-large-file-staging-conflict-recovery

5
from vamseeachanta/workspace-hub

Recover from pre-commit hook blocks on oversized files and corrupted rebase states during bulk repo syncs

large-parallel-planning-wave-environment-failure-handoff

5
from vamseeachanta/workspace-hub

Handle large pre-plan-review planning waves that succeed analytically but fail to persist artifacts due to quota exhaustion, sandbox write failures, or cancelled GitHub mutations.

large-lint-gate-restoration-wave

5
from vamseeachanta/workspace-hub

Restore a red repository Lint job when flake8 debt is large and mixed, by inventorying outliers, splitting issue ownership, using local direct-venv iteration, inspecting broad auto-format diffs, and closing only after exact local and GitHub Actions Lint proof.

clean-code-git-plumbing-for-repos-with-large-pack-files

5
from vamseeachanta/workspace-hub

Sub-skill of clean-code: Git Plumbing for Repos with Large Pack Files (+1).

highcharts-boost-module-large-datasets

5
from vamseeachanta/workspace-hub

Sub-skill of highcharts: Boost Module (Large Datasets) (+2).

openpyxl-5-large-dataset-handling-with-streaming

5
from vamseeachanta/workspace-hub

Sub-skill of openpyxl: 5. Large Dataset Handling with Streaming.

pdf-why-use-pdf-large-reader

5
from vamseeachanta/workspace-hub

Sub-skill of pdf: Why Use PDF-Large-Reader? (+8).

ydata-profiling-5-large-dataset-handling

5
from vamseeachanta/workspace-hub

Sub-skill of ydata-profiling: 5. Large Dataset Handling.

ydata-profiling-1-use-minimal-mode-for-large-datasets

5
from vamseeachanta/workspace-hub

Sub-skill of ydata-profiling: 1. Use Minimal Mode for Large Datasets (+3).

autoviz-1-sample-large-datasets

5
from vamseeachanta/workspace-hub

Sub-skill of autoviz: 1. Sample Large Datasets (+3).

test-oversized-skill

5
from vamseeachanta/workspace-hub

A test fixture skill that exceeds 200 lines with multiple H2/H3 sections for split testing.

interactive-report-generator

5
from vamseeachanta/workspace-hub

Generate interactive HTML reports with Plotly visualizations from data analysis results. Supports dashboards, charts, and professional styling.