A tool for converting PDFs to text files using Ollama or OpenRouter.
- Convert PDFs to text files locally, no token costs.
- Use the latest multimodal models supported by Ollama and OpenRouter.
- Turn images and diagrams into detailed text descriptions.
- Python 3.10+
- Ollama installed and running locally, unless you select another provider.
- An OpenRouter API key in
OPENROUTER_API_KEYwhen using--provider openrouter.
- Install Ollama
- Pull the default model:
ollama run qwen2.5vl:latestInstall using pip:
pip install llama-scanor uv:
uv tool install llama-scanBasic usage:
llama-scan path/to/your/file.pdfProcess specific pages:
llama-scan document.pdf --start 1 --end 5Use a different model (Ollama):
llama-scan document.pdf --model qwen2.5vl:3bThe following options can be used to customize PDF processing.
General
| Option | Description | Default |
|---|---|---|
--output, -o |
Directory where results are saved | output/ |
--start, -s |
First page to process | 0 |
--end, -e |
Last page to process | 0 |
Model configuration
| Option | Description | Default |
|---|---|---|
--provider, -p |
Transcription provider (ollama or openrouter) |
ollama |
--model, -m |
Model used for transcription | qwen2.5vl:latest (Ollama) |
--server-url, -u |
Ollama server URL | http://localhost:11434 |
--prompt |
Path to a text file that replaces the default transcription prompt |
Image processing
| Option | Description | Default |
|---|---|---|
--width, -w |
Resize images to the specified width (0 disables resizing) |
0 |
--dpi |
Resolution used when rendering PDF pages | 72 |
--keep-images, -k |
Keep intermediate image files | False |
In addition to the command-line interface (CLI), llama-scan can be used directly in Python scripts. This allows you to integrate PDF processing into your own applications and workflows.
from llama_scan import process_pdf
merged = process_pdf("document.pdf", "output")
print(merged.read_text(encoding="utf-8"))