
Docpick
io.github.ArkNillPublished by GitHub account ArkNillv0.1.2Updated Oct 25, 2026
Schema-driven document extraction with local OCR + LLM. Document in, Structured JSON out.
Overview
Docpick is a local, schema-driven document extraction pipeline that turns invoices, receipts and forms into validated structured JSON using local OCR and a self
- What you can do
- Extract structured JSON from PDFs and images using built-in or custom Pydantic/JSON schemas, with per-field confidence scores and partial results on failure. Run OCR only, in Korean and English among other languages, with automatic fallback between PaddleOCR, EasyOCR, GOT-OCR2.0 and VLM engines. Validate extracted data with check-digit algorithms, cross-field rules and cross-document consistency checks. Batch-process whole directories with parallel workers and list or inspect the eight built-in schemas.
- When to use it
- Useful when you need to convert business documents such as invoices, receipts, bills of lading, tax forms, bank statements or ID documents into structured data while keeping everything on your own machine. Also fits bulk extraction of document folders and validation of trade-document sets.
- Requirements
- Runs locally as a Python package (Python 3.11+) installed with pip, plus optional OCR extras. Needs a local or OpenAI-compatible LLM endpoint such as vLLM or Ollama, configured by CLI or YAML. GPU is required for the GOT-OCR2.0 and VLM engines; CPU suffices for PaddleOCR and EasyOCR.
Installation
In SourceWeft
- Open Docpick in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Docpick
[PyPI] [Python] [License] [Tests]
Document in, Structured JSON out. Locally. With your schema.
docpick is a lightweight, schema-driven document extraction pipeline that combines local OCR engines with local LLMs to extract structured JSON from any document — invoices, receipts, bills of lading, tax forms, and more.
- Zero cloud dependency — runs entirely on your machine (CPU or GPU)
- Custom schemas — define your own Pydantic models or use 8 built-in document schemas
- Validation built-in — checkdigit verification, cross-field rules, cross-document consistency
- Apache 2.0 — no GPL/AGPL dependencies
Install
Requirements: Python 3.11+ / LLM endpoint (vLLM, Ollama, or OpenAI-compatible)
Quick Start
Python API
CLI
Built-in Schemas
Custom Schemas
Define your own schema with Pydantic:
Or use a JSON Schema file:
Validation
Check Digit Algorithms
Cross-Field Rules
Cross-Document Validation
Validate consistency across related documents (e.g., Invoice + B/L + Packing List):
OCR Engines
2-Tier Auto Engine
The default auto engine uses confidence-based fallback:
- Tier 1 (CPU): PaddleOCR → EasyOCR
- Tier 2 (GPU): GOT-OCR2.0 → VLM
If Tier 1 average confidence falls below threshold (default 0.7), automatically escalates to Tier 2.
LLM Providers
Configure via CLI or YAML:
Error Handling
The pipeline is designed to be resilient:
- OCR failure → automatic fallback to next available engine
- LLM JSON parse failure → automatic retry with correction prompt (up to 1 retry)
- Partial results → returns whatever was extracted, with errors logged in
result.errors - Document load failure → returns empty result with error message
Batch Processing
Process entire directories with parallel workers:
Architecture
License
Apache 2.0 — all dependencies are Apache 2.0 or MIT licensed.
Part of the QuartzUnit ecosystem — composable Python libraries for data collection, extraction, search, and AI agent safety.
Source: README.md at commit 173a35d
Tools
0Version history
1- v0.1.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts