---
name: get_pdf_page_tokens
kind: function
lang: py
domain: core
version: "1.0.0"
purity: impure
signature: "def get_pdf_page_tokens(pdf_path, model: str = None, pdf_parser: str = 'PyPDF2') -> list[tuple[str, int]]"
description: "Extrae texto y cuenta tokens por pagina de un PDF. Soporta PyPDF2 y PyMuPDF como backends."
tags: [pdf, tokens, extraction, litellm, parsing]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [litellm, PyPDF2]
params:
  - name: pdf_path
    desc: "ruta al archivo PDF (string o BytesIO)"
  - name: model
    desc: "nombre del modelo LLM para contar tokens (p.ej. 'gpt-4o')"
  - name: pdf_parser
    desc: "backend para extraer texto: 'PyPDF2' (default) o 'PyMuPDF'"
output: "lista de tuplas (text, token_count) uno por pagina del PDF"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/core/get_pdf_page_tokens.py"
source_repo: "https://github.com/VectifyAI/PageIndex"
source_license: "MIT"
source_file: "pageindex/utils.py"
---

## Ejemplo

```python
pages = get_pdf_page_tokens("report.pdf", model="gpt-4o")
for text, tokens in pages:
    print(f"{tokens} tokens")

# Con PyMuPDF (mejor para PDFs complejos)
pages = get_pdf_page_tokens("report.pdf", pdf_parser="PyMuPDF")
total = sum(t for _, t in pages)
```

## Notas

Requiere `pip install litellm PyPDF2` (o `pymupdf` para backend PyMuPDF). Acepta path string o BytesIO. Util para estimar costos de procesamiento LLM y para page_list_to_groups.
