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.1
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
docsift inspect report.pdf
docsift cache info
docsift cache clear
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
--overlapapplies to the fallback Markdown chunker only. Docling supplies its own chunks for PDFs, and DocSift warns when the option cannot take effect.- Cleaning removes little from Docling-parsed PDFs, because Docling already drops page headers and footers using its layout model. The cleaning stages earn their keep on MarkItDown output (Word, HTML, spreadsheets).
- The result cache in
~/.cache/docsifthas no automatic eviction. Usedocsift cache infoanddocsift cache clearto manage it. - A GFM table written without a leading
|is not recognised as a table and its rows are not protected from de-duplication. This affects hand-written Markdown, and table text inside Docling-supplied chunks, which is serialized as triplets rather than pipes.
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.1.tar.gz.
File metadata
- Download URL: docsift-0.1.1.tar.gz
- Upload date:
- Size: 39.1 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 |
7531cd251efe986aa5b3e42e2f6b45b659bb93e125be67ba1e5ddeee758e5701
|
|
| MD5 |
b6cc9288dada515bcdd49562f5f86d8f
|
|
| BLAKE2b-256 |
b4a3e84c04efb28760990196e252cc656adcbd6c45818f6bcbdb8d3921282ab3
|
File details
Details for the file docsift-0.1.1-py3-none-any.whl.
File metadata
- Download URL: docsift-0.1.1-py3-none-any.whl
- Upload date:
- Size: 30.9 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 |
a262782c346bd2bbff3c5a528047174f73e28c0e22a24de6f6427cd58c567254
|
|
| MD5 |
c8cf6eb265d22f7223c661b550569c6e
|
|
| BLAKE2b-256 |
2bdb39df913ea78b3a8d6dc5f40093bd43fe7d23e920b7007b08d4d4591f9a2a
|