# Ocr Document

> Extract text from PDFs, images, and scanned documents. Uses pymupdf (local) or optional cloud OCR APIs.

- Skill: `fuyuxiang/ocr-document` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add fuyuxiang/ocr-document`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fuyuxiang/ocr-document/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: fuyuxiang (https://skillmd.com/u/fuyuxiang)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/fuyuxiang/ocr-document

---


# OCR & Document Processing

Extract text from PDFs, scanned images, and documents.

## PDF Text Extraction (PyMuPDF)

Best choice for text-based PDFs:

```bash
pip install pymupdf
```

```python
import pymupdf

doc = pymupdf.open("file.pdf")
for page in doc:
    text = page.get_text()
    print(text)

# All pages at once
full_text = "\n".join(page.get_text() for page in doc)
```

## PDF → Markdown (marker-pdf)

High-quality conversion preserving structure:

```bash
pip install marker-pdf
marker_single file.pdf output_dir/ --output_format markdown
```

## Image OCR

### Surya OCR (Modern ML-based, best for Chinese)

```bash
pip install surya-ocr
surya_ocr image.png --langs zh,en
```

### Pytesseract (Traditional, widely available)

```bash
# Install Tesseract engine first
brew install tesseract tesseract-lang  # macOS
apt install tesseract-ocr tesseract-ocr-chi-sim  # Linux
pip install pytesseract Pillow
```

```python
import pytesseract
from PIL import Image

text = pytesseract.image_to_string(
    Image.open("scan.png"),
    lang="chi_sim+eng"
)
```

## Script

```bash
python3 scripts/extract_document.py document.pdf
python3 scripts/extract_document.py scan.png
python3 scripts/extract_document.py report.pdf --output extracted.txt
```

Auto-detects format by extension: PDF → pymupdf, DOCX → python-docx, Image → pytesseract.
OCR language is controlled by system Tesseract config (e.g., `chi_sim+eng` default).

## Tips

- For scanned PDFs, extract images first then OCR each page
- Preprocessing (deskew, contrast) improves OCR accuracy
- Chinese OCR: surya-ocr > pytesseract for accuracy

