Я пытаюсь создать PoC для Google Cloud DocumentAI V1, используя этот
Я использую DocAI для преобразования файлов .pdf в текст с помощью DocAI BatchProcessing. Я создал консольное приложение с приведенным ниже кодом, которое отлично работает с одним документом. Но когда я пытаюсь обработать несколько pdf-документов, возникает исключение,
Grpc.Core.RpcException: 'Статус (StatusCode = "DeadlineExceeded",
Detail="Срок исчерпан",
DebugException="Grpc.Core.Internal.CoreErrorDetailException:
{"created":"@1650465671.748000000","description":"Крайний срок
Превышено","файл":"......\src\core\ext\filters\deadline\deadline_filter.cc","file_line":81,"grpc_status":4}")'
общедоступный статический класс DocAIBatchProcess
{
const string projectId = "ID ПРОЕКТА";
const string processingId = "ИД ПРОЦЕССА";
const string location = "нас";
const string gcsInputBucketName = "BUCKETNAME";
const string gcsOutputBucketName = "gs://BUCKETNAME/OUTPUTFOLDER/";
константная строка gcsOutputUriPrefix = "ПРЕФИКС";
префикс постоянной строки = "INPUTFOLDER/";
константный разделитель строк = "/";
public static bool BatchProcessDocument (это IEnumerable<GCPStorage.Object> storageObjects)
{
Console.WriteLine("\n");
Console.WriteLine("Начата обработка документов...");
Console.WriteLine("---------------------------------------------");
DocumentProcessorServiceClient documentProcessorServiceClient = DocumentProcessorServiceClient.Create();
string name = $"projects/{projectId}/locations/{location}/processors/{processorId}";
GcsDocument gcsDocument = null;
GcsDocuments gcsDocuments = new GcsDocuments();
var storage = StorageClient.Create();
foreach (var storageObject в storageObjects)
{
если (storageObject.Name != префикс)
{
gcsDocument = новый GcsDocument()
{
GcsUri = $"gs://gcsInputBucketName/{storageObject.Name}",
MimeType = "приложение/pdf"
};
gcsDocuments.Documents.Add(gcsDocument);
}
}
// Входная конфигурация
BatchDocumentsInputConfig inputConfig = new BatchDocumentsInputConfig();
inputConfig.GcsDocuments = gcsDocuments;
//Выходная конфигурация
var fullGcsPath = $"gs://{gcsOutputBucketName}/{gcsOutputUriPrefix}/";
GcsOutputConfig gcsOutputConfig = новый GcsOutputConfig();
gcsOutputConfig.GcsUri = gcsOutputBucketName;
DocumentOutputConfig documentOutputConfig = new DocumentOutputConfig();
documentOutputConfig.GcsOutputConfig = gcsOutputConfig;
// Настройте запрос пакетной обработки.
BatchProcessRequest batchProcessRequest = new BatchProcessRequest();
batchProcessRequest.Name = имя;
batchProcessRequest.InputDocuments = inputConfig;
batchProcessRequest.DocumentOutputConfig = documentOutputConfig;
// Делаем запрос
Operation<BatchProcessResponse, BatchProcessMetadata> response = documentProcessorServiceClient.BatchProcessDocuments(batchProcessRequest);
// Опрашиваем, пока возвращаемая длительная операция не будет завершена
Operation<BatchProcessResponse, BatchProcessMetadata> completeResponse = response.PollUntilCompleted();
// Получаем результат операции
Результат BatchProcessResponse = завершенныйОтвет.Результат;
}
}
DeadlineExceeded : «Крайний срок истек до завершения операции».
Я попытался изучить документацию, но не смог найти ничего конкретного. Если кто-то знает о том, почему это происходит? Будем очень благодарны любой помощи.