1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法


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, 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文档!的更多相关文章
- python、java、ruby、node等如何提取office文档中的内容?
我相信大家都有过这样的需求,把doc.ppt.excel.pdf.txt中的文本内容提取出来.提取出来的文本内容可用于文档内容的全文索引,文档的基本内容摘要等.在度娘上搜索“如何提取文档内容”,确实有 ...
- VBA Dumper v0.1.4.2, 提取office文档中的VBA代码,监查宏病毒恢复代码(演示版
http://club.excelhome.net/thread-970051-1-1.html VBA Dumper 0.1.4.2更新,填补国内同类程序空白 此程序为演示版,可以在无office的 ...
- 安卓开发笔记——关于开源组件PullToRefresh实现下拉刷新和上拉加载(一分钟搞定,超级简单)
前言 以前在实现ListView下拉刷新和上拉加载数据的时候都是去继承原生的ListView重写它的一些方法,实现起来非常繁杂,需要我们自己去给ListView定制下拉刷新和上拉加载的布局文件,然后添 ...
- 5分钟 搞定UIButton的文本与图片的布局
UIButton内部文本和图片的布局是我们日常代码中,不可缺少的部分,按钮默认左边图片右边文本,那要实现左边文本,右边图片,我们该怎么解决呢,上面图片,下面文本又该怎么办呢 其实很简单,今天总结下,目 ...
- 【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。
前言 都说nodejs适合制作restful_API,因为它有异步处理能力,能吞吐更多的请求,这一点是大家都认可的.前不久我使用nodejs+express+postgresql搭建了一个restfu ...
- 文档在线预览开源实现方案二:OpenOffice + pdf.js
文档在线预览的另一种实现方式采用的技术栈是OpenOffice + pdf.js, office文档转换为pdf的工作依然由OpenOffice的服务来完成,pdf生成后我们不再将其转换为其他文件而是 ...
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- .NET平台开源文档与报表处理组件包括Execel PDF Word等
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- C# 提取Word文档中的图片
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
- 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度
摘 要 在搜索引擎的检索结果页面中,用户经常会得到内容相似的重复页面,它们中大多是由于网站之间转载造成的.为提高检索效率和用户满意度,提出一种基于特征向量的大规模中文近似网页检测算法DDW(Det ...
随机推荐
- Kali 启动默认的服务
Kali 启动默认的服务 在Kali Linux中,您可以使用systemctl命令来管理服务,包括设置服务的自动启动. 设置Apache服务自动启动 设置 Apache 服务自动启动.执行以下命令: ...
- 阿里oos使用
阿里oss控制台安装 wget http://gosspublic.alicdn.com/ossutil/1.6.17/ossutil64 chmod 755 ossutil64 添加环境变量 cp ...
- 在flink消费一段时间kafka后,kafka-group的offset被重置了是怎么回事?
一.背景 腾讯Flink使用 KafkaSource API创建source端,源码中默认开启了checkpoint的时候提交offset 到kafka-broker.读取kafka数据写入到iceb ...
- FreeSql学习笔记——11.LinqToSql
前言 Linq的强大大家有目共睹,可以以简便的方式对数据集进行复杂操作,LinqToSql经常使用在数据库的联表.分组等查询操作中:FreeSql对LinqToSql的支持通过扩展包FreeSql ...
- 高效开发助手:深入了解Hutool工具库
一.关于Hutool 1.1 简介 Hutool是一个功能丰富且易用的Java工具库,通过诸多实用工具类的使用,旨在帮助开发者快速.便捷地完成各类开发任务. 这些封装的工具涵盖了字符串.数字.集合. ...
- QT5笔记:2.可视化UI设计
2.可视化UI设计 参考视频:https://www.bilibili.com/video/BV1AX4y1w7Nt 窗口的三种类型,每种类型窗体拥有的方法不同: MainWindow:指的是正常窗体 ...
- ChatBI≠NL2SQL:关于问数,聊聊我踩过的坑和一点感悟
"如果说数据是新时代的石油,智能问数就是能让普通人也能操作的智能钻井平台." 这里是**AI粉嫩特攻队!** ,这段时间真的太忙了,不过放心,关于从零打造AI工具的coze实操下篇 ...
- 腾讯云锐驰型轻量服务器搭建开源远程桌面软件RustDesk中继服务器小记
RustDesk是一个基于Rust编写的全平台开源远程桌面软件,其最大的特点为开箱即用,且数据完全自主掌控,甚至可以依托此项目定制化开发自己专属的远程桌面软件. 一.前言 由于我个人经常性出差,对远程 ...
- Huawei Cloud EulerOS上安装sshpass
下载源码 git clone https://github.com/kevinburke/sshpass.git 由于网络问题,这里我用了一个代理下载 git clone https://ghprox ...
- Windows 10右键添加 "在此处打开命令窗口" 菜单
1.添加右键菜单的两种效果: 第一种是在 桌面/文件夹窗口中/选中文件夹上直接点击右键,显示"在此处打开命令窗口"选项,如图: 第二种是在 桌面/文件夹窗口中/选中文件夹上按住Sh ...