PaddlePaddle/PaddleOCR · error · RuntimeError

PPTX conversion requires python-pptx: pip install paddleocr[

Error message

PPTX conversion requires python-pptx: pip install paddleocr[doc2md]

What it means

RuntimeError raised by PptxConverter.convert_file when importing python-pptx (Presentation, Picture) fails. PPTX-to-Markdown conversion is gated behind the optional doc2md extra, which bundles python-pptx.

Source

Thrown at paddleocr/_doc2md/converters/pptx.py:166

    if url:
        escaped_url = _escape_md_url(url)
        t = f"[{t}]({escaped_url})"
    return t


@default_registry.register
class PptxConverter(BaseConverter):
    supported_extensions = ["pptx"]
    supported_mimetypes = [
        "application/vnd.openxmlformats-officedocument.presentationml.presentation"
    ]

    def convert_file(self, file_path: Path, **kwargs) -> ConvertResult:
        try:
            from pptx import Presentation
            from pptx.shapes.picture import Picture
        except ImportError:
            raise RuntimeError(
                "PPTX conversion requires python-pptx: pip install paddleocr[doc2md]"
            )
        try:
            from pptx.enum.shapes import MSO_SHAPE_TYPE
        except ImportError:
            MSO_SHAPE_TYPE = None  # type: ignore[assignment]

        prs = Presentation(str(file_path))
        slides_md = []
        images: dict = {}
        image_counter = [0]
        slide_width = prs.slide_width
        self._Picture = Picture
        self._MSO_SHAPE_TYPE = MSO_SHAPE_TYPE

        for slide in prs.slides:
            slide_parts = []

View on GitHub (pinned to 2661c7c0ef)

Solutions

  1. pip install 'paddleocr[doc2md]'
  2. Or directly: pip install python-pptx
  3. Add a startup dependency probe for all formats you intend to accept

Example fix

# before (shell)
pip install paddleocr
# after
pip install 'paddleocr[doc2md]'
Defensive patterns

Strategy: validation

Validate before calling

import importlib.util

if importlib.util.find_spec('pptx') is None:
    raise RuntimeError('python-pptx missing: pip install paddleocr[doc2md]')

Try / catch

try:
    result = doc2md_convert(path)
except RuntimeError as e:
    if 'python-pptx' in str(e):
        fail_with_install_hint(e)
    raise

Prevention

When it happens

Trigger: doc2md_convert('slides.pptx') without python-pptx installed; iterating a directory of mixed Office files where any .pptx triggers this converter.

Common situations: Document-ingestion services that accept arbitrary Office formats but were deployed without the doc2md extra.

Related errors


AI-assisted analysis of PaddlePaddle/PaddleOCR@2661c7c0ef (2026-08-14). Data as JSON: /api/errors/883726b6d8df9586. Report an issue: GitHub.