> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 文書処理

> さまざまな文書形式からテキストを抽出・処理

## 概要

文書処理ツールを使用すると、PDF、DOCX、Word文書を含むさまざまな文書形式からテキストコンテンツを抽出できます。これらのツールは、文書分析、コンテンツ抽出、テキスト処理ワークフローに不可欠です。

## 主な機能

* `PDF_EXTRACT_TEXT`
  * PDFファイルからテキストコンテンツを抽出
* `DOCX_EXTRACT_TEXT`
  * DOCXファイルからテキストコンテンツを抽出
* `JINBA_FLEX_PARSER`
  * Jinba Flex Parser APIを使用してドキュメントをテキストに解析。PDF、DOCX、画像など、さまざまなファイル形式をサポート
* `WORD_TABLE_EXTRACT`
  * Word文書からテーブルデータをJSONとして抽出
* `WORD_TABLE_UPDATE`
  * Word文書のテーブルデータを更新
* `TRANSLATE_PPTX_FILE`
  * PowerPoint（PPTX）ファイルのテキストコンテンツを異なる言語に翻訳

HTMLコンテンツをPDFやDOCXファイルに変換する場合は、[データ変換ツール](/ja/pages/tools/validation/data_conversion)ページの `CONVERTER_HTML_TO_PDF` および `CONVERTER_HTML_TO_DOCX` を参照してください。

## 認証

認証は不要です。文書処理ツールは、ファイルURLまたはbase64エンコードされたファイルで直接動作します。

### 例: 基本的なテキスト抽出

```yaml theme={null}
- id: extract_pdf_text
  name: extract_pdf_text
  tool: PDF_EXTRACT_TEXT
  input:
    - name: pdf_base64
      value: "{{steps.upload_pdf.result.base64}}"

- id: extract_docx_text
  name: extract_docx_text
  tool: DOCX_EXTRACT_TEXT
  input:
    - name: docx_base64
      value: "{{steps.upload_docx.result.base64}}"

- id: analyze_extracted_text
  name: analyze_extracted_text
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        以下の抽出されたテキストを分析し、以下を提供してください：
        1. 主要トピックの要約
        2. 重要な発見や重要なポイント
        3. 言及されたアクションアイテム
        
        PDFコンテンツ: {{steps.extract_pdf_text.result}}
        DOCXコンテンツ: {{steps.extract_docx_text.result}}
```

### 例: Jinba Flex Parserでドキュメントを解析

`JINBA_FLEX_PARSER` は、URL上のドキュメントを解析して抽出したテキストを返します。URLベースのファイルをそのまま処理でき（base64エンコード不要）、PDF、DOCX、画像などをサポートしています。

**入力**:

| パラメータ               | 型      | 必須  | 説明                                                                                      |
| ------------------- | ------ | --- | --------------------------------------------------------------------------------------- |
| `fileUrl`           | string | はい  | 解析するファイルのURL                                                                            |
| `endpointType`      | enum   | いいえ | `default`（標準の解析サービス、推奨）、`custom`（ユーザー指定URLを使うオンプレミス環境向け）、`legacy`（非推奨）。デフォルトは `default` |
| `customEndpointUrl` | string | いいえ | カスタムエンドポイントのURL。`endpointType` が `custom` の場合は必須                                        |

**設定**:

| フィールド    | 説明                                  |
| -------- | ----------------------------------- |
| `apiKey` | 解析エンドポイントのAPIキー。空白の場合はJinbaクレジットを使用 |

**出力**:

* `result`: ドキュメントから解析されたテキストコンテンツ

```yaml theme={null}
- id: upload_source_document
  name: upload_source_document
  tool: INPUT_FILE
  input:
    - name: description
      value: "解析するドキュメント（PDF、DOCX、画像など）"

- id: parse_document
  name: parse_document
  tool: JINBA_FLEX_PARSER
  input:
    - name: fileUrl
      value: "{{steps.upload_source_document.result}}"

- id: summarize_document
  name: summarize_document
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        以下のドキュメントを要約してください：
        {{steps.parse_document.result}}
```

### 例: Wordテーブル処理

```yaml theme={null}
- id: extract_word_table
  name: extract_word_table
  tool: WORD_TABLE_EXTRACT
  config:
    - name: timeout
      value: 300000
  input:
    - name: file_url
      value: "https://example.com/document.docx"
    - name: table_index
      value: 0

- id: process_table_data
  name: process_table_data
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        
        # 前のステップからテーブルデータを取得
        table_data = {{steps.extract_word_table.result}}
        
        # テーブルデータを処理
        processed_data = []
        headers = table_data[0] if table_data else []
        
        for row in table_data[1:]:  # ヘッダー行をスキップ
            row_dict = {}
            for i, cell in enumerate(row):
                if i < len(headers):
                    row_dict[headers[i]] = cell
            processed_data.append(row_dict)
        
        print(json.dumps({"processed_table": processed_data}))

- id: save_to_spreadsheet
  name: save_to_spreadsheet
  tool: GOOGLE_SPREADSHEET_ADD_ROWS
  config:
    - name: credentials
      value: "{{secrets.GOOGLE_SHEETS_CREDENTIALS}}"
  input:
    - name: spreadsheet_id
      value: "your_spreadsheet_id"
    - name: sheet_name
      value: "抽出されたデータ"
    - name: values
      value: "{{steps.extract_word_table.result}}"
```

### 例: 文書分析パイプライン

```yaml theme={null}
- id: upload_document
  name: upload_document
  tool: INPUT_FILE
  input:
    - name: value
      value: "分析する文書"

- id: determine_file_type
  name: determine_file_type
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        
        # ファイル情報を取得
        file_info = {{steps.upload_document.result}}
        file_name = file_info.get('filename', '').lower()
        
        if file_name.endswith('.pdf'):
            file_type = 'pdf'
        elif file_name.endswith('.docx'):
            file_type = 'docx'
        else:
            file_type = 'unknown'
        
        print(json.dumps({"file_type": file_type, "filename": file_name}))

- id: extract_text_pdf
  name: extract_text_pdf
  tool: PDF_EXTRACT_TEXT
  condition: "{{steps.determine_file_type.result.file_type == 'pdf'}}"
  input:
    - name: pdf_base64
      value: "{{steps.upload_document.result.base64}}"

- id: extract_text_docx
  name: extract_text_docx
  tool: DOCX_EXTRACT_TEXT
  condition: "{{steps.determine_file_type.result.file_type == 'docx'}}"
  input:
    - name: docx_base64
      value: "{{steps.upload_document.result.base64}}"

- id: generate_document_summary
  name: generate_document_summary
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        この文書の包括的な要約を作成してください：
        
        文書: {{steps.determine_file_type.result.filename}}
        単語数: {{steps.process_extracted_text.result.word_count}}
        
        コンテンツ:
        {{steps.process_extracted_text.result.text}}
        
        以下を提供してください：
        1. エグゼクティブサマリー（2-3文）
        2. 主要トピックとテーマ
        3. 重要な事実やデータポイント
        4. アクションアイテムや推奨事項
        5. 全体的な評価
```

## 例: PowerPoint翻訳

```yaml theme={null}
- id: upload_presentation
  name: upload_presentation
  tool: INPUT_FILE
  input:
    - name: description
      value: "翻訳するPowerPointファイルをアップロード"

- id: translate_to_spanish
  name: translate_to_spanish
  tool: TRANSLATE_PPTX_FILE
  input:
    - name: value
      value: "{{steps.upload_presentation.result.file_url}}"
    - name: target_lang
      value: "es"

- id: translate_to_french
  name: translate_to_french
  tool: TRANSLATE_PPTX_FILE
  input:
    - name: value
      value: "{{steps.upload_presentation.result.file_url}}"
    - name: target_lang
      value: "fr"

- id: translate_to_japanese
  name: translate_to_japanese
  tool: TRANSLATE_PPTX_FILE
  input:
    - name: value
      value: "{{steps.upload_presentation.result.file_url}}"
    - name: target_lang
      value: "ja"

- id: create_download_links
  name: create_download_links
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        
        # 翻訳結果を収集
        original_file = "{{steps.upload_presentation.result.filename}}"
        spanish_url = "{{steps.translate_to_spanish.result.url}}"
        french_url = "{{steps.translate_to_french.result.url}}"
        japanese_url = "{{steps.translate_to_japanese.result.url}}"
        
        translations = {
            "original_file": original_file,
            "translations": [
                {"language": "スペイン語 (es)", "download_url": spanish_url},
                {"language": "フランス語 (fr)", "download_url": french_url},
                {"language": "日本語 (ja)", "download_url": japanese_url}
            ]
        }
        
        print("=== PowerPoint翻訳完了 ===")
        print(f"元のファイル: {original_file}")
        print("\n翻訳されたバージョンが利用可能:")
        for trans in translations["translations"]:
            print(f"  • {trans['language']}: {trans['download_url']}")
        
        # さらなる処理のためのJSON出力
        print(f"\nJSON出力: {json.dumps(translations, ensure_ascii=False)}")
```

## サポートされる言語

`TRANSLATE_PPTX_FILE`ツールは標準言語コードを使用してさまざまな言語への翻訳をサポートします:

### 主要言語コード:

* **en**: 英語
* **es**: スペイン語
* **fr**: フランス語
* **de**: ドイツ語
* **it**: イタリア語
* **pt**: ポルトガル語
* **ru**: ロシア語
* **ja**: 日本語
* **ko**: 韓国語
* **zh**: 中国語（簡体字）
* **ar**: アラビア語
* **hi**: ヒンディー語
* **nl**: オランダ語
* **sv**: スウェーデン語
* **da**: デンマーク語
* **no**: ノルウェー語
* **fi**: フィンランド語

### 使用上の注意:

* 翻訳は元の書式とスライド構造を保持します
* 画像内のテキストは翻訳できません（テキストボックスと図形のみ）
* 複雑なアニメーションと画面切り替え効果は保持されます
* 翻訳後のファイルサイズは若干変動する場合があります
* 処理時間はプレゼンテーションのサイズと複雑さに依存します

## ヒントとベストプラクティス

* base64エンコードファイルのサポートにより安全なファイル処理が可能
* 処理前に常にファイルタイプを検証する
* 大きな文書を処理する際は適切なタイムアウトを検討する
* 破損したファイルやサポートされていないファイルのエラーハンドリングを実装する
* 構造化データ分析のためにテキストとは別にテーブルを抽出する
* より良い分析結果のためにテキストのクリーニングと前処理を検討する
