Convert PPTX files into LLM-friendly Markdown (VLM-first image understanding).
Project description
pptx-md
PPTX 파일을 LLM-friendly Markdown으로 변환하는 Python 라이브러리.
VLM(Vision Language Model) 기반 이미지 이해와 개인정보 마스킹을 지원합니다.
설치
Core (텍스트 변환만)
pip install pptx-md
VLM 지원 포함 (이미지 설명 생성)
pip install pptx-md[vlm]
VLM extras는 anthropic 및 openai SDK를 함께 설치합니다.
Quick Start
기본 변환 (core-only)
from pptx_md import convert
md = convert("deck.pptx")
print(md)
convert()는 파싱 → 이미지 분류 → Markdown 어셈블 파이프라인을 실행하고
Markdown 문자열을 반환합니다.
옵션과 함께
from pptx_md import convert, ConvertOptions
opts = ConvertOptions(validate=True)
md = convert("deck.pptx", options=opts)
VLM 이미지 설명
VLM을 사용하면 이미지 슬라이드에 자연어 설명을 자동으로 생성합니다. API 키는 반드시 환경변수로 전달합니다 (NFR-05).
import os
from pptx_md import convert, ConvertOptions, get_describer
describer = get_describer("anthropic", api_key=os.environ["ANTHROPIC_API_KEY"])
opts = ConvertOptions(describer=describer)
md = convert("deck.pptx", options=opts)
OpenAI를 사용하려면:
import os
from pptx_md import convert, ConvertOptions, get_describer
describer = get_describer("openai", api_key=os.environ["OPENAI_API_KEY"])
opts = ConvertOptions(describer=describer)
md = convert("deck.pptx", options=opts)
개인정보 마스킹 (opt-in)
이메일·전화번호 등 PII를 [REDACTED]로 치환합니다. 기본값은 비활성입니다.
기본 패턴 활성화
from pptx_md import convert, ConvertOptions, MaskingOptions
opts = ConvertOptions(masking=MaskingOptions(enabled=True))
md = convert("deck.pptx", options=opts)
커스텀 패턴 추가
import re
from pptx_md import convert, ConvertOptions, MaskingOptions
custom_masking = MaskingOptions(
enabled=True,
patterns=[
re.compile(r"\d{6}-\d{7}"), # 주민등록번호
re.compile(r"사번\s*:\s*\d+"), # 사번
],
)
opts = ConvertOptions(masking=custom_masking)
md = convert("deck.pptx", options=opts)
Markdown 검증
from pptx_md import convert, validate_markdown
md = convert("deck.pptx")
result = validate_markdown(md)
if not result.valid:
print("검증 실패:", result.warnings)
elif result.warnings:
print("경고:", result.warnings)
convert(validate=True)를 사용하면 변환과 동시에 검증 결과를 로그로 출력합니다
(반환값은 항상 str).
커스텀 VLM 제공자 (플러그인)
ImageDescriber 프로토콜을 구현하면 어떤 VLM 제공자도 플러그인으로 사용할 수
있습니다.
from pptx_md import convert, ConvertOptions, ImageDescriber
class MyDescriber:
def describe(
self,
image_bytes: bytes,
image_ext: str,
shape_hint: str | None,
) -> str:
return "이미지에 대한 설명"
opts = ConvertOptions(describer=MyDescriber())
md = convert("deck.pptx", options=opts)
예외 처리
from pptx_md import convert, ParseError, DescribeError
try:
md = convert("deck.pptx")
except ParseError as e:
print(f"PPTX 파일을 읽을 수 없습니다: {e}")
전체 API 레퍼런스
docs/api.md 에 공개 심볼 전체 레퍼런스가 있습니다.
상세 사용 가이드는 docs/usage.md를 참고하세요.
요구사항
- Python 3.11+
- Core:
python-pptx,Pillow - VLM 지원:
pip install pptx-md[vlm](anthropic또는openaiSDK)
라이선스
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pptx_md-0.1.1.tar.gz.
File metadata
- Download URL: pptx_md-0.1.1.tar.gz
- Upload date:
- Size: 121.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.11.0"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 1.1.1q 5 Jul 2022","python":"3.11.0","system":{"name":"Windows","release":"10"}} HTTPX2/2.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d70c7f6a18292964ad4074923283d1430f7d2302695e10ae60c122e0f7f731e
|
|
| MD5 |
6c4d7562045f11cac9b28dbb65b15c2f
|
|
| BLAKE2b-256 |
9d1bbc1cb90cdb8277d740f9229a3297654b63d7fb38682d7c876ceeefedeea9
|
File details
Details for the file pptx_md-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pptx_md-0.1.1-py3-none-any.whl
- Upload date:
- Size: 38.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.11.0"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 1.1.1q 5 Jul 2022","python":"3.11.0","system":{"name":"Windows","release":"10"}} HTTPX2/2.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8f88cfa44675075735a34a166f7fbe3b0a4c9411ccf41d5e336538a59e0d736
|
|
| MD5 |
5cd13fd017f56f9a4d4659453d09b089
|
|
| BLAKE2b-256 |
a381247581c32ca5d4e50ecc001eb5afa77f81682e353c6769dbdaf956de3f33
|