Document AI のバッチ送信を機能させようとしていますが、いくつかの困難があります。データセット (27,000 枚の画像) を反復処理できると想定して、単一ファイルの送信には RawDocument を使用しましたが、より適切な手法であると思われたバッチ処理を選択しました。
コードを実行すると、「すべてのドキュメントを処理できません」というエラーが表示されます。デバッグ情報の最初の数行は次のとおりです:
O:17:"Google\Rpc\ステータス":5:{ s:7:"*コード";i:3;s:10:"*メッセージ";s:32:"すべてのドキュメントを処理できません。"; s:26:"Google\Rpc\ステータスの詳細"; O:38:"Google\Protobuf\Internal\RepeatedField":4:{ s:49:"Google\Protobuf\Internal\RepeatedFieldcontainer";a:0:{}s:44:"Google\Protobuf\Internal\RepeatedFieldtype";i:11;s:45:"Google\Protobuf\Internal\RepeatedFieldklass ";s:19:"Google\Protobuf\Any";s:52:"Google\Protobuf\Internal\RepeatedFieldlegacy_klass";s:19:"Google\Protobuf\Any";}s:38:"Google\Protobuf\ Internal\Messagedesc";O:35:"Google\Protobuf\Internal\Descriptor":13:{s:46:"Google\Protobuf\Internal\Descriptorfull_name";s:17:"google.rpc.Status";s: 42:"Google\Protobuf\Internal\Descriptorfield";a:3:{i:1;O:40:"Google\Protobuf\Internal\FieldDescriptor":14:{s:46:"Google\Protobuf\Internal\FieldDescriptorname ";s:4:"コード";```
このエラーのサポートには、エラーの原因は次のとおりであると記載されています:
gcsUriPrefix および gcsOutputConfig.gcsUri パラメーターは、gs:// で始まりバックスラッシュ文字 (/) で終わる必要があります。バケット URI の構成を確認してください。
gcsUriPrefix を使用していません (使用する必要がありますか? [バケット] > [最大バッチ制限])、gcsOutputConfig.gcsUri はこれらの制限内にあります。私が提供するファイル リストにはファイル名 (右のバケットを指す) が付けられているため、末尾にバックスラッシュがあってはなりません。
ご相談へようこそ
ああああ
通常、エラー
「すべてのドキュメントを処理できません」
は、入力ファイルまたは出力バケットの構文が間違っていることが原因で発生します。不正なパスはクラウド ストレージへの「有効な」パスである可能性がありますが、期待したファイルではありません。 (最初にエラー メッセージ ページをご確認いただきありがとうございます!)処理するドキュメントの特定のリストを指定する場合は、
gcsUriPrefix
を使用する必要はありません。コードに基づくと、GCS ディレクトリ内のすべてのファイルをBatchDocumentsInputConfig.gcs_documents
フィールドに追加しているように見えますが、>BatchDocumentsInputConfig.gcs_uri_prefix でプレフィックスを送信しようとするのは理にかなっています。
代わりに、個々のファイルのリストではありません。注: 1 つのバッチ リクエストで送信できるファイルの最大数 (1000) と、特定のプロセッサには独自のページ制限があります。
https://cloud.google.com/document-ai/quotas#content_limits
この制限に達しないように、ファイルを複数のバッチ リクエストに分割してみることができます。 Document AI Toolbox Python SDK にはこの目的のための組み込み関数がありますが、ユースケースに基づいてこの関数を PHP で再実装してみることができます。 https://github.com/googleapis/python-documentai-toolbox/blob/ba354d8af85cbea0ad0cd2501e041f21e9e5d765/google/cloud/documentai_toolbox/utilities/gcs_utilities.py#L213
これは、明確な PEBKAC 倍音を持つ ID-10-T のバグであることが判明しました。
$object->name() はパスの一部としてバケット名を返しません。
$doc->setGcsUri('gs://'.$object->name());
を$doc->setGcsUri('gs://'. $) に変更します。 bucketName.'/'.$object->name());
で問題は解決します。