跳到内容

插件

Docling 允许通过第三方插件进行扩展,这些插件扩展了流水线中几个步骤提供的选项选择。

插件通过 pluggy 系统加载,该系统允许第三方开发者使用 setuptools entrypoint 注册新功能。

实际的 entrypoint 定义可能因您使用的打包系统而异。这里有一些示例:

[project.entry-points."docling"]
your_plugin_name = "your_package.module"
[tool.poetry.plugins."docling"]
your_plugin_name = "your_package.module"
[options.entry_points]
docling =
    your_plugin_name = your_package.module
from setuptools import setup

setup(
    # ...,
    entry_points = {
        'docling': [
            'your_plugin_name = "your_package.module"'
        ]
    }
)
  • your_plugin_name 是您为插件选择的名称。此名称在更广泛的 Docling 生态系统中必须是唯一的。
  • your_package.module 是对您包中负责插件注册的模块的引用。

插件工厂

OCR 工厂

OCR 工厂允许为 Docling 用户提供更多的 OCR 引擎。

your_package.module 的内容通过类似于以下的的代码注册 OCR 引擎:

# Factory registration
def ocr_engines():
    return {
        "ocr_engines": [
            YourOcrModel,
        ]
    }

其中 YourOcrModel 必须实现 BaseOcrModel 并提供一个派生自 OcrOptions 的选项类。

如果您正在寻找示例,默认的 Docling 插件 是一个很好的起点。

第三方插件

当插件不由主要的 docling 包提供而是由第三方包提供时,必须通过 allow_external_plugins 选项明确启用它。

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

pipeline_options = PdfPipelineOptions()
pipeline_options.allow_external_plugins = True  # <-- enabled the external plugins
pipeline_options.ocr_options = YourOptions  # <-- your options here

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

使用 docling CLI

类似地,当使用 docling 时,用户必须在选择新插件之前启用外部插件。

# Show the external plugins
docling --show-external-plugins

# Run docling with the new plugin
docling --allow-external-plugins --ocr-engine=NAME