luler 一、简介 这是一个基于 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 参数: 参数类型必填说明 filesfile✅上传文件,支持多个 configJSON❌配置覆盖,如:<br>{<br>"ocr": { "language": "eng" },<br>"force_ocr": true,<br>"pages": {<br>"extract_pages": true,<br>"insert_page_markers": true,<br>"marker_format": "\n\n=== 第 {page_num} 页 ===\n\n"<br>},<br>"images": { "extract_images": true }<br>} output_formatstring❌输出格式: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格式内容,作为知识库数据或者对话语料