pdf · v1.0 · 2026-07-06 · sha256 4e9abf505fa951f0
pdf v1.0A
Immutable. This exact content is served forever at /api/v1/blob/4e9abf505fa951f0.
---
name: pdf
version: "1.0"
description: Extract text from PDF documents
entry:
script: scripts/main.py
class: PdfSkill
triggers:
extensions:
- ".pdf"
intents:
- "pdf"
- "research paper"
requires:
- pypdf
- pdfminer.six
author: axoviq.com
license: AGPL-3.0-or-later
---
# PDF Skill
Extracts text from PDF files using `pypdf` as the primary parser, with
`pdfminer.six` as a fallback for CJK fonts that pypdf cannot decode
(detected when pypdf yields fewer than 50 characters per page on average).
## Setup
```bash
pip install pypdf pdfminer.six
```
## Standalone usage
```python
import asyncio
from synthadoc.skills.pdf.scripts.main import PdfSkill
skill = PdfSkill()
async def main():
result = await skill.extract("/path/to/paper.pdf")
print(result.text) # extracted text from all pages
print(result.metadata) # {"pages": N, "cjk_fallback": bool, ...}
asyncio.run(main())
```
## When this skill is used
- Source path ends with `.pdf`
- User intent contains: `pdf`, `research paper`
## Scripts
- `scripts/main.py` — `PdfSkill` class
## References
- `references/cjk-notes.md` — notes on CJK font handling