> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/advanced-blocks/stitch-ocr-detections.md).

# OCR検出の統合

## v2

個別の OCR 検出結果（単語、文字、またはテキスト領域）を、検出結果を空間的に配置して行ごとにグループ化し、適切な読み順でテキストを連結することで、一貫したテキスト文字列にまとめます。

## 連結アルゴリズム

このブロックは、OCR 検出結果からテキストを再構築するための 3 つのアルゴリズムをサポートします:

### 許容誤差ベース（デフォルト）

固定ピクセル許容誤差を使用して検出結果を行にグループ化します。縦方向（縦書きテキストでは横方向）に許容誤差距離内にある検出結果は同じ行にまとめられ、その後、各行内で位置順に並べ替えられます。

* **最適用途**: 一貫したフォントサイズと、きれいに揃った水平/垂直テキスト
* **パラメータ**: `許容誤差` （行をグループ化するためのピクセルしきい値）

### 大津のしきい値処理

正規化されたギャップ距離に対して大津の方法を使用し、文字間隔と単語間隔を分ける最適なしきい値を自動的に見つけます。ギャップは局所的な文字幅で正規化されるため、解像度に依存しません。

* **最適用途**: 可変フォントサイズ、自動的な単語境界検出
* **パラメータ**: `otsu_threshold_multiplier` （しきい値の感度を調整）
* **主な特徴**: 単語間隔の二峰性分布を検出して、単一単語と複数単語のテキストを区別します

### コリメート（傾いたテキスト）

貪欲な親子トラバーサルを使用して、テキストの流れを追跡します。最初の検出結果から始めて、読み順で「続く」後続の検出結果（類似した整列 + 正しい方向）を見つけ、バケット化ではなくトラバーサルによって行を構築します。

* **最適用途**: 傾いた、曲線状の、または軸に揃っていないテキスト
* **パラメータ**: `collimate_tolerance` （ピクセル単位の整列許容誤差）
* **注記**: 単語境界は検出しません - 必要な場合は `delimiter` パラメータを使用してください

## 読み方向

すべてのアルゴリズムは複数の読み方向をサポートします:

* `left_to_right`: 標準的な横書き（英語、ほとんどの言語）
* `right_to_left`: 右から左へ（アラビア語、ヘブライ語）
* `vertical_top_to_bottom`: 縦書き上から下（繁体字中国語、日本語）
* `vertical_bottom_to_top`: 縦書き下から上
* `auto`: バウンディングボックスの寸法に基づいて自動的に検出

## 一般的な使用例

* **Document OCR**: 文字/単語の検出結果から段落や行を再構築します
* **多言語対応**: 異なる読み方向と表記体系を処理します
* **傾いたテキストの処理**: 傾きのあるテキストや曲線状のテキストには collimate アルゴリズムを使用します
* **単語検出**: Otsu アルゴリズムを使用して、単語間に自動でスペースを挿入します

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/stitch_ocr_detections@v2` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**                      | **型**   | **説明**                                                                                                                                                                                                                                                                                                                   | 参照 |
| --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -- |
| `name`                      | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                  | ❌  |
| `stitching_algorithm`       | `str`   | 検出結果を単語/行にグループ化するアルゴリズムです。'tolerance': 行のグループ化に固定ピクセル許容誤差を使用します（元のアルゴリズム）。一貫したフォントサイズと行間隔に適しています。'otsu': 正規化されたギャップに対して大津の方法を使用し、単語間の自然な区切りを見つけます。解像度に依存せず、二峰性のギャップ分布でよく機能します。'collimate': 貪欲な親子トラバーサルを使用して検出結果をグループ化します。バケットベースの手法が失敗する、傾いたテキストや曲線状のテキストに適しています。                                                        | ❌  |
| `reading_direction`         | `str`   | テキスト検出結果を読み取り、整理する方向です。'left\_to\_right': 標準的な横書きの読み順（英語、ほとんどの言語）。'right\_to\_left': 右から左への読み順（アラビア語、ヘブライ語）。'vertical\_top\_to\_bottom': 上から下への縦書き（繁体字中国語、日本語）。'vertical\_bottom\_to\_top': 下から上への縦書き（まれな縦書き形式）。'auto': 平均バウンディングボックス寸法に基づいて読み方向を自動検出します（幅 > 高さ = 横書き、高さ >= 幅 = 縦書き）。検出結果をどのように行にグループ化し、行内で並べ替えるかを決定します。 | ❌  |
| `許容誤差`                      | `整数`    | 同じ行に検出結果をグループ化するための、ピクセル単位の縦方向（縦書きテキストでは横方向）の距離しきい値です。この許容誤差距離内にある検出結果は同じ行にまとめられます。値が大きいほど、より離れた検出結果をグループ化できます（行間隔が可変のテキストや斜めのテキストに有用です）。値が小さいほど、より多くの行が作成されます（詰まったテキストに有用です）。0 より大きくなければなりません。                                                                                                                          | ✅  |
| `delimiter`                 | `str`   | 連結時に各テキスト要素（単語/文字）の間へ挿入する、任意の区切り文字列です。空文字列（デフォルト）は区切り文字なしを意味し、テキスト要素は直接連結されます。単語間にスペースを追加したり、要素間にカンマを入れたり、カスタム区切りを使ったりするのに便利です。例: 単語間にスペースを入れるには ' '（スペース）を、カンマを入れるには ',' を使用します。                                                                                                                                        | ✅  |
| `otsu_threshold_multiplier` | `float` | 'otsu' 連結アルゴリズムを使用する際に、大津法で算出されたしきい値に適用する乗数です。1.0 より大きい値は単語の区切りが起こりにくくなり（より保守的、分割が少ない）、1.0 より小さい値は単語の区切りが起こりやすくなります（より積極的、分割が多い）。デフォルトは 1.0（大津のしきい値をそのまま使用）です。単語が誤って分割される場合は 1.3〜1.5 を、単語が誤って結合される場合は 0.7〜0.9 を試してください。                                                                                                  | ✅  |
| `collimate_tolerance`       | `整数`    | 'collimate' 連結アルゴリズムのピクセル許容誤差です。ある検出結果が読み順で別の検出結果に続くかを判断する際に、どの程度の縦方向（横書きテキストの場合）または横方向（縦書きテキストの場合）のずれを許容するかを制御します。値が大きいほど、より傾いたテキストに対応できますが、別々の行を誤って結合する可能性があります。デフォルトは 10 ピクセルです。                                                                                                                                      | ✅  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `OCR 検出結果を連結` のバージョン `v2` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `predictions` ([*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)）：OCR モデルからの OCR 検出予測です。バウンディングボックスと、テキスト内容を含むクラス名を含める必要があります。各検出結果は、ひとつの単語、文字、またはテキスト領域を表し、それらを連結して一貫したテキストにします。データ辞書内のバウンディングボックス（xyxy）とクラス名を持つオブジェクト検出形式をサポートします。
  * `許容誤差` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)）：同じ行に検出結果をグループ化するための、ピクセル単位の縦方向（縦書きテキストでは横方向）の距離しきい値です。この許容誤差距離内にある検出結果は同じ行にまとめられます。値が大きいほど、より離れた検出結果をグループ化できます（行間隔が可変のテキストや斜めのテキストに有用です）。値が小さいほど、より多くの行が作成されます（詰まったテキストに有用です）。0 より大きくなければなりません。
  * `delimiter` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：連結時に各テキスト要素（単語/文字）の間へ挿入する、任意の区切り文字列です。空文字列（デフォルト）は区切り文字なしを意味し、テキスト要素は直接連結されます。単語間にスペースを追加したり、要素間にカンマを入れたり、カスタム区切りを使ったりするのに便利です。例: 単語間にスペースを入れるには ' '（スペース）を、カンマを入れるには ',' を使用します。
  * `otsu_threshold_multiplier` ([*`float`*](/workflows/ja/gaido/developer-guide/kinds/float.md)）：'otsu' 連結アルゴリズムを使用する際に、大津法で算出されたしきい値に適用する乗数です。1.0 より大きい値は単語の区切りが起こりにくくなり（より保守的、分割が少ない）、1.0 より小さい値は単語の区切りが起こりやすくなります（より積極的、分割が多い）。デフォルトは 1.0（大津のしきい値をそのまま使用）です。単語が誤って分割される場合は 1.3〜1.5 を、単語が誤って結合される場合は 0.7〜0.9 を試してください。
  * `collimate_tolerance` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)）：'collimate' 連結アルゴリズムのピクセル許容誤差です。ある検出結果が読み順で別の検出結果に続くかを判断する際に、どの程度の縦方向（横書きテキストの場合）または横方向（縦書きテキストの場合）のずれを許容するかを制御します。値が大きいほど、より傾いたテキストに対応できますが、別々の行を誤って結合する可能性があります。デフォルトは 10 ピクセルです。
* 出力
  * `ocr_text` ([`string`](/workflows/ja/gaido/developer-guide/kinds/string.md)) : 文字列値。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/stitch_ocr_detections@v2",
	    "stitching_algorithm": "tolerance",
	    "predictions": "$steps.ocr_model.predictions",
	    "reading_direction": "left_to_right",
	    "tolerance": 10,
	    "delimiter": "",
	    "otsu_threshold_multiplier": 1.0,
	    "collimate_tolerance": 5
	}
```

</details>

## v1

個別の OCR 検出結果（単語、文字、またはテキスト領域）を、読み方向に従って空間的に整理し、行ごとにグループ化して行内で並べ替え、適切な読み順でテキストを連結することで、一貫したテキスト文字列にまとめ、OCR モデルの出力から読みやすいテキストを再構築します。

## このブロックの仕組み

このブロックは、個々の OCR 検出結果を空間的に整理し、適切な読み順でテキストを連結することで、読みやすいテキストを再構築します。このブロックは次の処理を行います:

1. バウンディングボックスとクラス名（テキスト内容）を含む個別のテキスト検出結果を含む OCR 検出予測を受け取ります
2. 読み方向に基づいて座標を準備します:
   * 縦書きの読み方向では、x 座標と y 座標を入れ替えて縦方向の行処理を可能にします
   * 横書きの読み方向では、座標をそのまま使用します
3. 検出結果を行にグループ化します:
   * 許容誤差パラメータを使用して、縦位置（縦書きテキストでは横位置）に基づいて検出結果をグループ化します
   * 許容誤差距離内にある検出結果は同じ行の一部と見なされます
   * 許容誤差を大きくすると、より離れた検出結果をまとめられるため、行間隔が可変のテキストに有用です
4. 読み方向に基づいて行を並べ替えます:
   * 左から右と縦書き上から下では、行を上から下へ並べ替えます
   * 右から左と縦書き下から上では、行を逆順（下から上）に並べ替えます
5. 各行内で検出結果を並べ替えます:
   * 左から右と縦書き上から下では、検出結果を横位置で並べ替えます（左から右、縦書きでは上から下）
   * 右から左と縦書き下から上では、検出結果を逆順に並べ替えます（右から左、縦書きでは下から上）
6. 読み順でテキストを連結します:
   * 並べ替えられた順序で、検出結果からクラス名（テキスト内容）を抽出します
   * 行の間に行区切りを追加します（横書きテキストでは改行、縦書きテキストではスペース）
   * 指定されている場合は、各テキスト要素の間に区切り文字を任意で挿入します
   * 適切な読み順を持つ、ひとつの一貫したテキスト文字列を生成します
7. 自動読み方向検出を処理します（"auto" が選択されている場合）:
   * 検出バウンディングボックスの平均幅と平均高さを分析します
   * 平均幅 > 平均高さ の場合: 横書きテキスト（左から右）を検出します
   * 平均高さ >= 平均幅 の場合: 縦書きテキスト（上から下）を検出します
8. 連結されたテキスト文字列を返します:
   * 単一のテキスト文字列を `ocr_text` キー
   * テキストは、読み方向に応じて適切な改行と間隔で整形されます

このブロックは、個々の OCR 検出結果から複数行のテキストを再構築し、さまざまな言語や表記体系に対して適切な読み順を維持します。横書き（左から右、右から左）と縦書き（上から下、下から上）の両方に対応しており、さまざまな言語や形式のテキスト処理に役立ちます。

## 一般的な使用例

* **テキスト再構築**：OCR モデルからの個々の単語または文字の検出結果を読みやすいテキストブロックに変換します（例: 単語検出結果から文書を再構築する、文字検出結果を単語にまとめる、OCR 結果を段落に連結する）ことで、テキスト再構築ワークフローを可能にします
* **複数行テキスト処理**：OCR 結果から複数行のテキストを適切な改行と書式で再構築します（例: OCR 結果から段落を抽出する、整形済みテキストを再構築する、複数行文書を処理する）ことで、複数行テキストワークフローを可能にします
* **多言語 OCR**：さまざまな言語や表記体系の OCR 結果を処理します（例: アラビア語の右から左へのテキストを処理する、縦書きの中国語/日本語テキストを扱う、複数の読み方向をサポートする）ことで、多言語 OCR ワークフローを可能にします
* **文書処理**：文書や画像からテキストを抽出して再構築します（例: スキャン文書からテキストを抽出する、請求書のテキストを処理する、フォームからテキストを抽出する）ことで、文書処理ワークフローを可能にします
* **テキスト抽出と整形**：画像からテキストを抽出し、下流で使用できるように整形します（例: データベース保存用にテキストを抽出する、API 応答用にテキストを整形する、分析用にテキストを準備する）ことで、テキスト抽出ワークフローを可能にします
* **OCR 結果の後処理**：OCR モデルの出力を後処理して、利用可能なテキスト文字列を生成します（例: OCR 出力を整形する、OCR 結果を整理する、下流ブロック用にテキストを準備する）ことで、OCR 後処理ワークフローを可能にします

## 他のブロックへの接続

このブロックは OCR 検出予測を受け取り、連結されたテキスト文字列を生成します:

* **OCR モデルブロックの後** 検出結果を読みやすいテキストに変換するために（例: OCR モデルからテキスト文字列へ、OCR 検出結果から整形済みテキストへ、OCR 結果からテキスト出力へ）、OCR→テキストのワークフローを可能にします
* **データ保存ブロックの前** 抽出したテキストを保存するために（例: OCR テキストをデータベースに保存する、抽出したテキストを保存する、OCR 結果を記録する）、テキスト保存ワークフローを可能にします
* **通知ブロックの前** 抽出したテキストを通知に送るために（例: アラートに OCR テキストを含める、メッセージに抽出テキストを含める、OCR 結果を通知する）、テキスト通知ワークフローを可能にします
* **テキスト処理ブロックの前** 連結されたテキストを処理するために（例: NLP モデルでテキストを処理する、抽出テキストを分析する、テキスト変換を適用する）、テキスト処理ワークフローを可能にします
* **API 出力ブロックの前** API 応答でテキストを提供するために（例: API で OCR テキストを返す、応答用にテキストを整形する、抽出テキストを出力する）、テキスト出力ワークフローを可能にします
* **ワークフロー出力において** 最終出力として連結済みテキストを提供するために（例: テキスト抽出ワークフロー、OCR 出力ワークフロー、文書処理ワークフロー）、テキスト出力ワークフローを可能にします

## 要件

このブロックは、テキスト内容を含むバウンディングボックスとクラス名を持つ OCR 検出予測（オブジェクト検出形式）を必要とします。 `許容誤差` パラメータは 0 より大きくなければならず、検出結果を行にグループ化するための縦方向（縦書きテキストでは横方向）の距離しきい値を制御します。 `reading_direction` パラメータは 5 つのモードをサポートします: "left\_to\_right"（標準的な横書き）、"right\_to\_left"（アラビア語式）、"vertical\_top\_to\_bottom"（縦書き）、"vertical\_bottom\_to\_top"（逆向きの縦書き）、および "auto"（バウンディングボックス寸法に基づく自動検出）。 `delimiter` パラメータは任意で、各テキスト要素の間に区切り文字を挿入します（デフォルトでは空文字列、つまり区切り文字なし）。このブロックは `ocr_text` キー。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/stitch_ocr_detections@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**              | **型** | **説明**                                                                                                                                                                                                                                                                                                                   | 参照 |
| ------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -- |
| `name`              | `str` | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                  | ❌  |
| `reading_direction` | `str` | テキスト検出結果を読み取り、整理する方向です。'left\_to\_right': 標準的な横書きの読み順（英語、ほとんどの言語）。'right\_to\_left': 右から左への読み順（アラビア語、ヘブライ語）。'vertical\_top\_to\_bottom': 上から下への縦書き（繁体字中国語、日本語）。'vertical\_bottom\_to\_top': 下から上への縦書き（まれな縦書き形式）。'auto': 平均バウンディングボックス寸法に基づいて読み方向を自動検出します（幅 > 高さ = 横書き、高さ >= 幅 = 縦書き）。検出結果をどのように行にグループ化し、行内で並べ替えるかを決定します。 | ❌  |
| `許容誤差`              | `整数`  | 同じ行に検出結果をグループ化するための、ピクセル単位の縦方向（縦書きテキストでは横方向）の距離しきい値です。この許容誤差距離内にある検出結果は同じ行にまとめられます。値が大きいほど、より離れた検出結果をグループ化できます（行間隔が可変のテキストや斜めのテキストに有用です）。値が小さいほど、より多くの行が作成されます（詰まったテキストに有用です）。0 より大きくなければなりません。                                                                                                                          | ✅  |
| `delimiter`         | `str` | 連結時に各テキスト要素（単語/文字）の間へ挿入する、任意の区切り文字列です。空文字列（デフォルト）は区切り文字なしを意味し、テキスト要素は直接連結されます。単語間にスペースを追加したり、要素間にカンマを入れたり、カスタム区切りを使ったりするのに便利です。例: 単語間にスペースを入れるには ' '（スペース）を、カンマを入れるには ',' を使用します。                                                                                                                                        | ✅  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `OCR 検出結果を連結` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `predictions` ([*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)）：OCR モデルからの OCR 検出予測です。バウンディングボックスと、テキスト内容を含むクラス名を含める必要があります。各検出結果は、ひとつの単語、文字、またはテキスト領域を表し、それらを連結して一貫したテキストにします。データ辞書内のバウンディングボックス（xyxy）とクラス名を持つオブジェクト検出形式をサポートします。
  * `許容誤差` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)）：同じ行に検出結果をグループ化するための、ピクセル単位の縦方向（縦書きテキストでは横方向）の距離しきい値です。この許容誤差距離内にある検出結果は同じ行にまとめられます。値が大きいほど、より離れた検出結果をグループ化できます（行間隔が可変のテキストや斜めのテキストに有用です）。値が小さいほど、より多くの行が作成されます（詰まったテキストに有用です）。0 より大きくなければなりません。
  * `delimiter` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：連結時に各テキスト要素（単語/文字）の間へ挿入する、任意の区切り文字列です。空文字列（デフォルト）は区切り文字なしを意味し、テキスト要素は直接連結されます。単語間にスペースを追加したり、要素間にカンマを入れたり、カスタム区切りを使ったりするのに便利です。例: 単語間にスペースを入れるには ' '（スペース）を、カンマを入れるには ',' を使用します。
* 出力
  * `ocr_text` ([`string`](/workflows/ja/gaido/developer-guide/kinds/string.md)) : 文字列値。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/stitch_ocr_detections@v1",
	    "predictions": "$steps.ocr_model.predictions",
	    "reading_direction": "left_to_right",
	    "tolerance": 10,
	    "delimiter": ""
	}
```

</details>
