跳到主要内容

Docling

Docling 是 IBM Research 的文档处理引擎,可从 PDF、DOCX、PPTX 等多种文档格式中提取文本与结构。它提供 OCR、表格提取与版面分析等高级能力。

本集成通过 REST API 与正在运行的 docling-serve 实例通信,并基于官方 Docling Java 库构建。

Maven 依赖

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-document-parser-docling</artifactId>
<version>1.18.1-beta28</version>
</dependency>

该模块依赖 docling-serve-api(接口),并将 docling-serve-client(参考 HTTP 客户端)作为可选运行时依赖包含。

如果你未使用 Spring Boot 或 Quarkus(它们可能提供自己的 DoclingServeApi 实现),还必须显式添加参考客户端:

<dependency>
<groupId>ai.docling</groupId>
<artifactId>docling-serve-client</artifactId>
<version>0.5.1</version>
</dependency>

诸如 QuarkusSpring Boot 等框架提供了各自的 Docling 集成。如何接入这些特定实现,请参阅 Docling Java 文档

用法

启动一个 docling-serve 实例(参见 docling-serve 文档),然后构建 DoclingServeApi 客户端并将其传给解析器:

DoclingServeApi api = DoclingServeApi.builder()
.baseUrl("http://localhost:5001")
.build();

DoclingDocumentParser parser = DoclingDocumentParser.builder()
.doclingClient(api)
.build();

Document document = parser.parse(inputStream);
String text = document.text();

转换选项

要自定义 Docling 处理,请将 ConvertDocumentOptions 传给 builder:

ConvertDocumentOptions options = ConvertDocumentOptions.builder()
// configure options here
.build();

DoclingDocumentParser parser = DoclingDocumentParser.builder()
.doclingClient(api)
.options(options)
.build();

自定义文本提取

默认情况下,解析器从 Docling 响应中提取 markdown 内容。你可以通过 builder 的 documentTextExtractor 方法提供 Function<InBodyConvertDocumentResponse, String> 来自定义文本提取方式。该函数接收完整的 InBodyConvertDocumentResponse,可访问多种格式的转换文档(markdown、HTML、text、doctags、JSON)、转换错误、处理时间与状态信息。

例如,提取 HTML 而非 markdown:

DoclingDocumentParser parser = DoclingDocumentParser.builder()
.doclingClient(api)
.documentTextExtractor(response -> response.getDocument().getHtmlContent())
.build();

或提取纯文本:

DoclingDocumentParser parser = DoclingDocumentParser.builder()
.doclingClient(api)
.documentTextExtractor(response -> response.getDocument().getTextContent())
.build();

API

  • DoclingDocumentParser

示例