DocSift
Convert documents once. Give agents only what they need.
DocSift converts PDFs and Office documents into clean, structured, AI-ready Markdown and JSON — locally, with no cloud APIs. Docling handles PDFs; MarkItDown handles the breadth formats; both sit behind one interface.
v0.1.0
Install
DocSift needs at least one conversion engine:
pip install "docsift[markitdown]" # Word, Excel, PowerPoint, HTML, CSV, EPUB
pip install "docsift[docling]" # PDFs (large download: ML layout models)
pip install "docsift[all]" # both
pip install docsift alone installs the CLI but no engine, and conversion will
fail with an install hint.
For local development from a clone:
uv sync --all-extras
Usage
docsift convert report.pdf
docsift convert report.pdf --engine markitdown
docsift --version
docsift compare report.pdf
docsift compare report.pdf --output ./comparison
compare runs every engine on the same document and writes
<name>.compare.json (machine-readable metrics) and <name>.compare.md
(human-readable report) alongside per-engine output folders.
Output defaults to ./output/ and can be changed with --output DIR.
Chunking and cleaning
Conversion cleans the Markdown (repeated headers/footers, page numbers, image references) and splits it into token-budgeted chunks with heading context:
docsift convert report.pdf --max-tokens 800 --overlap 100
docsift convert report.pdf --keep-image-refs
docsift convert report.pdf --keep-furniture
docsift convert report.pdf --no-cache
Results are cached in ~/.cache/docsift (override with DOCSIFT_CACHE_DIR);
an unchanged file with unchanged settings returns instantly.
Known limitations in 0.1.0
- PDF chunks come from Docling's HybridChunker and are built from the raw document, so the cleaning stages (header/footer removal, page-number stripping) apply to the exported Markdown but not to the chunk text on that path.
--overlaphas no effect on PDFs chunked by Docling; it applies to the fallback Markdown chunker used for other file types.- The result cache in
~/.cache/docsifthas no automatic eviction; delete the directory to reclaim space.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docsift-0.1.0.tar.gz.
File metadata
- Download URL: docsift-0.1.0.tar.gz
- Upload date:
- Size: 29.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fe3d40f3938abb843fc118f2dfe9789ed615804893040c9f0e763b9feae1a31
|
|
| MD5 |
a16870beae60e1a22bb634214cb8ec8d
|
|
| BLAKE2b-256 |
1fc0670b07f6eb348ef49b7645cbe36e1871bbc6a8c0dff43c7b859da1eacdc2
|
File details
Details for the file docsift-0.1.0-py3-none-any.whl.
File metadata
- Download URL: docsift-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
085fdb95f74d54e4dd38c2536dfba27b2923b7e93916de81375277593f96bdf8
|
|
| MD5 |
2753c9f8676132d3dcc91ec3b9e2876e
|
|
| BLAKE2b-256 |
d5e802760020acf52475823b61c834e7c8134a87db6c948b590ffcb06d6635e0
|