Document AI 일괄 제출이 작동하도록 노력했지만 몇 가지 어려움에 직면했습니다. 데이터 세트(27k 이미지)를 반복할 수 있다는 가정 하에 단일 파일 제출에 RawDocument를 사용했지만 더 적절한 기술인 것 같아서 일괄 처리를 선택했습니다.
코드를 실행하면 "모든 문서를 처리할 수 없습니다."라는 오류가 표시됩니다. 디버그 정보의 처음 몇 줄은 다음과 같습니다.
O:17:"GoogleRpcStatus":5:{ s:7:"*코드";i:3;s:10:"*메시지";s:32:"모든 문서를 처리할 수 없습니다."; s:26:"GoogleRpc상태 세부정보"; O:38:"GoogleProtobufInternalRepeatedField":4:{ s:49:"GoogleProtobufInternalRepeatedFieldcontainer";a:0:{}s:44:"GoogleProtobufInternalRepeatedFieldtype";i:11;s:45:"GoogleProtobufInternalRepeatedFieldklass";s:19:"GoogleProtobufAny";s:52:"GoogleProtobufInternalRepeatedFieldlegacy_k 아가씨"; s:19:"GoogleProtobufAny";}s:38:"GoogleProtobuf InternalMessagedesc";O:35:"GoogleProtobufInternalDescriptor":13:{s:46:"GoogleProtobufInternalDescriptorfull_name";s:17:"google.rpc.Status";s : 42:"GoogleProtobufInternalFieldDescriptorfield";a:3:{i:1;O:40:"GoogleProtobufInternalFieldDescriptor":14:{s:46:"GoogleProtobufInternalFieldDescriptorname ";s:4:"code";```
이 버그에 대한 지원에서는 오류 원인이 다음과 같다고 명시합니다.
gcsUriPrefix 및 gcsOutputConfig.gcsUri 매개변수는 gs://로 시작하고 백슬래시 문자(/)로 끝나야 합니다. 버킷 URI의 구성을 확인하세요.
gcsUriPrefix(사용해야 할까요? My Bucket > Max Batch Limits)를 사용하지 않지만 gcsOutputConfig.gcsUri는 해당 제한 내에 있습니다. 내가 제공하는 파일 목록에는 파일 이름(오른쪽 버킷을 가리킴)이 제공되므로 뒤에 백슬래시가 없어야 합니다.
상담 환영합니다
으으으으
일반적으로 오류
“无法处理所有文档”
는 입력 파일 또는 출력 버킷의 잘못된 구문으로 인해 발생합니다. 잘못된 경로는 여전히 클라우드 저장소에 대한 "유효한" 경로일 수 있지만 예상한 파일은 아닐 수 있습니다. (오류 메시지 페이지를 먼저 확인해 주시면 감사하겠습니다!)처리할 특정 문서 목록을 제공하려는 경우 개별 파일 목록 대신
gcsUriPrefix
。尽管根据您的代码,您似乎还是将 GCS 目录中的所有文件添加到BatchDocumentsInputConfig.gcs_documents
字段,因此尝试在中发送前缀是有意义的>BatchDocumentsInputConfig.gcs_uri_prefix
을 사용할 필요가 없습니다.참고: 단일 일괄 요청으로 전송할 수 있는 최대 파일 수(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());
해결해 드리겠습니다.