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

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 PDF 1MB 简单
python-docx DOCX 2MB 中等
pytesseract 图片 ★★★★☆ 100MB+ 复杂
pdfplumber PDF 3MB 中等

核心优势对比

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

五、实战技巧分享

技巧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, ParsingError

try:
    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-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

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

  1. python、java、ruby、node等如何提取office文档中的内容?

    我相信大家都有过这样的需求,把doc.ppt.excel.pdf.txt中的文本内容提取出来.提取出来的文本内容可用于文档内容的全文索引,文档的基本内容摘要等.在度娘上搜索“如何提取文档内容”,确实有 ...

  2. VBA Dumper v0.1.4.2, 提取office文档中的VBA代码,监查宏病毒恢复代码(演示版

    http://club.excelhome.net/thread-970051-1-1.html VBA Dumper 0.1.4.2更新,填补国内同类程序空白 此程序为演示版,可以在无office的 ...

  3. 安卓开发笔记——关于开源组件PullToRefresh实现下拉刷新和上拉加载(一分钟搞定,超级简单)

    前言 以前在实现ListView下拉刷新和上拉加载数据的时候都是去继承原生的ListView重写它的一些方法,实现起来非常繁杂,需要我们自己去给ListView定制下拉刷新和上拉加载的布局文件,然后添 ...

  4. 5分钟 搞定UIButton的文本与图片的布局

    UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...

  5. 【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。

    前言 都说nodejs适合制作restful_API,因为它有异步处理能力,能吞吐更多的请求,这一点是大家都认可的.前不久我使用nodejs+express+postgresql搭建了一个restfu ...

  6. 文档在线预览开源实现方案二:OpenOffice + pdf.js

    文档在线预览的另一种实现方式采用的技术栈是OpenOffice + pdf.js, office文档转换为pdf的工作依然由OpenOffice的服务来完成,pdf生成后我们不再将其转换为其他文件而是 ...

  7. 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  8. .NET平台开源文档与报表处理组件包括Execel PDF Word等

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  9. C# 提取Word文档中的图片

    C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...

  10. 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度

    摘  要  在搜索引擎的检索结果页面中,用户经常会得到内容相似的重复页面,它们中大多是由于网站之间转载造成的.为提高检索效率和用户满意度,提出一种基于特征向量的大规模中文近似网页检测算法DDW(Det ...

随机推荐

  1. [AI/GPT] 硅基流动(SiliconFlow) : AI大模型时代的基础设施

    概述:硅基流动(SilliconFlow) 简介 硅基流动(SiliconFlow) 是一家专注于人工智能(AI)基础设施的公司,致力于通过技术创新降低大模型(如生成式AI和大语言模型)的部署和推理成 ...

  2. 克鲁斯焊机GL 270引弧困难维修

    克鲁斯焊机维修: 对于客户而言,其受益之处在于所有的机械手系统部件,从机械手控制.工件.定位器.传感器到电源和焊枪,都是由一家供应商开发和制造的.而诸如熔化极惰性气体/活性气体保护双丝焊接技术.等离子 ...

  3. java http协议,添加header以及post传参,以及服务端获取

    一.客户端请求 public static String test(){ JSONObject obj = new JSONObject(); obj.put("cusName", ...

  4. docker - [11] 数据卷之DockerFile

    通过DockerFile可以生成一个镜像 一.DockerFile的介绍 狂神:dockerfile是用来构建docker镜像的文件命令参数脚本. 狂神:dockerfile是面向开发的,我们以后要发 ...

  5. 基于Maxmspjitter的基础【pixel shader】绘制模板Patcher

    间断性接触Maxmspjitter已经有6个年头了,是时候总结一些常用的.基础的知识以及它的应用,不过笔者自认为还是处于初学者阶段,望高人多多指教. 开始 这一次就以jitter模块中通用处理图像节点 ...

  6. Processing中获取表格数据( .tsv\.csv )的经验分享

    在日常收集数据的需求中,会有很多场合用到表格数据类型,如.tsv和.csv,一来高效查看和编辑,二来数据条理清晰,导入数据结构方便.在Prcocessing中帮我预留好了loadTable().loa ...

  7. 读论文-顺序推荐系统_挑战、进展和前景(Sequential recommender systems_ challenges, progress and prospects)

    前言 今天读的论文为一篇于2019年发表的论文,是关于顺序推荐系统(Sequential Recommender Systems,SRSs)的研究,作者对SRSs的挑战.进展和前景进行了系统综述. 要 ...

  8. mySql跳过行数获取多少行

    LIMIT :需要获取多少条记录 OFFSET :跳过前面的多少行记录从后面开始获取 SELECT * FROM USER LIMIT 32 OFFSET 1 只获取12行记录 跳过第一条记录 SEL ...

  9. AI 核心能力与开发框架工程能力的共生关系解析

    一.本质定位:能力层与载体层的互补 1. AI 能力:突破性认知的"大脑" - 定义:AI 的核心能力(如大语言模型的泛化推理.多模态感知)源于算法创新.海量数据与算力突破,其本质 ...

  10. 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧

    昨天DD以为阿里开源的QwQ-32B会刷爆全网,毕竟对标的是上一个热门项目deepseek-r1.但是,万万没想到,获得更多关注的居然是:Manus. 简单的从网上介绍信息了解了一下,感觉跟OpenA ...