插件
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