Files
wehub-resource-sync c56bef871b
Sync docs with Docusaurus / sync (push) Waiting to run
Tests / Check if changed (push) Waiting to run
Tests / format (push) Blocked by required conditions
Tests / check-imports (push) Blocked by required conditions
Tests / Unit / macos-latest (push) Blocked by required conditions
Tests / Unit / ubuntu-latest (push) Blocked by required conditions
Tests / Unit / windows-latest (push) Blocked by required conditions
Tests / mypy (push) Blocked by required conditions
Tests / Integration / ubuntu-latest (push) Blocked by required conditions
Tests / Integration / macos-latest (push) Blocked by required conditions
Tests / Integration / windows-latest (push) Blocked by required conditions
Tests / notify-slack-on-failure (push) Blocked by required conditions
Tests / Mark tests as completed (push) Blocked by required conditions
Docker image release / Build base image (push) Waiting to run
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:22:28 +08:00

181 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Docling Serve"
id: integrations-docling_serve
description: "Docling Serve integration for Haystack"
slug: "/integrations-docling_serve"
---
## haystack_integrations.components.converters.docling_serve.converter
### ExportType
Bases: <code>str</code>, <code>Enum</code>
Enumeration of export formats supported by DoclingServe.
- `MARKDOWN`: Converts documents to Markdown format.
- `TEXT`: Extracts plain text.
- `JSON`: Returns the full Docling document as a JSON string.
### ConversionMode
Bases: <code>str</code>, <code>Enum</code>
Execution mode for DoclingServe conversions.
- `SYNC`: Uses DoclingServe's synchronous conversion endpoints.
- `ASYNC`: Uses DoclingServe's async job endpoints and polls for completion.
### DoclingServeConversionError
Bases: <code>Exception</code>
Raised when DoclingServe reports an async task or conversion failure.
### DoclingServeTimeoutError
Bases: <code>DoclingServeConversionError</code>
Raised when a DoclingServe async task exceeds job_timeout.
### DoclingServeConverter
Converts documents to Haystack Documents using a DoclingServe server.
See [DoclingServe](https://github.com/docling-project/docling-serve).
DoclingServe hosts Docling in a scalable HTTP server, supporting PDFs, Office documents, HTML, and many other
formats. Unlike the local `DoclingConverter`, this component has no heavy ML dependencies — all processing
happens on the remote server.
Local files and ByteStreams are uploaded via the `/v1/convert/file` endpoint. URL strings are sent to
`/v1/convert/source`.
Supports both synchronous (`run`) and asynchronous (`run_async`) execution.
### Usage example
```python
from haystack_integrations.components.converters.docling_serve import DoclingServeConverter
converter = DoclingServeConverter(base_url="http://localhost:5001")
result = converter.run(sources=["https://arxiv.org/pdf/2206.01062"])
print(result["documents"][0].content[:200])
```
#### __init__
```python
__init__(
*,
base_url: str = "http://localhost:5001",
export_type: ExportType = ExportType.MARKDOWN,
convert_options: dict[str, Any] | None = None,
timeout: float = 120.0,
api_key: Secret | None = Secret.from_env_var(
"DOCLING_SERVE_API_KEY", strict=False
),
mode: ConversionMode | str = ConversionMode.SYNC,
poll_interval: float = 2.0,
job_timeout: float = 600.0
) -> None
```
Initializes the DoclingServeConverter.
**Parameters:**
- **base_url** (<code>str</code>) Base URL of the DoclingServe instance. Defaults to `"http://localhost:5001"`.
- **export_type** (<code>ExportType</code>) The output format for converted documents. One of `ExportType.MARKDOWN` (default),
`ExportType.TEXT`, or `ExportType.JSON`.
- **convert_options** (<code>dict\[str, Any\] | None</code>) Optional dictionary of conversion options passed directly to the DoclingServe API
(e.g. `{"do_ocr": True, "ocr_engine": "tesseract"}`).
See [DoclingServe options](https://github.com/docling-project/docling-serve/blob/main/docs/usage.md).
Note: `to_formats` is set automatically based on `export_type` and should not be included here.
- **timeout** (<code>float</code>) HTTP request timeout in seconds. Defaults to `120.0`.
- **api_key** (<code>Secret | None</code>) API key for authenticating with a secured DoclingServe instance. Reads from the
`DOCLING_SERVE_API_KEY` environment variable by default. Set to `None` to disable
authentication.
- **mode** (<code>ConversionMode | str</code>) Conversion mode. `sync` uses DoclingServe's synchronous endpoints. `async` submits
conversion jobs to DoclingServe's async endpoints and polls until completion.
- **poll_interval** (<code>float</code>) Controls both the server-side long-poll wait (?wait= parameter) and the maximum local sleep between polls.
A higher value reduces round-trips; a lower value increases polling frequency.
- **job_timeout** (<code>float</code>) Maximum time in seconds to wait for each async conversion job.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serializes the component to a dictionary.
**Returns:**
- <code>dict\[str, Any\]</code> A dictionary representation of the component.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> DoclingServeConverter
```
Deserializes the component from a dictionary.
**Parameters:**
- **data** (<code>dict\[str, Any\]</code>) Dictionary representation of the component.
**Returns:**
- <code>DoclingServeConverter</code> A new `DoclingServeConverter` instance.
#### run
```python
run(
sources: list[str | Path | ByteStream],
meta: dict[str, Any] | list[dict[str, Any]] | None = None,
) -> dict[str, list[Document]]
```
Converts documents by sending them to DoclingServe and returns Haystack Documents.
**Parameters:**
- **sources** (<code>list\[str | Path | ByteStream\]</code>) List of sources to convert. Each item can be a URL string, a local file path, or a
`ByteStream`. URL strings are sent to `/v1/convert/source`; all other sources are
uploaded to `/v1/convert/file`.
- **meta** (<code>dict\[str, Any\] | list\[dict\[str, Any\]\] | None</code>) Optional metadata to attach to the output Documents. Can be a single dict applied to
all documents, or a list of dicts with one entry per source.
**Returns:**
- <code>dict\[str, list\[Document\]\]</code> A dictionary with key `"documents"` containing the converted Haystack Documents.
#### run_async
```python
run_async(
sources: list[str | Path | ByteStream],
meta: dict[str, Any] | list[dict[str, Any]] | None = None,
) -> dict[str, list[Document]]
```
Asynchronously converts documents by sending them to DoclingServe.
This is the async equivalent of `run()`, useful when DoclingServe requests should not
block the event loop.
**Parameters:**
- **sources** (<code>list\[str | Path | ByteStream\]</code>) List of sources to convert. Each item can be a URL string, a local file path, or a
`ByteStream`. URL strings are sent to `/v1/convert/source`; all other sources are
uploaded to `/v1/convert/file`.
- **meta** (<code>dict\[str, Any\] | list\[dict\[str, Any\]\] | None</code>) Optional metadata to attach to the output Documents.
**Returns:**
- <code>dict\[str, list\[Document\]\]</code> A dictionary with key `"documents"` containing the converted Haystack Documents.