kindle-pdf-capture
Capture Kindle for Mac pages via screen recording and build a high-quality PDF (with optional OCR).
Features
- Automatic content-region detection (strips window chrome, title bar, and Kindle header)
- Background capture via Quartz — no need to keep Kindle in the foreground
- Smart page-turn detection (frame-diff polling, no fixed sleep)
- LTR and RTL (manga) support via
--direction - Book-like PDF page sizing (300 DPI default)
- Optional OCR text layer via Tesseract (for non-macOS viewers; macOS Live Text works without it)
- End-of-book auto-detection (duplicate-frame streak)
- Manual cover-region selection via
--manual-crop(drag-to-select UI for books with all-white covers)
Quick start
Requires macOS 15 or later, Python 3.11 or 3.12, and Kindle for Mac.
Upgrading from 1.4.x: version 2 requires macOS 15. An existing 1.4.x environment is not modified by this release and may continue to work, but it is outside the current support contract — and installing or rebuilding an environment below macOS 15 is not a supported path on either version. Update macOS before a clean install.
# Install
uv tool install kindle-pdf-capture
# Capture a book (open Kindle to the first page first)
kpc --out output/my-book
# Capture a right-to-left book (manga)
kpc --out output/my-manga --direction left
# Capture a book with an all-white cover (manual region selection)
kpc --out output/my-book --manual-crop
# See all options
kpc --help
With OCR
OCR needs Tesseract and Ghostscript as system dependencies, plus the [ocr] extra:
brew install tesseract tesseract-lang ghostscript
uv tool install "kindle-pdf-capture[ocr]"
kpc --out output/my-book --ocr
Working on the project itself? The installation guide covers installing from source.
Documentation
- Installation · インストール
- Usage · 使い方
- macOS permissions · macOS 権限
- Architecture · アーキテクチャ
- Troubleshooting · トラブルシューティング
- Legal · 法的事項
Support and feedback
- Q&A — installation, permissions, usage, OCR, and troubleshooting
- Ideas — proposals that still need discussion
- Issues — reproducible bugs and scoped work
- Security policy — private vulnerability reporting
English and Japanese posts are welcome.
License
MIT — see LICENSE.
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 kindle_pdf_capture-2.0.0.tar.gz.
File metadata
- Download URL: kindle_pdf_capture-2.0.0.tar.gz
- Upload date:
- Size: 171.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","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 |
29028c17544d3f5415b44307a18af7e9a7759720a2965a700f81dc5ea658078c
|
|
| MD5 |
c4f844058505949efc06855017e60a18
|
|
| BLAKE2b-256 |
39e2086facd2a0e4038f88b61291475a8afa77bf3f03c940825c912bea03c4b1
|
File details
Details for the file kindle_pdf_capture-2.0.0-py3-none-any.whl.
File metadata
- Download URL: kindle_pdf_capture-2.0.0-py3-none-any.whl
- Upload date:
- Size: 41.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","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 |
52a4c002c0cfc74ceb0df299450fcb57fabea5325a56ffd0a58a63e1f0854615
|
|
| MD5 |
c3932acd8b78a856483487cb0d903f05
|
|
| BLAKE2b-256 |
cd3a7b32c476048fb3e3e613158d81983f0842e5838ebddf545ca4550d75af52
|