增强功能
Docling 允许通过额外的步骤来增强转换流水线,这些步骤处理特定的文档组件,例如代码块、图片等。这些额外的步骤通常需要执行额外的模型,这可能会显著增加处理时间。因此,大多数增强模型默认是禁用的。
下表概述了 Docling 中可用的默认增强模型。
功能 | 参数 | 处理项 | 描述 |
---|---|---|---|
代码理解 | do_code_enrichment |
CodeItem |
参见下方文档。 |
公式理解 | do_formula_enrichment |
带有标签 FORMULA 的 TextItem |
参见下方文档。 |
图片分类 | do_picture_classification |
PictureItem |
参见下方文档。 |
图片描述 | do_picture_description |
PictureItem |
参见下方文档。 |
增强详情
代码理解
代码理解步骤允许对文档中找到的代码块使用高级解析。此增强模型还设置了 CodeItem
的 code_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
允许使用托管在远程平台上的模型,例如由 VLLM、Ollama 等提供的本地端点,或像 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 文档还包含一些专门针对增强模型实现的示例。