Turn documents into structured JSON with local-first document AI.
Run 100% locally by default, with API, CLI, and Web UI.
Developer docs · Quickstart tutorial · API reference · Community
ParseHawk turns PDFs, scans, images, text, and Markdown into validated JSON. It is built for private document workflows where you want to define the output contract and keep control of files, models, and infrastructure.
The default setup runs locally with NuExtract3 through vLLM on Linux NVIDIA or vLLM Metal on macOS Apple Silicon. Individual extractors can instead use Ollama, OpenAI, Microsoft Foundry, or another OpenAI-compatible model server.
- Structured extraction from PDFs, scans, images, text, and Markdown
- Your own output contracts with JSON Schema Draft 2020-12
- Zero-shot instructions and optional few-shot examples
- Validated JSON stored with an asynchronous job record
- Local files, SQLite state, model runtime, and Phoenix traces by default
- One resource model across the Web UI, CLI, and OpenAPI 3.1 REST API
- Per-extractor provider and model selection
- Supported local runtimes for macOS Apple Silicon and Linux NVIDIA
| Platform | Required | Recommended minimum |
|---|---|---|
| macOS Apple Silicon | uv, Docker Desktop, Xcode Command Line Tools |
16 GB unified memory |
| Linux x86_64 or ARM64 with NVIDIA | uv, Docker Engine + Compose, NVIDIA driver and Container Toolkit |
16 GB VRAM |
Windows and Intel Macs are not currently supported for the bundled runtime. You can still connect a separately operated provider on a host without a supported local runtime.
See choose an installation path for verified hardware and platform-specific setup.
Install from a Git checkout with
uv:
git clone https://github.com/parsehawk/parsehawk.git
cd parsehawk
uv tool install --editable .
parsehawk startThen open:
- Web UI: http://127.0.0.1:5173
- REST API: http://127.0.0.1:8000
- Local model traces: http://127.0.0.1:6006
Run the bundled receipt fixture through the seeded receipt extractor:
parsehawk extract tests/fixtures/receipt/receipt.jpg \
--extractor receipt \
--waitExpected extracted values include:
{
"merchant_name": "PARSEHAWK COFFEE",
"receipt_id": "R-1001",
"date": "2026-06-21",
"total": 11.22,
"currency": "EUR"
}Check the installation or stop the stack:
parsehawk doctor
parsehawk stopThe complete guided path is in Extract your first document.
| Goal | Guide |
|---|---|
| Learn the end-to-end workflow | Tutorials |
| Install on supported hardware | macOS · Linux NVIDIA |
| Choose a model provider | Bundled vLLM · Ollama · OpenAI · Microsoft Foundry · Compatible APIs |
| Integrate over HTTP | REST tutorial · API reference · OpenAPI YAML |
| Automate with the CLI | CLI reference |
| Define output contracts | Schema guide · Schema reference |
| Operate and troubleshoot | Jobs · Backups and upgrades · Troubleshooting |
| Understand the system | Architecture · Local-first trust model |
Contributor setup, architecture boundaries, test commands, pull request expectations, and licensing terms live in CONTRIBUTING.md.
The repository uses generated reference artifacts. Run the complete project checks before opening a pull request:
just checkContributions are welcome. Whether you are fixing a bug, improving docs, adding tests, or proposing a feature, thank you for helping make ParseHawk better.
Thank you to all ParseHawk contributors. Every issue, pull request, review, bug report, docs fix, and idea helps move the project forward.
ParseHawk stands on excellent open-source projects, including FastAPI, vLLM, vLLM Metal, NuExtract3, Pydantic, Astro Starlight, and many others listed in the dependency manifests.
ParseHawk is a developer preview below 1.0 and follows Semantic Versioning. Pin releases and review changes before upgrading production integrations. See the versioning policy.
ParseHawk is developed by Totoy GmbH in Vienna, Austria and licensed under the Apache License 2.0. For enterprise deployment or private-cloud support, contact support@totoy.ai.