部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!

1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!

原创
作者头像
小华同学ai
发布于 2025-03-23 06:44:22
发布于 2025-03-23 06:44:22
28700
代码可运行
举报
运行总次数:0
代码可运行

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法

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:企业文档智能解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:学术论文内容提取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:法律文书归档系统

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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知识库构建

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:跨格式内容搜索

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

PDF

1MB

简单

python-docx

DOCX

2MB

中等

pytesseract

图片

★★★★☆

100MB+

复杂

pdfplumber

PDF

3MB

中等

核心优势对比

  1. 格式通吃:同时处理文档/图片/PDF,无需多个库切换
  2. 智能处理:自动识别文档类型选择最佳解析方式
  3. 生产就绪:完善的错误处理与元数据支持
  4. 隐私安全:全程本地处理不依赖云服务

五、实战技巧分享

技巧1:提升OCR识别精度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 配置德语+英语识别,使用单列版面分析
await extract_file(
    "german_doc.jpg",
    language="deu+eng",
    psm=PSMMode.SINGLE_COLUMN,
    ocr_config={"tessedit_pageseg_mode": 6}
)

技巧2:处理加密PDF

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from kruetzberg import extract_file, ParsingError

try:
    result = await extract_file(
        "encrypted.pdf",
        pdf_options={"password": "123456"}
    )
except ParsingError as e:
    print("密码错误或文件损坏!")

技巧3:保留文档格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 提取带Markdown格式的内容
result = await extract_file(
    "report.docx",
    pandoc_options={"output_format": "markdown"}
)
print(result.content)  # 输出带Markdown标记的文本

六、项目部署方案

个人使用方案

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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生产部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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"]

七、生态整合推荐

  • 知识库系统:与 LangChain 结合构建智能文档处理流水线
  • 网盘系统:集成到 Nextcloud 实现自动文档内容索引
  • OA系统:对接钉钉/企业微信实现移动端文档解析
  • RAG应用:与 DeepSeek-R1 等大模型结合实现智能问答

八、总结展望

Kreuzberg 作为新一代文档处理工具,在以下场景具有独特优势:

  • 需要本地化部署的隐私敏感场景
  • 混合格式文档处理需求
  • 高并发文档处理任务
  • 资源受限的边缘计算环境

随着 2025 年多模态AI的爆发式增长,此类高效文本提取工具将成为智能办公的基础设施。

九、项目地址

https://github.com/Goldziher/kreuzberg

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
目录
  • 一、核心功能亮点
  • 二、技术架构解析
  • 三、五大应用场景实战
    • 场景1:企业文档智能解析
    • 场景2:学术论文内容提取
    • 场景3:法律文书归档系统
    • 场景4:RAG知识库构建
    • 场景5:跨格式内容搜索
  • 四、同类项目对比
  • 五、实战技巧分享
    • 技巧1:提升OCR识别精度
    • 技巧2:处理加密PDF
    • 技巧3:保留文档格式
  • 六、项目部署方案
  • 七、生态整合推荐
  • 八、总结展望
  • 九、项目地址
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档