Files

31 lines
1.0 KiB
Python
Raw Permalink Normal View History

2026-07-16 11:12:17 +08:00
"""PPT/PPTX parser: convert to PDF, then reuse PdfParser."""
from __future__ import annotations
from pathlib import Path
from rag_cut.models import Block
from rag_cut.parsers.base import BaseParser
from rag_cut.parsers.office_to_pdf import convert_to_pdf
from rag_cut.parsers.pdf_parser import PdfParser
class PptParser(BaseParser):
"""Parse presentations by converting to PDF and delegating to PdfParser."""
def __init__(self) -> None:
self._pdf_parser = PdfParser()
def parse(self, path: Path, assets_dir: Path) -> list[Block]:
assets_dir.mkdir(parents=True, exist_ok=True)
pdf_dir = assets_dir / "_conversion"
pdf_path = convert_to_pdf(path, pdf_dir)
blocks = self._pdf_parser.parse(pdf_path, assets_dir)
source_fmt = path.suffix.lower().lstrip(".")
for block in blocks:
block.meta.setdefault("source_format", source_fmt)
if page := block.meta.get("page"):
block.meta["slide"] = page
return blocks