# Oma PDF

Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf.

- Repository: https://github.com/first-fluke/oh-my-agent (1356 stars)
- Category: Documents
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add first-fluke/oh-my-agent --skill oma-pdf -g -a claude-code -y`
Codex: `npx skills add first-fluke/oh-my-agent --skill oma-pdf -g -a codex -y`
Cursor: `npx skills add first-fluke/oh-my-agent --skill oma-pdf -g -a cursor -y`
Gemini CLI: `npx skills add first-fluke/oh-my-agent --skill oma-pdf -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add first-fluke/oh-my-agent`

## Description

Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf. Use for PDF parsing, not PDF layout creation.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# PDF Skill - PDF to Markdown Conversion

## Scheduling

### Goal
Convert PDF files into structured Markdown or another requested extraction format while preserving readable document structure for LLM context, RAG, or downstream review.

### Intent signature
- User asks to convert, parse, read, extract, or transform a PDF.
- User needs PDF text, headings, lists, tables, or images prepared for AI consumption.
- User mentions "PDF to markdown", "parse PDF", "read this PDF", or equivalent wording.

### When to use
- Converting PDF documents to Markdown for LLM context or RAG
- Extracting structured content such as tables, headings, lists, images, footnotes, or hyperlinks
- Preparing PDF data for AI consumption
- Checking whether a PDF has a text layer before choosing OCR

### When NOT to use
- Generating or creating PDFs -> use document-generation tools
- Editing existing PDFs -> out of scope
- Reading an already-text file -> use direct file reading
- Processing HWP, HWPX, DOCX, XLSX, or slide decks -> use the matching document skill

### Expected inputs
- `input_path`: PDF file or folder path
- `output_dir`: optional target directory
- `format`: optional output format, default `markdown`
- `ocr_languages`: optional OCR language list for scanned or image-based PDFs
- `extraction_options`: optional flags for tagged structure, image extraction, or hybrid conversion

### Expected outputs
- Markdown, text, JSON, HTML, or combined extraction output
- Normalized Markdown when Markdown is produced
- A short report with output path, page count, and conversion issues

### Dependencies
- `uvx opendataloader-pdf` for standard conversion
- `uvx --from "opendataloader-pdf[hybrid]" opendataloader-pdf-hybrid` for OCR or hybrid conversion (the hybrid server is a console script of the `[hybrid]` extra, not a standalone package)
- `uvx mdformat` for Markdown normalization
- Local filesystem access to input and output paths
- Optional OCR runtime via the hybrid server

The rest: https://github.com/first-fluke/oh-my-agent/blob/HEAD/.agents/skills/oma-pdf/SKILL.md
