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

如何在Jupyter Notebook中调用Python脚本的公共函数并查看可视化输出

在Jupyter Notebook中导入并调用指定Python函数(含可视化输出)

一、准备脚本文件

把merge_boxes_horizontally函数,以及它依赖的has_sufficient_y_overlap、in_x_proximity函数,还有TextBox、TextBoxCluster类,全部放到同一个Python脚本文件中(比如命名为box_processing.py),并将该脚本保存到和你的Jupyter Notebook文件同一目录下。

二、在Notebook中导入函数

有两种导入方式,根据需求选择:

方式1:导入整个模块

import box_processing

调用函数时通过模块名访问:

result_clusters = box_processing.merge_boxes_horizontally(your_boxes_data)

方式2:直接导入目标函数

from box_processing import merge_boxes_horizontally

调用时直接用函数名:

result_clusters = merge_boxes_horizontally(your_boxes_data)

脚本不在同目录的处理

如果脚本和Notebook不在同一文件夹,先把脚本路径添加到Python搜索路径:

import sys
sys.path.append("/你/的/脚本/所在/绝对路径")
# 之后再执行上面的导入语句

三、准备输入数据

你需要先构造TextBox类型的实例列表作为函数输入,示例如下:

# 先定义TextBox类(如果脚本里没包含的话)
class TextBox:
    def __init__(self, left, top, right, bottom):
        self.left = left
        self.top = top
        self.right = right
        self.bottom = bottom

# 构造示例文本框数据
sample_boxes = [
    TextBox(10, 20, 50, 40),
    TextBox(60, 22, 100, 38),
    TextBox(10, 50, 50, 70),
    TextBox(110, 21, 150, 39)
]

四、调用函数并实现可视化

调用函数得到聚类结果后,用matplotlib绘制可视化效果:

import matplotlib.pyplot as plt

# 调用目标函数
clusters = merge_boxes_horizontally(sample_boxes)

# 绘制可视化图
plt.figure(figsize=(10, 6))

# 绘制原始文本框(蓝色细边框)
for box in sample_boxes:
    plt.gca().add_patch(
        plt.Rectangle(
            (box.left, box.top), 
            box.right - box.left, 
            box.bottom - box.top, 
            fill=False, 
            color='blue', 
            linewidth=1
        )
    )

# 绘制合并后的聚类框(红色粗边框)
for cluster in clusters:
    # 计算聚类框的边界(假设cluster包含boxes属性存储子文本框)
    cluster_left = min(b.left for b in cluster.boxes)
    cluster_top = min(b.top for b in cluster.boxes)
    cluster_right = max(b.right for b in cluster.boxes)
    cluster_bottom = max(b.bottom for b in cluster.boxes)
    
    plt.gca().add_patch(
        plt.Rectangle(
            (cluster_left, cluster_top), 
            cluster_right - cluster_left, 
            cluster_bottom - cluster_top, 
            fill=False, 
            color='red', 
            linewidth=2
        )
    )

# 调整图表显示
plt.xlabel('X坐标')
plt.ylabel('Y坐标')
plt.title('文本框水平合并结果')
plt.gca().invert_yaxis()  # 适配文本布局的Y轴方向(从上到下)
plt.show()

五、注意事项

  • 必须确保脚本中包含函数依赖的所有组件(辅助函数、类),否则会出现导入或调用错误。
  • 如果修改了脚本内容,需要重启Jupyter内核,或者用以下代码重新加载模块:
    import importlib
    importlib.reload(box_processing)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:27:25