PDF ファイルへの注釈 - Amazon Comprehend

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

PDF ファイルへの注釈

SageMaker Ground Truth でトレーニング PDFs注釈を付ける前に、以下の前提条件を満たしてください。

  • Python3.8.x のインストール。

  • jq のインストール

  • AWS CLI のインストール

    us-east-1 リージョンを使用している場合は、Python 環境に既にインストールされているため、 AWS CLI のインストールをスキップできます。この場合、 AWS Cloud9 で Python 3.8 を使用する仮想環境を作成します。 

  • AWS 認証情報を設定する

  • 注釈をサポートするプライベート SageMaker Ground Truth ワークフォースを作成する

    選択したワークチーム名は、インストール時に使用するので、新しいプライベートワークフォースに必ず記録してください。

環境のセットアップ

  1. Windows を使用している場合は Cygwin をインストールし、Linux または Mac の場合は、この手順をスキップします。

  2. から注釈アーティファクトをダウンロードします GitHub。ファイル を解凍します。

  3. ターミナルウィンドウから、解凍したフォルダ (amazon-comprehend-semi-structured-documents-annotation-tools-main) に移動します。

  4. このフォルダーには、依存関係のインストール、Python virtualenv の設定、および必要なリソースのデプロイを行うために実行する Makefiles オプションが含まれています。readme ファイルを確認して選択してください。

  5. 推奨オプションでは、単一のコマンドを使用してすべての依存関係を virtualenv にインストールし、テンプレートから AWS CloudFormation スタックを構築し、インタラクティブガイダンス AWS アカウント を使用してスタックを にデプロイします。次のコマンドを実行します。

    make ready-and-deploy-guided

    このコマンドは一連の設定オプションを表します。  AWS リージョン が正しいことを確認してください。他のすべてのフィールドで、デフォルト値をそのまま使用するか、カスタム値を入力できます。 AWS CloudFormation スタック名を変更する場合は、次のステップで必要に応じて書き留めます。

    AWS CloudFormation 設定オプションを示すターミナルセッション。

    CloudFormation スタックは、注釈ツールに必要な AWS Lambdas AWS IAM ロール、および AWS S3 バケットを作成および管理します。

    これらの各リソースは、 CloudFormation コンソールのスタックの詳細ページで確認できます。

  6. コマンドは、デプロイを開始するように促します。 は、指定されたリージョン内のすべてのリソース CloudFormation を作成します。

    デプロイされた AWS CloudFormation 設定を示すターミナルセッション。

    CloudFormation スタックのステータスが create-complete に移行すると、リソースは使用できる状態になります。

PDF を S3 バケットにアップロードする

セットアップセクションで、comprehend-semi-structured-documents-${AWS::Region}-${AWS::AccountId} という名前の S3 バケットを作成する CloudFormation スタックをデプロイしました。ソース PDF ドキュメントをこのバケットにアップロードします。  

注記

このバケットには、ラベル付けジョブに必要なデータが含まれています。  Lambda 実行ロールポリシーは、このバケットへのアクセスを Lambda 関数に付与します。   

S3 バケット名は、CloudFormation スタックの詳細SemiStructuredDocumentsS3Bucket」キーを使用して確認できます。

  1. S3 バケットに新規フォルダを作成します。この新しいフォルダに「src」という名前を付けます。

  2. PDF ソースファイルを 「src」フォルダに追加します。次の手順では、これらのファイルに注釈を付けて、レコグナイザーを訓練します。

  3. (オプション) ソースドキュメントをローカルディレクトリから S3 バケットにアップロードするために使用できる AWS CLI の例を次に示します。

    aws s3 cp --recursive local-path-to-your-source-docs s3://deploy-guided/src/

    または、リージョンとアカウント ID を使用します:

    aws s3 cp --recursive local-path-to-your-source-docs s3://deploy-guided-Region-AccountID/src/

  4. これで、 SageMaker Ground Truth のプライベートワークフォースがあり、ソースファイルを S3 バケットの deploy-guided/src/ にアップロードしました。注釈付けを開始する準備が整いました。

注釈ジョブの作成

bin ディレクトリの comprehend-ssie-annotation-tool-cli.py スクリプトは、 SageMaker Ground Truth ラベル付けジョブの作成を効率化するシンプルなラッパーコマンドです。Python スクリプトは S3 バケットからソースドキュメントを読み取り、単一ページのマニフェストファイルを作成します。これは、1 行あたり 1 つのソースドキュメントが対応します。  次に、スクリプトはマニフェストファイルを入力として必要とするラベル付けジョブを作成します。 

Python スクリプトは、「セットアップ」セクションで設定した S3 環境のセットアップバケットと CloudFormation スタックを使用します。このスクリプトに必要な入力パラメータには以下が含まれます。

  • input-s3-path: S3 バケットにアップロードしたソースドキュメントへの S3 URI。例: s3://deploy-guided/src/。このパスにリージョンとアカウント ID を追加することもできます。  例: s3://deploy-guided-Region-AccountID/src/

  • cfn-name: CloudFormation スタック名。スタック名にデフォルト値を使用した場合、CFN 名は sam-app になります。

  • work-team-name: SageMaker Ground Truth でプライベートワークフォースを構築したときに作成したワークフォース名。

  • job-name-prefix: SageMaker Ground Truth ラベル付けジョブのプレフィックス。このフィールドには 29 文字の制限があることに注意してください。この値にはタイムスタンプが付加されます。  例: my-job-name-20210902T232116

  • entity-types: ラベル付けジョブ中に使用する必要があるエンティティ。カンマで区切られています。このリストには、トレーニングデータセットで注釈を付けたいエンティティがすべて含まれている必要があります。Ground Truth のラベル付けジョブでは、注釈者が PDF ドキュメント内のコンテンツにラベル付けできるように、これらのエンティティのみが表示されます。

スクリプトがサポートするその他の引数を表示するには、-h オプションを使用してヘルプコンテンツを表示します。

  • 前述のリストで説明したように、入力パラメータを指定して次のスクリプトを実行します。

    python bin/comprehend-ssie-annotation-tool-cli.py \ --input-s3-path s3://deploy-guided-Region-AccountID/src/ \ --cfn-name sam-app \ --work-team-name my-work-team-name \ --region us-east-1 \ --job-name-prefix my-job-name-20210902T232116 \ --entity-types "EntityA, EntityB, EntityC" \ --annotator-metadata "key=info,value=sample,key=Due Date,value=12/12/2021"

    スクリプトは以下の出力を生成します。

    Downloaded files to temp local directory /tmp/a1dc0c47-0f8c-42eb-9033-74a988ccc5aa Deleted downloaded temp files from /tmp/a1dc0c47-0f8c-42eb-9033-74a988ccc5aa Uploaded input manifest file to s3://comprehend-semi-structured-documents-us-west-2-123456789012/input-manifest/my-job-name-20220203-labeling-job-20220203T183118.manifest Uploaded schema file to s3://comprehend-semi-structured-documents-us-west-2-123456789012/comprehend-semi-structured-docs-ui-template/my-job-name-20220203-labeling-job-20220203T183118/ui-template/schema.json Uploaded template UI to s3://comprehend-semi-structured-documents-us-west-2-123456789012/comprehend-semi-structured-docs-ui-template/my-job-name-20220203-labeling-job-20220203T183118/ui-template/template-2021-04-15.liquid Sagemaker GroundTruth Labeling Job submitted: arn:aws:sagemaker:us-west-2:123456789012:labeling-job/my-job-name-20220203-labeling-job-20220203t183118 (amazon-comprehend-semi-structured-documents-annotation-tools-main) user@3c063014d632 amazon-comprehend-semi-structured-documents-annotation-tools-main %

SageMaker Ground Truth での注釈付け

必要なリソースを設定し、ラベル付けジョブを作成したら、ラベル付けポータルにログインして PDF に注釈を付けることができます。 

  1. Chrome または Firefox ウェブブラウザSageMaker を使用してコンソールにログインします。

  2. [ラベル付けワークフォース] を選択し、[プライベート] を選択します。

  3. [プライベートワークフォースの概要] で、プライベートワークフォースで作成したラベリングポータルのサインイン URL を選択します。適切な認証情報を使用してサインインします。

    リストにジョブが表示されなくても心配はいりません。注釈用にアップロードしたファイルの数によっては、更新に時間がかかる場合があります。

  4. タスクを選択し、右上で [作業開始] を選択して注釈画面を開きます。

    注釈画面でいずれかのドキュメントが開き、その上に、設定時に指定したエンティティタイプが表示されます。  エンティティタイプの右側には、ドキュメント間を移動できる矢印があります。

    Amazon Comprehend 注釈画面。

    開いているドキュメントに注釈を付けます。また、各ドキュメントの注釈を削除、元に戻す、または自動タグ付けすることもできます。これらのオプションは注釈ツールの右側のパネルにあります。 

    Amazon Comprehend 注釈の右側のパネルで使用可能なオプション。

    自動タグを使用するには、エンティティのいずれかのインスタンスに注釈を付けます。その特定の単語以外のすべてのインスタンスには、そのエンティティタイプで自動的に注釈が付けられます。

    完了したら、右下の [送信] を選択し、ナビゲーション矢印を使用して次のドキュメントに移動します。すべての PDF に注釈が付けられるまで、これを繰り返します。   

すべてのトレーニングドキュメントに注釈を付けると、次の場所にある Amazon S3 バケットに JSON 形式の注釈が表示されます。 

/output/your labeling job name/annotations/

出力フォルダには、トレーニングドキュメント内のすべての注釈を一覧表示する出力マニフェストファイルも含まれています。  出力マニフェストファイルは次の場所にあります。

/output/your labeling job name/manifests/