嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
我们经常需要从各种不同类型的文档中提取文本内容,无论是办公文档、图像还是PDF文件。而Kreuzberg这个Python库的出现,为我们提供了一个极为便捷且高效的解决方案。
Kreuzberg是一个专注于从文档中提取文本的Python库。它具有很多令人心动的特性,使得它在文本提取领域脱颖而出。
pip install kreuzberg
命令就可以轻松安装Kreuzberg这个Python包。sudo apt - get install pandoc tesseract - ocr
命令来安装。brew install tesseract pandoc
命令来安装。choco install - y tesseract pandoc
命令来安装。pdfium2
进行文本提取;对于扫描内容,则使用Tesseract OCR。这样的组合方式能够有效地处理各种类型的PDF文件,无论是原生的可搜索PDF还是扫描得到的图像型PDF。pathlib.Path
类型)中提取文本。例如:import asyncio
from pathlib import Path
from kreuzberg import extract_file, ExtractionResult, PSMMode
async def extract_document():
# 从PDF文件中以默认设置提取
pdf_result: ExtractionResult = await extract_file("document.pdf")
print(f"Content: {pdf_result.content}")
asyncio.run(extract_document())
from kreuzberg import extract_bytes, ExtractionResult
async def process_upload(file_content: bytes, mime_type: str) -> ExtractionResult:
return await extract_bytes(
file_content,
mime_type=mime_type,
)
# 示例用法,不同文件类型
async def handle_uploads(docx_bytes: bytes, pdf_bytes: bytes, image_bytes: bytes):
# 处理PDF上传
pdf_result = await process_upload(pdf_bytes, mime_type="application/pdf")
print(f"PDF content: {pdf_result.content}")
print(f"PDF metadata: {pdf_result.metadata}")
# 处理图像上传(将使用OCR)
img_result = await process_upload(image_bytes, mime_type="image/jpeg")
print(f"Image text: {img_result.content}")
# 处理Word文档上传
docx_result = await process_upload(
docx_bytes,
mime_type="application/vnd.openxmlformats - officedocument.wordprocessingml.document"
)
print(f"Word content: {docx_result.content}")
asyncio.run(handle_uploads(b"", b"", b""))
extract_file()
的同步版本。extract_bytes()
的同步版本。from pathlib import Path
from kreuzberg import batch_extract_file, batch_extract_bytes, batch_extract_file_sync
async def process_documents(file_paths: list[Path]) -> None:
# 从多个文件中提取
results = await batch_extract_file(file_paths)
for path, result in zip(file_paths, results):
print(f"File {path}: {result.content[:100]}...")
asyncio.run(process_documents([Path("file1"), Path("file2")]))
from pathlib import Path
from kreuzberg import batch_extract_file, batch_extract_bytes, batch_extract_file_sync
async def process_uploads(contents: list[tuple[bytes, str]]) -> None:
# 每个项目是(内容,MIME类型)的元组
results = await batch_extract_bytes(contents)
for (_, mime_type), result in zip(contents, results):
print(f"Upload {mime_type}: {result.content[:100]}...")
asyncio.run(process_uploads([(b"", "type1"), (b"", "type2")]))
batch_extract_file()
的同步版本。batch_extract_bytes()
的同步版本。from kreuzberg import extract_file
async def process_pdf():
# 强制对可搜索的PDF进行OCR
result = await extract_file("document.pdf", force_ocr = True)
print(result.content)
asyncio.run(process_pdf())
eng
代表英语,deu
代表德语,eng+deu
代表英语和德语。需要注意的是,语言的顺序会影响处理时间,第一个语言是主要语言,第二个语言是次要语言等。from kreuzberg import extract_file
async def process_pdf():
# 控制OCR并发数
result = await extract_file(
"large_document.pdf",
max_processes = 4
)
print(result.content)
asyncio.run(process_pdf())
Kreuzberg是一个功能强大的Python库,专为从各种文档中提取文本而设计,支持PDF、图像、办公文档等多种格式。它以简单便捷、本地处理、资源高效等特性脱颖而出,无需复杂配置即可快速集成到项目中。Kreuzberg适用于RAG应用、现代异步应用、无服务器函数和容器化应用等多种场景,为开发者提供了极大的便利。
https://github.com/Goldziher/kreuzberg
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。