You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用python-pptx识别PPT中文本框的出入站连接线?

技术问题
  1. 如何判断PPT中特定文本框是否存在入站或出站连接线?
  2. 使用python-pptx库可以获取PPT中的文本框和形状,也能区分文本框与线条,但找不到解析连接关系的相关文档,无法建立文本框与线条的关联。

实现代码

from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE

# ========================================================
# 加载演示文稿
# ========================================================
lobj_presentation = Presentation(self.pptx_file_path)

# ========================================================
# 获取幻灯片总数
# ========================================================
total_slides = len(lobj_presentation.slides)

llst_slide_content = []

i = 0
for slide in range(total_slides):
    # 获取当前幻灯片的形状总数
    total_shapes = len(lobj_presentation.slides[slide].shapes)

    llst_shapes = []

    for shape in range(total_shapes):
        i += 1
        lobj_shape = lobj_presentation.slides[slide].shapes[shape]
        shape_content = dict()
        shape_content['Id'] = i
        shape_content['Slide_No'] = int(slide)
        shape_content['Shape_Id'] = lobj_shape.shape_id
        shape_content['Shape_Type_Id'] = lobj_shape.shape_type

        if lobj_shape.shape_type == MSO_SHAPE_TYPE.TEXT_BOX:
            shape_content['Shape_Type'] = 'Text_Box'

        elif lobj_shape.shape_type == MSO_SHAPE_TYPE.LINE:
            shape_content['Shape_Type'] = 'Line'

        if lobj_shape.has_text_frame:
            shape_content['Shape_Text'] = lobj_shape.text

        else:
            shape_content['Shape_Text'] = ''

        shape_content['Left'] = int(lobj_shape.left)
        shape_content['Top'] = int(lobj_shape.top)
        shape_content['Width'] = int(lobj_shape.width)
        shape_content['Height'] = int(lobj_shape.height)

        shape_content['X1'] = int(lobj_shape.left)
        shape_content['Y1'] = int(lobj_shape.top)
        shape_content['X2'] = int(lobj_shape.left) + int(lobj_shape.width)
        shape_content['Y2'] = int(lobj_shape.top) + int(lobj_shape.height)
        shape_content['Line_Index'] = -1

        llst_shapes.append(shape_content)

    llst_slide_content.append(llst_shapes)

代码输出

[{"Id":1,"Slide_No":1,"Shape_Id":70,"Shape_Type_Id":17,"Shape_Type":"Text_Box","Shape_Text":"Hello","Left":1186475,"Top":1804225,"Width":1839900,"Height":400200,"X1":1186475,"Y1":1804225,"X2":3026375,"Y2":2204425,"Line_Index":-1},{"Id":2,"Slide_No":1,"Shape_Id":71,"Shape_Type_Id":17,"Shape_Type":"Text_Box","Shape_Text":"There","Left":3776338,"Top":1804225,"Width":1839900,"Height":400200,"X1":3776338,"Y1":1804225,"X2":5616238,"Y2":2204425,"Line_Index":-1},{"Id":11,"Slide_No":1,"Shape_Id":72,"Shape_Type_Id":9,"Shape_Type":"Line","Shape_Text":"","Left":3026375,"Top":2004325,"Width":750000,"Height":0,"X1":3026375,"Y1":2004325,"X2":3776375,"Y2":2004325,"Line_Index":-1},{"Id":3,"Slide_No":1,"Shape_Id":73,"Shape_Type_Id":17,"Shape_Type":"Text_Box","Shape_Text":"B","Left":6366200,"Top":1804225,"Width":1839900,"Height":400200,"X1":6366200,"Y1":1804225,"X2":8206100,"Y2":2204425,"Line_Index":-1},{"Id":4,"Slide_No":1,"Shape_Id":74,"Shape_Type_Id":9,"Shape_Type":"Line","Shape_Text":"","Left":5616238,"Top":2004325,"Width":750000,"Height":0,"X1":5616238,"Y1":2004325,"X2":6366238,"Y2":2004325,"Line_Index":-1},{"Id":5,"Slide_No":1,"Shape_Id":75,"Shape_Type_Id":17,"Shape_Type":"Text_Box","Shape_Text":"C","Left":3776338,"Top":3071275,"Width":1839900,"Height":400200,"X1":3776338,"Y1":3071275,"X2":5616238,"Y2":3471475,"Line_Index":-1},{"Id":6,"Slide_No":1,"Shape_Id":76,"Shape_Type_Id":17,"Shape_Type":"Text_Box","Shape_Text":"A","Left":3776338,"Top":631775,"Width":1839900,"Height":400200,"X1":3776338,"Y1":631775,"X2":5616238,"Y2":1031975,"Line_Index":-1},{"Id":7,"Slide_No":1,"Shape_Id":77,"Shape_Type_Id":9,"Shape_Type":"Line","Shape_Text":"","Left":4696288,"Top":1032025,"Width":0,"Height":772200,"X1":4696288,"Y1":1032025,"X2":4696288,"Y2":1804225,"Line_Index":-1},{"Id":8,"Slide_No":1,"Shape_Id":78,"Shape_Type_Id":9,"Shape_Type":"Line","Shape_Text":"","Left":4696288,"Top":2204425,"Width":0,"Height":867000,"X1":4696288,"Y1":2204425,"X2":4696288,"Y2":3071425,"Line_Index":-1}]

内容的提问来源于stack exchange,提问作者Lav Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:25:04