{"record":{"id":"57a783a783207736","repo":"docling-project/docling","slug":"pipeline-name-does-not-support-threadeddoclingpa-57a783","errorCode":null,"errorMessage":"{pipeline_name} does not support ThreadedDoclingParseDocumentBackend yet. It still requires ordered/random page access via load_page() and cannot consume iterator-only or out-of-order page delivery. Use StandardPdfPipeline instead.","messagePattern":"(.+?) does not support ThreadedDoclingParseDocumentBackend yet\\. It still requires ordered/random page access via load_page\\(\\) and cannot consume iterator-only or out-of-order page delivery\\. Use StandardPdfPipeline instead\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"docling/pipeline/extraction_vlm_pipeline.py","lineNumber":43,"sourceCode":"from docling.datamodel.pipeline_options import (\n    PipelineOptions,\n    VlmExtractionPipelineOptions,\n)\nfrom docling.datamodel.settings import settings\nfrom docling.models.extraction.transformers_extraction_model import (\n    TransformersExtractionModel,\n)\nfrom docling.pipeline.base_extraction_pipeline import BaseExtractionPipeline\nfrom docling.utils.accelerator_utils import decide_device\n\n_log = logging.getLogger(__name__)\n\n\ndef _raise_if_unsupported_threaded_backend(\n    backend: PaginatedDocumentBackend, pipeline_name: str\n) -> None:\n    if isinstance(backend, ThreadedDoclingParseDocumentBackend):\n        raise RuntimeError(\n            f\"{pipeline_name} does not support ThreadedDoclingParseDocumentBackend yet. \"\n            \"It still requires ordered/random page access via load_page() and cannot \"\n            \"consume iterator-only or out-of-order page delivery. Use StandardPdfPipeline instead.\"\n        )\n\n\nclass ExtractionVlmPipeline(BaseExtractionPipeline):\n    def __init__(self, pipeline_options: VlmExtractionPipelineOptions):\n        super().__init__(pipeline_options)\n\n        self.accelerator_options = pipeline_options.accelerator_options\n        self.pipeline_options: VlmExtractionPipelineOptions\n\n        self.vlm_model = TransformersExtractionModel(\n            enabled=True,\n            artifacts_path=self.artifacts_path,\n            accelerator_options=self.accelerator_options,\n            vlm_options=pipeline_options.vlm_options,","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/docling-project/docling/blob/61d76f1ff3f8428065465889f7b4577da7df704c/docling/pipeline/extraction_vlm_pipeline.py#L25-L61","documentation":"ExtractionVlmPipeline (and other extraction pipelines using _raise_if_unsupported_threaded_backend) require ordered/random page access through backend.load_page(); the ThreadedDoclingParseDocumentBackend delivers pages iterator-only and possibly out-of-order, which extraction models cannot consume. Passing that backend raises RuntimeError immediately, directing users to StandardPdfPipeline.","triggerScenarios":"Configuring DocumentConverter with ExtractionVlmPipeline (VLM extraction) for PDFs while the format_to_pipeline mapping (or docling-parse threaded setup) selects ThreadedDoclingParseDocumentBackend — e.g. reusing a mapping intended for throughput-optimized standard conversion.","commonSituations":"Enabling threaded parsing for speed and then switching the pipeline to VLM extraction; custom format_to_pipeline entries copied from performance-tuned configs; newer docling versions exposing the threaded backend where old configs silently picked it.","solutions":["Use StandardPdfPipeline with ThreadedDoclingParseDocumentBackend, or ExtractionVlmPipeline with the standard (non-threaded) docling-parse backend","Remove/adjust the format_to_pipeline or backend selection so extraction pipelines get a regular PaginatedDocumentBackend","Track docling releases: retry ExtractionVlmPipeline with the threaded backend once ordered page access is implemented"],"exampleFix":"# before\nformat_to_pipeline = {\n    InputFormat.PDF: ExtractionVlmPipeline,  # + threaded docling-parse backend\n}\n\n# after\nformat_to_pipeline = {\n    InputFormat.PDF: StandardPdfPipeline,  # threaded backend OK here\n}","handlingStrategy":"validation","validationCode":"from docling.datamodel.base_models import InputFormat\nfrom docling.pipeline.extraction_vlm_pipeline import ExtractionVlmPipeline\n\n# do not pair the threaded docling-parse backend with extraction pipelines\nif any(pipe is ExtractionVlmPipeline for pipe in format_to_pipeline.values()):\n    assert 'threaded' not in str(backend_choice).lower(), 'extraction pipelines need StandardPdfPipeline for threaded parsing'","typeGuard":null,"tryCatchPattern":"try:\n    converter = DocumentConverter(format_to_pipeline=...)\nexcept RuntimeError as e:\n    if 'ThreadedDoclingParseDocumentBackend' in str(e):\n        # switch mapping: extraction -> standard (non-threaded) backend, or use StandardPdfPipeline\n        ...","preventionTips":["Keep two converter configurations: threaded parsing for StandardPdfPipeline, standard backend for extraction pipelines","Re-test backend/pipeline pairings after docling upgrades since support matrices change"],"tags":["extraction","vlm","pdf-backend","threaded","unsupported"],"backgroundTag":null,"analyzedSha":"61d76f1ff3f8428065465889f7b4577da7df704c","analyzedAt":"2026-08-14T23:53:18.727Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}