すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Management:ドキュメントからテキストを抽出する

最終更新日:May 17, 2025

ドキュメントコンテンツ抽出は、さまざまな形式と言語のドキュメントからプレーンテキストを自動的に抽出します。このトピックでは、ドキュメントからテキストを抽出する方法について説明します。

シナリオ

  • 検索エンジン最適化: SEO 効率を向上させるために、コンテンツをプレーンテキストに変換することが必要な場合があります。これは、キーワードとメタデータの抽出に役立ちます。

  • プログラミングと開発: プログラミングとソフトウェア開発では、ソースコードと構成ファイルをプレーンテキストとして保存および共有する必要があります。

  • フォーマットのクリア: ドキュメントをプレーンテキストファイルに変換すると、すべてのテキストフォーマットがクリアされます。

制限

サポートされているドキュメントファイル形式

次の表は、サポートされているドキュメントファイル形式とその拡張子の一覧です。

形式

拡張子

Word

.doc および .docx

PPT

.ppt および .pptx

Excel

.xls および .xlsx

PDF

.pdf

TXT

.txt

ドキュメントサイズの制限

  • テキストを抽出するドキュメントのサイズは 20 MB を超えることはできません。

  • 抽出されたテキストはプレーンテキストファイルに保存されます。ファイルサイズは 100 KB を超えることはできません。

説明

テキストを抽出するドキュメントのサイズが制限を超える場合は、ドキュメント形式変換 機能を使用して、最初にドキュメントを TXT に変換できます。

前提条件

  • AccessKey ペアが作成され、取得されています。詳細については、「AccessKey ペアを作成する」をご参照ください。

  • Object Storage Service (OSS) が有効化され、バケットが作成され、ドキュメントオブジェクトがバケットにアップロードされています。詳細については、「オブジェクトをアップロードする」をご参照ください。

  • Intelligent Media Management (IMM) が有効化されています。詳細については、「IMM を有効化する」をご参照ください。

  • IMM コンソールでプロジェクトが作成されています。詳細については、「プロジェクトを作成する」をご参照ください。

    説明
    • CreateProject オペレーションを呼び出して、プロジェクトを作成することもできます。詳細については、「CreateProject」をご参照ください。

    • ListProjects オペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、「ListProjects」をご参照ください。

使用方法

ExtractDocumentText オペレーションを呼び出して、ドキュメントからテキストを抽出します。

説明

このオペレーションは、Excel などのスプレッドシート形式での出力をサポートしていません。

コンテンツ抽出の例

  • IMM プロジェクト名: test-project

  • ドキュメントの URI: oss://test-bucket/test-object.docx

リクエストの例

{
  "ProjectName": "test-project",
  "SourceURI": "oss://test-bucket/test-object.docx"
}

レスポンスの例

{
  "DocumentText": "Alibaba Cloud Intelligent Media Management provides advanced and intelligent media content management features",
  "RequestId": "5C04D1DD-8B54-5670-9868-C30D186E5E20"
}
説明

ドキュメントから次のテキストが抽出されます: Alibaba Cloud Intelligent Media Management provides advanced and intelligent media content management features。元のドキュメントの改行とスペースは、出力ファイルではエスケープ文字に変換されます。

サンプルコード

# -*- coding: utf-8 -*-
# このファイルは自動生成されています。編集しないでください。
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> imm20200930Client:
        """
        AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。
        @return: Client
        @throws Exception
        """
        # リークされたプロジェクトコードは、AccessKey ペアとアカウント内のすべてのリソースをセキュリティリスクにさらす可能性があります。
        # セキュリティ上の理由から、セキュリティトークンサービス (STS) によって提供される一時的なアクセス認証情報を使用することをお勧めします。詳細については、https://www.alibabacloud.com/help/ja/sdk/developer-reference/v2-manage-python-access-credentials をご覧ください。
        config = open_api_models.Config(
            # 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が構成されていることを確認してください。
            access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            # 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
            access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        # IMM エンドポイントを指定します。サポートされているリージョンの IMM エンドポイントの一覧については、https://api.alibabacloud.com/product/imm をご覧ください。
        config.endpoint = f'imm.cn-beijing.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        extract_document_text_request = imm_20200930_models.ExtractDocumentTextRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object.docx'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 必要に応じて、API オペレーションのレスポンスを出力するコードを記述します。
            client.extract_document_text_with_options(extract_document_text_request, runtime)
        except Exception as error:
            # 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージがコンソールに出力されます。
            # エラーメッセージを表示します。
            print(error.message)
            # トラブルシューティング用の URL を表示します。
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        extract_document_text_request = imm_20200930_models.ExtractDocumentTextRequest(
            project_name='test-project',
            source_uri='oss://test-bucket/test-object.docx'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 必要に応じて、API オペレーションのレスポンスを出力するコードを記述します。
            await client.extract_document_text_with_options_async(extract_document_text_request, runtime)
        except Exception as error:
            # 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージがコンソールに出力されます。
            # エラーメッセージを表示します。
            print(error.message)
            # トラブルシューティング用の URL を表示します。
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])