Azure Document Intelligence — RequestFailedException: «Ресурс не найден, состояние: 404 (не найдено)»

Я пытаюсь получить образец кода для использования Azure Document Intelligence с файлами, расположенными на внутреннем сервере, но получаю следующую ошибку:

Azure.RequestFailedException: 'Resource not found
Status: 404 (Not Found)
ErrorCode: 404

Content:
{"error":{"code":"404","message":"Resource not found"}}

Headers:
Content-Length: 55
Content-Type: application/json
Date: Thu, 08 Aug 2024 14:08:41 GMT

Я следую инструкциям, описанным в этой статьеНачните работу с Document Intelligence, но я настроил его так, чтобы использовать локальный файл вместо URI.

Это мой код:

string endpoint = "https://<MyServiceInstance>.cognitiveservices.azure.com/";
string apiKey = "<MyApiKey>";
string filename = "C:\\..\\MyFile.jpg";

var client = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(apiKey));

using (FileStream stream = new FileStream(filename, FileMode.Open))
{
    var result = AnalyzeDocumentAsync(client, stream).GetAwaiter().GetResult();
    Console.WriteLine(result);
}


static async Task<Operation<AnalyzeResult>> AnalyzeDocumentAsync(
    DocumentIntelligenceClient client, 
    Stream documentStream)
{
    string modelId = "MyModelId";

    var content = new AnalyzeDocumentContent()
    {
         Base64Source = BinaryData.FromStream(documentStream)
    };

    var operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, modelId, content);

    AnalyzeResult result = operation.Value;

    Console.WriteLine($"Document was analyzed with model with ID: {result.ModelId}");

    foreach (AnalyzedDocument document in result.Documents)
    {
        Console.WriteLine($"Document of type: {document.DocType}");

        foreach (KeyValuePair<string, DocumentField> fieldKvp in document.Fields)
        {
            string fieldName = fieldKvp.Key;
            DocumentField field = fieldKvp.Value;

            Console.WriteLine($"Field '{fieldName}': ");

            Console.WriteLine($"  Content: '{field.Content}'");
            Console.WriteLine($"  Confidence: '{field.Confidence}'");
        }
    }

    return operation;
}

Строка, вызывающая исключение:

var operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, modelId, content);

Я получаю настройки из Azure, как описано в статье:

Моя модель — это «Пользовательская модель», и я использую имя идентификатора, который использовал при обучении модели.

У кого-нибудь есть идеи, чего мне не хватает?

Используйте DocumentAnalysisClient — рекомендуемый класс для взаимодействия со службами Azure Form Recensor и Document Intelligence.

Suresh Chikkam 09.08.2024 14:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • DocumentIntelligenceClient — устаревшая конфигурация. Вместо него используйте DocumentAnalysisClient, который является рекомендуемым классом для взаимодействия со службами Распознавателя форм Azure и Document Intelligence.

Использование AnalyzeDocumentAsync с AnalyzeDocumentContent и Base64Source, что не является правильным подходом для текущих методов SDK.

  • Используйте AnalyzeDocumentAsync напрямую с Stream, что соответствует новейшим методам SDK.

Код:

using Azure;
using Azure.AI.FormRecognizer.DocumentAnalysis;
using System;
using System.IO;
using System.Threading.Tasks;

namespace ConsoleApp9
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string endpoint = "https://<YourServiceInstance>.cognitiveservices.azure.com/";
            string apiKey = "<YourApiKey>";
            string filename = "C:\\path\\to\\your\\file.pdf"; // Update with your file path
            string modelId = "<YourModelId>"; // Ensure this is the correct model ID

            var client = new DocumentAnalysisClient(new Uri(endpoint), new AzureKeyCredential(apiKey));

            using (FileStream stream = new FileStream(filename, FileMode.Open))
            {
                var result = await AnalyzeDocumentAsync(client, modelId, stream);
                Console.WriteLine($"Model ID used: {result.ModelId}");
            }
        }

        static async Task<AnalyzeResult> AnalyzeDocumentAsync(
            DocumentAnalysisClient client,
            string modelId,
            Stream documentStream)
        {
            try
            {
                // Analyze the document with the specified model
                AnalyzeDocumentOperation operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, modelId, documentStream);
                AnalyzeResult result = operation.Value;

                Console.WriteLine($"Document analyzed with model ID: {result.ModelId}");

                // Process the analyzed document
                foreach (AnalyzedDocument document in result.Documents)
                {
                    Console.WriteLine($"Document has the following fields:");

                    foreach (KeyValuePair<string, DocumentField> fieldKvp in document.Fields)
                    {
                        string fieldName = fieldKvp.Key;
                        DocumentField field = fieldKvp.Value;

                        Console.WriteLine($"Field '{fieldName}': ");
                        Console.WriteLine($"  Content: '{field.Content}'");
                        Console.WriteLine($"  Confidence: '{field.Confidence}'");
                    }
                }

                return result;
            }
            catch (RequestFailedException ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
                throw;
            }
        }
    }
}

Тест модели на портале для справки:

Результат:

Огромное спасибо за это Сурешу! Не могу поверить, что потратил на это так много времени, а вы говорите мне, что DocumentIntelligenceClient устарел, и я получил это от Microsoft в разделе «Начало работы». Очень расстраиваю, но рада, что, по крайней мере, могу двигаться дальше. Еще раз спасибо :).

Thierry 09.08.2024 17:14

Другие вопросы по теме

Как отобразить имя файла вместе со ссылкой в ​​веб-приложении Azure OpenAI
Триггер очереди Azure с настраиваемым именем подключения
Триггер нескольких репозиториев Azure. Почему он срабатывает несколько раз для одной и той же фиксации?
Невозможно воспроизвести приложение на основе холста после его импорта в другую среду/другой клиент (с использованием инструментов сборки Azure DevOps PP)
Azure Pipeline не удается извлечь подмодуль
Подключение к служебной шине из стандартного рабочего процесса приложения логики в сравнении с кодом
Правило оповещения Azure: прыгающее окно (запускать каждые n часов, запрашивать данные за последние n+m часов)
Получить за один вызов всех пользователей в группе, а также количество групп, к которым принадлежит каждый пользователь?
Есть ли способ включить пути к разделам пути к файлу в виде столбца в Azure Synapse SQL?
Как правильно зарегистрировать и запустить процессор служебной шины Azure в службе приложений Azure

Похожие вопросы

Триггер очереди Azure с настраиваемым именем подключения
Ошибка «Невозможно неявно преобразовать тип» только в том случае, если универсальный экземпляр создается с помощью интерфейса
Как воспроизвести поведение сопоставления шаблонов в операторе переключения C# 4? Функция «сопоставление шаблонов» недоступна в C# 4
Игнорировать всю строку, если преобразование не удалось
Есть ли способ получить сложный объект из строки запроса в ASP.NET Core 8?
Имитация менеджера пользователей с использованием модульного теста ASP.NET Core
EF Core — невозможно выполнить агрегатную функцию для выражения, содержащего агрегат или подзапрос
Почему обязательные поля не учитываются в моей схеме JSON?
Числа, встречающиеся дважды в одном и том же столбце и строке в программе доски судоку
Можно ли использовать выражение LINQ с подписью делегата для получения параметров?