回答編集履歴
1
修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
> そうですね。グループ分けで要件を満たすと思います!
|
2
2
|
|
3
3
|
y の値に基づいてグループ分けを行うコードを下記に貼ります。
|
4
|
-
y の値が小さい順に矩形をソートしておいて、1行前の y の値今の行の y の値との差が50 px 以上ある場合はそこで区切るようにしました。
|
4
|
+
y の値が小さい順に矩形をソートしておいて、1行前の y の値と今の行の y の値との差が50 px 以上ある場合はそこで区切るようにしました。
|
5
5
|
|
6
6
|
```python
|
7
7
|
import numpy as np
|
@@ -18,7 +18,7 @@
|
|
18
18
|
y = sorted_a[0, 1]
|
19
19
|
|
20
20
|
for row in sorted_a:
|
21
|
-
if row[1] - y > 50:
|
21
|
+
if row[1] - y >= 50: # 差が50px以上なら区切る
|
22
22
|
groups.append(tmp)
|
23
23
|
tmp = []
|
24
24
|
y = row[1]
|
@@ -31,7 +31,7 @@
|
|
31
31
|
numpy の関数を使って上記処理を書くと以下のようにすることもできます。
|
32
32
|
|
33
33
|
```python
|
34
|
-
split_pos = np.nonzero(np.diff(sorted_a[:, 1]) > 50)[0] + 1 # 分割する行
|
34
|
+
split_pos = np.nonzero(np.diff(sorted_a[:, 1]) >= 50)[0] + 1 # 分割する行
|
35
35
|
groups = np.split(sorted_a, split_pos) # 行方向に分割
|
36
36
|
print(groups)
|
37
37
|
```
|