跳到内容

增强功能

Docling 允许通过额外的步骤来增强转换流水线,这些步骤处理特定的文档组件,例如代码块、图片等。这些额外的步骤通常需要执行额外的模型,这可能会显著增加处理时间。因此,大多数增强模型默认是禁用的。

下表概述了 Docling 中可用的默认增强模型。

功能 参数 处理项 描述
代码理解 do_code_enrichment CodeItem 参见下方文档
公式理解 do_formula_enrichment 带有标签 FORMULATextItem 参见下方文档
图片分类 do_picture_classification PictureItem 参见下方文档
图片描述 do_picture_description PictureItem 参见下方文档

增强详情

代码理解

代码理解步骤允许对文档中找到的代码块使用高级解析。此增强模型还设置了 CodeItemcode_language 属性。

模型规格:参见CodeFormula 模型卡

命令行示例

docling --enrich-code FILE

代码示例

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.datamodel.base_models import InputFormat

pipeline_options = PdfPipelineOptions()
pipeline_options.do_code_enrichment = True

converter = DocumentConverter(format_options={
    InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
})

result = converter.convert("https://arxiv.org/pdf/2501.17887")
doc = result.document

公式理解

公式理解步骤将分析文档中的方程公式并提取其 LaTeX 表示。DoclingDocument 中的 HTML 导出功能将利用公式并使用 mathml html 语法可视化结果。

模型规格:参见CodeFormula 模型卡

命令行示例

docling --enrich-formula FILE

代码示例

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.datamodel.base_models import InputFormat

pipeline_options = PdfPipelineOptions()
pipeline_options.do_formula_enrichment = True

converter = DocumentConverter(format_options={
    InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
})

result = converter.convert("https://arxiv.org/pdf/2501.17887")
doc = result.document

图片分类

图片分类步骤使用 DocumentFigureClassifier 模型对文档中的 PictureItem 元素进行分类。此模型专门用于理解文档中图片的类别,例如不同的图表类型、流程图、标志、签名等。

模型规格:参见DocumentFigureClassifier 模型卡

命令行示例

docling --enrich-picture-classes FILE

代码示例

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.datamodel.base_models import InputFormat

pipeline_options = PdfPipelineOptions()
pipeline_options.generate_picture_images = True
pipeline_options.images_scale = 2
pipeline_options.do_picture_classification = True

converter = DocumentConverter(format_options={
    InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
})

result = converter.convert("https://arxiv.org/pdf/2501.17887")
doc = result.document

图片描述

图片描述步骤允许使用视觉模型标注图片。这也称为“图片描述”任务。Docling 流水线允许完全本地加载和运行模型,以及连接支持聊天模板的远程 API。下面是一些关于如何使用一些常见的视觉模型和远程服务的示例。

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.datamodel.base_models import InputFormat

pipeline_options = PdfPipelineOptions()
pipeline_options.do_picture_description = True

converter = DocumentConverter(format_options={
    InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
})

result = converter.convert("https://arxiv.org/pdf/2501.17887")
doc = result.document

Granite Vision 模型

模型规格:参见ibm-granite/granite-vision-3.1-2b-preview 模型卡

在 Docling 中的用法

from docling.datamodel.pipeline_options import granite_picture_description

pipeline_options.picture_description_options = granite_picture_description

SmolVLM 模型

模型规格:参见HuggingFaceTB/SmolVLM-256M-Instruct 模型卡

在 Docling 中的用法

from docling.datamodel.pipeline_options import smolvlm_picture_description

pipeline_options.picture_description_options = smolvlm_picture_description

其他视觉模型

选项类 PictureDescriptionVlmOptions 允许使用 Hugging Face Hub 中的任何其他模型。

from docling.datamodel.pipeline_options import PictureDescriptionVlmOptions

pipeline_options.picture_description_options = PictureDescriptionVlmOptions(
    repo_id="",  # <-- add here the Hugging Face repo_id of your favorite VLM
    prompt="Describe the image in three sentences. Be consise and accurate.",
)

远程视觉模型

选项类 PictureDescriptionApiOptions 允许使用托管在远程平台上的模型,例如由 VLLMOllama 等提供的本地端点,或像 IBM watsonx.ai 等云提供商。

注意:在大多数情况下,此选项会将您的数据发送到远程服务提供商。

在 Docling 中的用法

from docling.datamodel.pipeline_options import PictureDescriptionApiOptions

# Enable connections to remote services
pipeline_options.enable_remote_services=True  # <-- this is required!

# Example using a model running locally, e.g. via VLLM
# $ vllm serve MODEL_NAME
pipeline_options.picture_description_options = PictureDescriptionApiOptions(
    url="http://localhost:8000/v1/chat/completions",
    params=dict(
        model="MODEL NAME",
        seed=42,
        max_completion_tokens=200,
    ),
    prompt="Describe the image in three sentences. Be consise and accurate.",
    timeout=90,
)

云提供商的端到端代码片段可在示例部分找到

开发新的增强模型

除了查看上面列出的所有模型的实现外,Docling 文档还包含一些专门针对增强模型实现的示例。