from markitdown import MarkItDown from io import BytesIO from PIL import Image import base64 def image_callback(image: Image.Image) -> str: print("======进入image_callback======") max_width = 1200 if image.width > max_width: ratio = max_width / image.width new_size = (max_width, int(image.height * ratio)) image = image.resize(new_size, Image.Resampling.LANCZOS) buf = BytesIO() image.save(buf, format="PNG", optimize=True) buf.seek(0) b64_data = base64.b64encode(buf.read()).decode("utf-8") return f"data:image/png;base64,{b64_data}" if __name__ == "__main__": pptx_file = "test_ppt.pptx" out_md = "pptx_out_ok.md" md_converter = MarkItDown(image_callback=image_callback) res = md_converter.convert(source=pptx_file) md_text = res.text_content print("===生成的原始md===") print(md_text) with open(out_md, "w", encoding="utf-8") as f: f.write(md_text) print(f"✅转换完成:{out_md}")