def split(self, text):
a = _string_to_array(text)
if not a.size:
return []
b = np.copy(a)
b[b == ord(' ')] = 0
if self.margin != (1, 1):
# Dilate the image
structure = np.zeros((2 * (self.margin[1] - 1) + 1,
2 * (self.margin[0] - 1) + 1))
structure[self.margin[1] - 1:, self.margin[0] - 1:] = 1
labels = binary_dilation(b, structure=structure).astype(b.dtype)
else:
labels = b
num = label(labels, structure=np.ones((3, 3)), output=labels)
objects = find_objects(labels)
parts = []
for i, obj in enumerate(objects):
mask = labels[obj] != i + 1
region = np.copy(a[obj])
region[mask] = ord(' ')
part = '\n'.join(''.join(unichr(c or ord(' ')) for c in row)
for row in region.tolist())
if part.strip():
parts.append(part)
return parts
评论列表
文章目录