teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2020/04/13 08:10

投稿

tiitoi
tiitoi

スコア21960

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
  ```