Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aliceisjustplaying avatar

Pdf To Markdown

  • 244 installs
  • 5 repo stars
  • Updated December 22, 2025
  • aliceisjustplaying/claude-resources-monorepo

pdf-to-markdown is a Claude skill that converts entire PDF documents into clean, structured Markdown using IBM Docling AI.

About

pdf-to-markdown converts entire PDF documents to clean, structured Markdown for full context loading. It uses IBM Docling AI to preserve headers, bold and italic formatting, tables via the TableFormer model, lists, multi-column reading order, code blocks, and extracted images. A developer uses it when they want the whole PDF in context rather than grepping page by page. Extractions are cached by content hash so repeat runs are instant.

  • Converts entire PDFs to structured Markdown using IBM Docling AI
  • Preserves headers, tables, lists, multi-column order, code blocks, and images
  • Aggressively caches extractions by content hash for instant re-runs

Pdf To Markdown by the numbers

  • 244 all-time installs (skills.sh)
  • Ranked #214 of 688 Office & Documents skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

pdf-to-markdown capabilities & compatibility

Capabilities
pdf parsing · documentation
Use cases
pdf parsing · documentation
Pricing
Free
From the docs

What pdf-to-markdown says it does

Extract complete PDF content as structured Markdown using IBM Docling AI, preserving:
SKILL.md
Tables (high-accuracy extraction using TableFormer AI model)
SKILL.md
PDFs are **aggressively cached** to avoid re-processing. First extraction is slow (~1 sec/page), every subsequent request is instant.
SKILL.md
npx skills add https://github.com/aliceisjustplaying/claude-resources-monorepo --skill pdf-to-markdown

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs244
repo stars5
Last updatedDecember 22, 2025
Repositoryaliceisjustplaying/claude-resources-monorepo

What it does

Convert a full PDF into structured Markdown so its entire content can be loaded into context.

Who is it for?

Loading a whole PDF, including tables and figures, into context as structured Markdown

Skip if: Quick page-by-page grep or partial search of a PDF, which this skill is meant to replace

When should I use this skill?

The user wants to extract all text from a PDF into context, load or read the entire PDF, or preserve tables and structure that grepping would miss

What you get

A single Markdown file with preserved structure, tables, and referenced images for the whole PDF

  • a Markdown file with preserved structure
  • an images folder next to the output

By the numbers

  • First extraction runs about 1 second per page, then cached runs are instant

Files

SKILL.mdMarkdownGitHub ↗

PDF to Markdown Converter

Extract complete PDF content as structured Markdown using IBM Docling AI, preserving:

  • Headers (detected by font size, converted to # tags)
  • Bold, italic, monospace formatting
  • Tables (high-accuracy extraction using TableFormer AI model)
  • Lists (ordered and unordered)
  • Multi-column layouts (correct reading order)
  • Code blocks
  • Images (extracted and copied next to output with relative paths)

When to Use This Skill

USE THIS when:

  • User wants the "whole PDF" or "entire document" in context
  • Analyzing, summarizing, or discussing PDF content
  • User says "load", "read", "bring in", "extract" a PDF
  • Grepping/searching would miss context or structure
  • PDF has tables, formatting, or structure to preserve

Environment Setup

This skill uses a dedicated virtual environment at ~/.claude/skills/pdf-to-markdown/.venv/ to avoid polluting the user's working directory.

First-Time Setup (if .venv doesn't exist)

cd ~/.claude/skills/pdf-to-markdown && uv venv .venv && uv pip install --python .venv/bin/python pymupdf docling docling-core

Verify Installation

~/.claude/skills/pdf-to-markdown/.venv/bin/python -c "import pymupdf; import docling; import docling_core; print('OK')"

Quick Start

# Convert PDF to markdown (always extracts images)
~/.claude/skills/pdf-to-markdown/.venv/bin/python ~/.claude/skills/pdf-to-markdown/scripts/pdf_to_md.py document.pdf

# Output: document.md + images/ folder (next to the .md file)

Standard Workflow

When user provides a PDF and wants full content in context:

Step 1: Ensure the skill venv exists

test -d ~/.claude/skills/pdf-to-markdown/.venv || (cd ~/.claude/skills/pdf-to-markdown && uv venv .venv && uv pip install --python .venv/bin/python pymupdf docling docling-core)

Step 2: Convert PDF to Markdown

~/.claude/skills/pdf-to-markdown/.venv/bin/python ~/.claude/skills/pdf-to-markdown/scripts/pdf_to_md.py "/path/to/document.pdf"

Step 3: Read the output

# Output is written to document.md in the same directory as the PDF
cat /path/to/document.md

Caching

PDFs are aggressively cached to avoid re-processing. First extraction is slow (~1 sec/page), every subsequent request is instant.

How It Works

  • Cache location: ~/.cache/pdf-to-markdown/<cache_key>/
  • Cache key: Based on file content hash
  • Invalidation: Cache is invalidated when:
  • Source PDF is modified (size or mtime changes)
  • Extractor version changes (automatic re-extraction)
  • Explicitly cleared with --clear-cache or --clear-all-cache

Cache Commands

# Clear cache for a specific PDF
~/.claude/skills/pdf-to-markdown/.venv/bin/python ~/.claude/skills/pdf-to-markdown/scripts/pdf_to_md.py document.pdf --clear-cache

# Clear entire cache
~/.claude/skills/pdf-to-markdown/.venv/bin/python ~/.claude/skills/pdf-to-markdown/scripts/pdf_to_md.py --clear-all-cache

# Show cache statistics
~/.claude/skills/pdf-to-markdown/.venv/bin/python ~/.claude/skills/pdf-to-markdown/scripts/pdf_to_md.py --cache-stats

Cache Contents

~/.cache/pdf-to-markdown/<cache_key>/
├── metadata.json    # source path, mtime, size, total_pages
├── full_output.md   # cached full markdown
└── images/          # extracted images

Image Handling

Images are always extracted. They are:

  • Cached in ~/.cache/pdf-to-markdown/<cache_key>/images/
  • Copied to images/ folder next to the output .md file
  • Referenced in the markdown with relative paths (images/filename.png)
  • Summarized in a table at the end of the document

Auto-View Behavior for Images

IMPORTANT: When the extracted markdown contains image references like:

**[Image: figure_1.png (1200x800, 125.3KB)]**

And the user asks about something that might be visual (charts, graphs, diagrams, figures, screenshots, layouts, designs, plots, illustrations), automatically use the Read tool to view the relevant image file(s) before answering. Don't ask the user - just look at it.

Examples of when to auto-view images:

  • User: "What does the chart on page 3 show?" → Read the image file
  • User: "Summarize the figures in this paper" → Read all image files
  • User: "What's in the diagram?" → Read the image file
  • User: "Describe the architecture shown" → Read the image file
  • User: "What are the results?" (and there's a results figure) → Read it

Output Format

The markdown output includes:

Header (metadata)

---
source: document.pdf
total_pages: 42
extracted_at: 2025-01-15T10:30:00
from_cache: true
images_dir: images
---

Content with image references

# Main Title

## Section Header

Regular paragraph text with **bold**, *italic*, and `code` formatting.

![Figure 1](images/figure_1.png)

**[Image: figure_1.png (800x600, 45.2KB)]**

| Column A | Column B |
|----------|----------|
| Data 1   | Data 2   |

Image summary table (at end)

---

## Extracted Images

| # | File | Dimensions | Size |
|---|------|------------|------|
| 1 | figure_1.png | 800x600 | 45.2KB |
| 2 | chart_2.png | 1200x800 | 89.1KB |

Script Reference

Location: ~/.claude/skills/pdf-to-markdown/scripts/pdf_to_md.py

Usage: pdf_to_md.py <input.pdf> [output.md] [options]

Options:
  --no-progress     Disable progress indicator

Cache Options:
  --clear-cache        Clear cache for this PDF and re-extract
  --clear-all-cache    Clear entire cache directory and exit
  --cache-stats        Show cache statistics and exit

Performance

  • First extraction: ~1 second per page (Docling AI processing)
  • First run: Downloads AI models (~500MB one-time)
  • Cached extraction: Instant
  • High-resolution images: 4x default resolution for crisp output

Troubleshooting

"No module named docling" or venv doesn't exist

Recreate the skill's virtual environment:

cd ~/.claude/skills/pdf-to-markdown && rm -rf .venv && uv venv .venv && uv pip install --python .venv/bin/python pymupdf docling docling-core

Poor extraction quality

For scanned PDFs, ensure Tesseract OCR is installed: brew install tesseract

Tables not formatting correctly

This skill uses IBM's TableFormer AI model which has ~93.6% accuracy on complex tables. If tables are still garbled, the PDF may have unusual formatting.

Related skills

FAQ

What library does it use?

It uses IBM Docling AI with the TableFormer model for high-accuracy table extraction, run in a dedicated Python virtual environment.

Does it re-process the same PDF every time?

No. PDFs are aggressively cached by content hash, so the first extraction is slow but every subsequent request is instant.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.