Document AI で発生するいくつかのエラーを解決する方法をご紹介します。このトピックでは、エラー メッセージによって解決方法が簡単にわかるエラーではなく、解決に際して、より多くの手順が必要となるエラーを取り上げます。
エラー処理の推奨事項については、Cloud API のドキュメントをご覧ください。
権限
解決するには、エラー メッセージに記載されている手順をいくつか実行する必要があります。
アプリケーションのデフォルト認証情報が利用できない
このメッセージが表示された場合の対処方法を示します。
The Application Default Credentials are not available. They are available if running in Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
Document AI では、認証にアプリケーションのデフォルト認証情報を使用します。
プロジェクトのサービス アカウントを用意し、そのサービス アカウントのキー(JSON ファイル)を開発環境にダウンロードして、その JSON ファイルの場所を GOOGLE_APPLICATION_CREDENTIALS という名前の環境変数に設定する必要があります。
さらに、GOOGLE_APPLICATION_CREDENTIALS 環境変数は、Document AI API を呼び出すコンテキスト内で使用可能でなければなりません。たとえば、ターミナル セッション内で変数を設定し、IDE のデバッガでコードを実行した場合、コードの実行コンテキストはその変数にアクセスできない可能性があります。そのような状況では、適切な認証がないために Document AI へのリクエストが失敗する場合があります。
GOOGLE_APPLICATION_CREDENTIALS 環境変数の設定方法の詳細については、Document AI のクイックスタート、またはアプリケーションのデフォルト認証情報の使用に関するドキュメントをご覧ください。
アクセスが拒否されました
このメッセージが表示された場合の対処方法を示します。
ERROR: (gcloud.auth.application-default.print-access-token) File
(pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"status": "PERMISSION_DENIED"
}
}
GOOGLE_APPLICATION_CREDENTIALS 環境変数に設定されている場所に有効なサービス アカウント キーの JSON ファイルがあること、変数が正しい場所を指していることを確認します。
このエラーを診断するには、Document AI API を呼び出そうとしているフォルダからサービス アカウント キー ファイルを開いてみてください。
cat $GOOGLE_APPLICATION_CREDENTIALS
Forbidden: 403 POST API has not been used or is disabled
このメッセージが表示された場合の対処方法を示します。
Forbidden: 403 POST Document AI API has not been used in project # before or it is disabled. Enable it by visiting [url], then retry. If you enabled this API recently, wait a few minutes for the action to propagate and retry.
- エラー メッセージで指定されたリンクにアクセスし、Document AI API を有効にします。数分待ってから、再試行します。
- 有効なサービス アカウント キー JSON ファイルが
GOOGLE_APPLICATION_CREDENTIALS環境変数に格納されていることを確認します。このエラーを診断するには、Document AI API を呼び出そうとしているフォルダからサービス アカウント キー ファイルを開いてみてください。cat $GOOGLE_APPLICATION_CREDENTIALS
最終出力の書き込み中にエラーが発生しました
バッチ処理リクエストの結果を受信したときに、次のようなメッセージが表示された場合:
{
"name": "projects/project-name/operations/operation-id",
"metadata": {
"@type": "type.googleapis.com/google.cloud.document.v1beta1.OperationMetadata",
"state": "SUCCEEDED",
"createTime": "2019-09-19T02:02:15.885267760Z",
"updateTime": "2019-09-19T02:02:31.896425001Z"
},
"done": true,
"error": {
"code": 5,
"message": "Error writing final output to: gs://bucket-name/filename.json"
}
}
サービス アカウントに、Cloud Storage バケットにオブジェクトを作成するための適切な権限がない可能性があります。クイックスタートの説明に従って、サービス アカウントに正しい権限が割り当てられていることを確認してください。
Cloud Storage バケットの名前のスペルが間違っている可能性もあります。アクセスしようとしているバケットが存在することを確認します。
P4SA が Cloud Storage にアクセスできない
Document AI のプロダクトごとのサービス アカウント(P4SA)に、一部の Cloud Storage リソースにアクセスする権限がない場合。
message: "Cloud DocumentAI P4SA doesn't have access to this Cloud Storage resource:"
サービス アカウントが Cloud Storage にオブジェクトを作成できない
Document AI のプロダクトごとのサービス アカウント(P4SA)に、Cloud Storage でオブジェクトを作成する権限がない場合。
message: "Service account service-123@gcp-sa-prod-dai-core.iam.gserviceaccount.com
does not have permission storage.objects.create to create
Google Cloud Storage object in bucket gs://foo."
Document AI サービス アカウントに、Cloud Storage バケットにオブジェクトを作成するための適切な権限がない可能性があります。プロジェクト間のファイル アクセスの設定で説明されているように、Document AI サービス アカウントに正しい権限が割り当てられていることを確認してください。
Cloud Storage バケットの名前のスペルが間違っている可能性もあります。アクセスしようとしているバケットが存在することを確認します。
呼び出し元が Cloud Storage のオブジェクトを取得できない
Document AI API の呼び出し元に Cloud Storage 内のオブジェクトを取得する権限がない場合。
message: "The caller does not have permission storage.objects.get to get Google
Cloud Storage objects in bucket gs://foo."
API の呼び出し元に、Cloud Storage バケット内のオブジェクトを取得するための適切な権限がない可能性があります。呼び出し元に適切な権限が割り当てられていることを確認してください。
Cloud Storage バケットの名前のスペルが間違っている可能性もあります。アクセスしようとしているバケットが存在することを確認します。
無効な引数
解決するには、エラー メッセージに記載されている手順をいくつか実行する必要があります。
API バージョンがサポートされていない
オペレーションをサポートしていない API バージョンにリクエストが送信された場合。
message: "The requested operation is unsupported for the API version."
サポートされていないプロセッサ タイプ
指定されたプロセッサタイプをサポートしていない API メソッドにリクエストが送信された場合。
message: "The requested operation is unsupported for the processor type: ${PROCESSOR_TYPE}."
不正なリクエスト
API リクエストが作成されたが、リクエスト フィールドに 1 つ以上の違反がある場合。各違反は、google.rpc.BadRequest の詳細に field_violations としてキャプチャされます。
message: "Request contains an invalid argument."
details {
[type.googleapis.com/google.rpc.BadRequest] {
field_violations { field: "foo" description: "bar" }
}
}
すべてのドキュメントのバッチ処理に失敗しました
バッチ処理リクエスト内のすべてのドキュメントの処理に失敗した場合。
message: "Failed to process all documents."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "FAILED_TO_PROCESS_ALL_DOCUMENTS"
domain: "documentai.googleapis.com"
}
}
ドキュメントはありません
Cloud Storage URI でドキュメントをインポートする場合など、ドキュメントが必要または想定されているのに、ドキュメントが提供されていない場合。
message: "No valid documents found in ${training|test} directory. Ensure files are in a supported MIME type. For details, see https://cloud.google.com/document-ai/docs/file-types."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "NO_DOCUMENTS"
domain: "documentai.googleapis.com"
}
}
gcsUriPrefix パラメータと gcsOutputConfig.gcsUri パラメータは、gs:// で始まり、末尾にバックスラッシュ文字(/)が付いている必要があります。バケット URI の構成を確認してください。
例: gs://bucket/directory/
トレーニングはサポートされていません
トレーニングをサポートしていないプロセッサ タイプでトレイン プロセッサ バージョンのリクエストが行われた場合。
message: "Training is not supported on processor type: ${DOCUMENT_TYPE}_PROCESSOR."
ドキュメントが選択されていません
ドキュメントが想定されているが、データセットで選択されていない場合(データラベル付けジョブの作成時など)。
message: No documents selected. Please select at least one document."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "NO_DOCUMENTS_SELECTED"
domain: "documentai.googleapis.com"
}
}
ドキュメント タイプが見つかりません
ドキュメントのクラス(ライセンス、パスポート、請求書など)が、プロセッサ タイプに必要な分類と一致しない場合。たとえば、W2 パーサーの分類ステップで請求書の要素が見つからない場合などです。
Google Cloud コンソールで Couldn't preview the document: Unable to find a document of type: 'foo' と表示されることもあります。このエラー メッセージは、以前のプロセッサに適用されます。
message: "Unable to find a document of type: 'foo'"
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "DOCUMENT_OF_TYPE_NOT_FOUND"
domain: "documentai.googleapis.com"
}
}
ドキュメントのサイズの上限を超えています
データセットのインポート中または予測の実行中に、ドキュメントのファイル サイズの上限を超えた場合。
message: "Document size (2) exceeds limit: 1 (bytes)."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "DOCUMENT_SIZE_LIMIT_EXCEEDED"
domain: "documentai.googleapis.com"
metadata { key: "limit" value: "1" }
metadata { key: "size" value: "2" }
}
}
ドキュメントの上限を超えています
ドキュメント数の上限を超えた場合。
message: "Document count exceed the limit: 5 got 6"
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "DOCUMENT_LIMIT_EXCEEDED"
domain: "documentai.googleapis.com"
metadata { key: "document_limit" value: "5" }
metadata { key: "documents" value: "6" }
}
}
サポートされていない MIME タイプ
サポートされていない MIME タイプが指定された場合。データセットをインポートするときや予測呼び出しを行うときに、システムはファイル形式(MIME タイプ)を検証します。サポートされているファイル(レイアウト パーサーの場合)に移動して、使用可能なファイル形式を確認します。ファイル形式がサポートされていない場合は、次のエラー メッセージが表示されます。
message: "INVALID_ARGUMENT: Unsupported MIME type: 'foo'."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "UNSUPPORTED_MIME_TYPE"
domain: "documentai.googleapis.com"
metadata { key: "mime_type" value: "foo" }
}
}
ページなし
ページのない書類が提出されたが、1 ページ以上が必要な場合。
message: "No pages were found in the document."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "NO_PAGES"
domain: "documentai.googleapis.com"
}
}
負のページ番号
ドキュメントのページ番号の 1 つに負の値が記載されている場合。
message: "Page number cannot be negative."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "NEGATIVE_PAGE_NUMBER"
domain: "documentai.googleapis.com"
}
}
ページ番号が重複している
ドキュメントに同じページ番号が 1 回以上記載されている場合。
message: "Duplicate page number detected (page numbers to indices): [{1, [1, 2]}, {4, [4, 5]}]."
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "DUPLICATE_PAGE_NUMBERS"
domain: "documentai.googleapis.com"
metadata {
key: "page_number_to_indices"
value: "[{1, [1, 2]}, {4, [4, 5]}]"
}
}
}
ページ数の上限を超えました
ドキュメントの合計ページ数の上限を超えた場合。このエラーは、データセット内のドキュメントのページ数が多すぎて、プロセッサの制限を超えている場合に、データセットのインポートまたは予測中に発生します。
message: "Document pages exceed the limit: 5 got 6"
details {
[type.googleapis.com/google.rpc.ErrorInfo] {
reason: "PAGE_LIMIT_EXCEEDED"
domain: "documentai.googleapis.com"
metadata { key: "page_limit" value: "5" }
metadata { key: "pages" value: "6" }
}
}
画像なしモードでページの上限を超えました
このエラーは、データセット内のドキュメントのページ数が多すぎて、プロセッサの制限を超えている場合に、データセットのインポートまたは予測中に発生します。プロジェクトを許可リストに追加して画像なしモードを有効にすると、ページの上限が 30 に引き上げられます。