嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。
一、核心功能亮点
🔍 多格式通吃
支持 PDF(含扫描件)、JPEG/PNG 图片、Word/Excel/PowerPoint、Markdown、EPUB 等常见文档格式
🤖 智能PDF处理
自动识别可搜索PDF与扫描件,智能切换文本提取与OCR模式,内置文本校验防错机制
⚡ 异步高性能
基于 Python async/await 实现,支持批量文件并发处理,充分利用多核CPU性能
📦 轻量级设计
安装包仅 5MB+,无需 GPU 支持,在树莓派等低配设备上也能流畅运行
🌐 多语言OCR
集成 Tesseract 5 引擎,支持中/英/德/法/日等 100+ 语言识别,可配置多语言混合识别
二、技术架构解析
模块 | 技术选型 | 功能说明 |
---|---|---|
文档转换 | Pandoc 2+ | 处理 Office/EPUB/Markdown 等格式 |
PDF处理 | pdfium2 + Tesseract 5 | 双引擎智能切换处理PDF |
异步框架 | Python 3.10+ | 原生 async/await 支持 |
图像处理 | Pillow | 图片预处理与格式转换 |
依赖管理 | UV | 快速安装与轻量化依赖管理 |
三、五大应用场景实战
场景1:企业文档智能解析
from kreuzberg import batch_extract_file_sync# 批量处理合同文档
results = batch_extract_file_sync([
"采购合同.pdf",
"报价单.xlsx",
"签字扫描件.jpg"
])for path, (content, _, _) in results.items():
print(f"【{path}】解析结果:\n{content[:200]}...\n")
场景2:学术论文内容提取
async def extract_research_paper():
result = await extract_file(
"论文.pdf",
language="chi_sim+eng", # 中英混合识别
psm=PSMMode.SINGLE_COLUMN # 适合学术论文版式
)
print(f"摘要章节:{result.content.split('摘要')[1][:500]}...")
场景3:法律文书归档系统
def process_legal_docs(docs):
for doc, mime_type in docs:
result = await extract_bytes(
doc,
mime_type=mime_type,
force_ocr=True # 确保扫描件100%识别
)
save_to_database(
content=result.content,
metadata=result.metadata
)
场景4:RAG知识库构建
async def build_knowledge_base(files):
results = await batch_extract_file(files)
for content, _, meta in results:
await vector_db.insert({
"text": content,
"source": meta.get("title"),
"author": meta.get("creator")
})
场景5:跨格式内容搜索
def search_across_formats(keyword):
results = []
for file in os.listdir("docs"):
content, _, _ = extract_file_sync(file)
if keyword in content:
results.append(file)
return results
四、同类项目对比
项目名称 | 支持格式 | OCR能力 | 异步支持 | 安装大小 | 学习曲线 |
---|---|---|---|---|---|
Kreuzberg | ★★★★★ | ★★★★☆ | ✅ | 5MB | 简单 |
PyPDF2 | ❌ | ❌ | 1MB | 简单 | |
python-docx | DOCX | ❌ | ❌ | 2MB | 中等 |
pytesseract | 图片 | ★★★★☆ | ❌ | 100MB+ | 复杂 |
pdfplumber | ❌ | ❌ | 3MB | 中等 |
核心优势对比:
-
格式通吃:同时处理文档/图片/PDF,无需多个库切换 -
智能处理:自动识别文档类型选择最佳解析方式 -
生产就绪:完善的错误处理与元数据支持 -
隐私安全:全程本地处理不依赖云服务
五、实战技巧分享
技巧1:提升OCR识别精度
# 配置德语+英语识别,使用单列版面分析
await extract_file(
"german_doc.jpg",
language="deu+eng",
psm=PSMMode.SINGLE_COLUMN,
ocr_config={"tessedit_pageseg_mode": 6}
)
技巧2:处理加密PDF
from kruetzberg import extract_file, ParsingErrortry:
result = await extract_file(
"encrypted.pdf",
pdf_options={"password": "123456"}
)
except ParsingError as e:
print("密码错误或文件损坏!")
技巧3:保留文档格式
# 提取带Markdown格式的内容
result = await extract_file(
"report.docx",
pandoc_options={"output_format": "markdown"}
)
print(result.content) # 输出带Markdown标记的文本
六、项目部署方案
个人使用方案
# 1. 安装库
pip install kreuzberg# 2. 安装依赖(Ubuntu示例)
sudo apt-get install pandoc tesseract-ocr tesseract-ocr-chi-sim# 3. 中文识别测试
echo "测试文本" > test.txt
python -c "from kruetzberg import extract_file_sync; print(extract_file_sync('test.txt').content)"
Docker生产部署
FROM python:3.10-slimRUN apt-get update && \
apt-get install -y pandoc tesseract-ocr tesseract-ocr-chi-sim && \
rm -rf /var/lib/apt/lists/*COPY requirements.txt .
RUN pip install -r requirements.txtCMD ["python", "app.py"]
七、生态整合推荐
-
知识库系统:与 LangChain 结合构建智能文档处理流水线 -
网盘系统:集成到 Nextcloud 实现自动文档内容索引 -
OA系统:对接钉钉/企业微信实现移动端文档解析 -
RAG应用:与 DeepSeek-R1 等大模型结合实现智能问答
八、总结展望
Kreuzberg 作为新一代文档处理工具,在以下场景具有独特优势:
-
需要本地化部署的隐私敏感场景 -
混合格式文档处理需求 -
高并发文档处理任务 -
资源受限的边缘计算环境
随着 2025 年多模态AI的爆发式增长,此类高效文本提取工具将成为智能办公的基础设施。
九、项目地址
https://github.com/Goldziher/kreuzberg