Kreuzberg is a Python library for text extraction from documents. It provides a unified interface for extracting text from PDFs, images, office documents, and more, with both async and sync APIs.
- Simple and Hassle-Free: Clean API that just works, without complex configuration
- Local Processing: No external API calls or cloud dependencies required
- Resource Efficient: Lightweight processing without GPU requirements
- Format Support: Comprehensive support for documents, images, and text formats
- Multiple OCR Engines: Support for Tesseract, EasyOCR, and PaddleOCR
- Metadata Extraction: Get document metadata alongside text content
- Table Extraction: Extract tables from documents using the excellent GMFT library
- Modern Python: Built with async/await, type hints, and a functional-first approach
- Permissive OSS: MIT licensed with permissively licensed dependencies
pip install kreuzberg
Install pandoc:
# Ubuntu/Debian
sudo apt-get install tesseract-ocr pandoc
# macOS
brew install tesseract pandoc
# Windows
choco install -y tesseract pandoc
The tesseract OCR engine is the default OCR engine. You can decide not to use it - and then either use one of the two alternative OCR engines, or have no OCR at all.
# Install with EasyOCR support
pip install "kreuzberg[easyocr]"
# Install with PaddleOCR support
pip install "kreuzberg[paddleocr]"
import asyncio
from kreuzberg import extract_file
async def main():
# Extract text from a PDF
result = await extract_file("document.pdf")
print(result.content)
# Extract text from an image
result = await extract_file("scan.jpg")
print(result.content)
# Extract text from a Word document
result = await extract_file("report.docx")
print(result.content)
asyncio.run(main())
For comprehensive documentation, visit our GitHub Pages:
- Getting Started - Installation and basic usage
- User Guide - In-depth usage information
- API Reference - Detailed API documentation
- Examples - Code examples for common use cases
- OCR Configuration - Configure OCR engines
- OCR Backends - Choose the right OCR engine
Kreuzberg supports a wide range of document formats:
- Documents: PDF, DOCX, RTF, TXT, EPUB, etc.
- Images: JPG, PNG, TIFF, BMP, GIF, etc.
- Spreadsheets: XLSX, XLS, CSV, etc.
- Presentations: PPTX, PPT, etc.
- Web Content: HTML, XML, etc.
Kreuzberg supports multiple OCR engines:
- Tesseract (Default): Lightweight, fast startup, requires system installation
- EasyOCR: Good for many languages, pure Python, but downloads models on first use
- PaddleOCR: Excellent for Asian languages, pure Python, but downloads models on first use
For comparison and selection guidance, see the OCR Backends documentation.
We welcome contributions! Please see our Contributing Guide for details on setting up your development environment and submitting pull requests.
This library is released under the MIT license.