嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
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 | 快速安装与轻量化依赖管理 |
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")
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]}...")
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
)
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")
})
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 | 中等 |
核心优势对比:
# 配置德语+英语识别,使用单列版面分析
await extract_file(
"german_doc.jpg",
language="deu+eng",
psm=PSMMode.SINGLE_COLUMN,
ocr_config={"tessedit_pageseg_mode": 6}
)
from kruetzberg import extract_file, ParsingError
try:
result = await extract_file(
"encrypted.pdf",
pdf_options={"password": "123456"}
)
except ParsingError as e:
print("密码错误或文件损坏!")
# 提取带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-slim
RUN 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.txt
CMD ["python", "app.py"]
Kreuzberg 作为新一代文档处理工具,在以下场景具有独特优势:
随着 2025 年多模态AI的爆发式增长,此类高效文本提取工具将成为智能办公的基础设施。
https://github.com/Goldziher/kreuzberg
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有