乐于分享
好东西不私藏

开源高性能文档提取利器Kreuzberg:支持75+格式、OCR及Docker部署

开源高性能文档提取利器Kreuzberg:支持75+格式、OCR及Docker部署

一、简介

  • • 这是一个基于 Rust 内核的多语言文档智能框架,它可以从 PDF、Office 文档、图像以及 76 种以上的文件格式中提取文本、元数据和结构化信息
  • • 为 Rust、Python、TypeScript/Node.js、Ruby、Go、Java、C#、PHP、Elixir、R 和 C 提供原生SDK
  • • 支持多种OCR驱动,包括Tesseract、PaddleOCR、EasyOCR,可通过插件 API 扩展
  • • 由 Rust 编写,高性能,内存利用高效,适用超大文档解析
  • • 部署使用方式灵活,可作为库、CLI 工具、REST API 服务器或 MCP 服务器使用,提供Docker部署方式
  • • 该工具的开源地址参考:https://github.com/kreuzberg-dev/kreuzberg
  • • 该工具的整体架构概览图参考如下

二、安装(Docker方式)

  • • 提前准备好Docker、docker-compose软件环境
  • • 新建配置文件config/kreuzberg.toml,配置内容参考如下,更多配置参考:https://docs.kreuzberg.dev/reference/configuration/
use_cache = true                    # 开启结果缓存(强烈推荐)enable_quality_processing = true    # 是否启用质量处理(去重、修复乱码 mojibake、空白规范化等)[server]host = "0.0.0.0"port = 8000[ocr]backend = "paddle-ocr"      # PaddleOCR(强烈推荐中文)language = "ch"             # 简体中文(PaddleOCR 专用,效果最佳)
  • • 新建docker-compose.yml配置文件,内容如下
services:  kreuzberg-api:    image: ghcr.io/kreuzberg-dev/kreuzberg:latest    container_name: kreuzberg-api    ports:      - "8000:8000"    environment:      - KREUZBERG_MAX_UPLOAD_SIZE_MB=500          # 大文件支持(默认 100MB)      - RUST_LOG=info                             # 日志级别    volumes:      - ./config:/config:ro                       # 只读挂载配置      - ./cache:/app/.kreuzberg                   # 关键!持久化 PaddleOCR 模型缓存(首次下载后永久复用)    command:      - serve      - --config      - /config/kreuzberg.toml    restart: unless-stopped    healthcheck:      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]      interval: 30s      timeout: 10s      retries: 3    # 可选:资源限制(生产推荐)    # deploy:    #   resources:    #     limits:    #       cpus: '2.0'    #       memory: 4G
  • • 配置完成,执行如下命令启动即可
docker-compose up -d

成功启动服务截图参考如下

三、使用

更多接口参考:https://docs.kreuzberg.dev/guides/api-server/#api-endpoints

1. 从上传的文件中提取文本内容接口

  • • 接口:POST /extract
  • • 参数:
参数
类型
必填
说明
files
file
上传文件,支持多个
config
JSON
配置覆盖,如:{  "ocr": { "language": "eng" },  "force_ocr": true,  "pages": {    "extract_pages": true,    "insert_page_markers": true,    "marker_format": "\n\n=== 第 {page_num} 页 ===\n\n"  },  "images": { "extract_images": true }}
output_format
string
输出格式:plain(默认)、markdown、djot、html
  • • 响应内容:
[  {    "content": "提取到的文本内容...",    "mime_type": "application/pdf",    "metadata": { "page_count": 10, "author": "张三" },    "tables": [],    "detected_languages": ["ch"],    "pages": [], //多页内容    "chunks": null,    "images": null,    ...更多参数  }]

2. 调用示例

  • • 示例1:高效、准确的OCR能力 输入手写文字图像:

    识别结果正确

  • • 示例2:分页提取文档 提交一个多页的PDF文档,config字段需要配置:{“pages”: { “extract_pages”: true, “insert_page_markers”: true, “marker_format”: “\n\n= 第 {page_num} 页 =\n\n” }

准确按照分页返回提取文本

  • • 示例三:可以提取文档中的图片数据 提交一个包含图片的文档,config字段需要配置:{“images”:{“extract_images”:true}}

    能够提取文本和图片资源数据

  • • 更多参数应用与使用示例…(请自行探索)

四、总结

  • • Kreuzberg是一个非常不错的文档文本提取工具,支持丰富文档类型、OCR、高性能提取、易于部署与接入使用
  • • 提供了各种开发语言的SDK,另外最好的一点是支持Docker一键部署为文档提取服务,通过API集成到各种服务
  • • 特别适合配合LLM使用,提取markdown格式内容,作为知识库数据或者对话语料

推荐一下个人网站(本文内容如有错漏只会在个人博客更新):

  • 博客:https://blog.luler.top/d/110

  • 应用:https://cas.luler.top/

  • 导航站:https://nav.luler.top/

  • 开源推荐:https://gitshare.luler.top/

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 开源高性能文档提取利器Kreuzberg:支持75+格式、OCR及Docker部署

评论 抢沙发

4 + 5 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮