Чтение текста с помощью анализа изображений визуального распознавания Azure

Завершено

Чтобы использовать Azure AI Vision для анализа изображений, включая оптическое распознавание символов, необходимо подготовить ресурс Azure AI Vision в подписке Azure. Ресурс может быть следующим:

  • Ресурс нескольких служб ИИ Azure (развернутый в рамках центра и проекта Azure AI Foundry или как автономный ресурс).
  • Ресурс компьютерного зрения .

Чтобы использовать развернутый ресурс в приложении, необходимо подключиться к конечной точке с помощью проверки подлинности на основе ключей или проверки подлинности Идентификатора Microsoft Entra. Конечную точку для ресурса можно найти на портале Azure или при работе с проектом Azure AI Foundry на портале Azure AI Foundry. Конечная точка находится в виде URL-адреса и обычно выглядит примерно так:

https://<resource_name>.cognitiveservices.azure.com/

После установки подключения можно использовать функцию OCR, вызвав функцию ImageAnalysis (через REST API или эквивалентный метод SDK), передав URL-адрес изображения или двоичные данные, а также при необходимости указав язык, в который записывается текст (с значением по умолчанию для английского языка).

https://<endpoint>/computervision/imageanalysis:analyze?features=read&...

Чтобы использовать пакет AZURE AI Vision Python SDK для извлечения текста из образа, установите пакет azure-ai-vision-imageanalysis . Затем в коде используйте проверку подлинности на основе ключей или проверку подлинности Идентификатора Microsoft Entra для подключения объекта ImageAnalysisClient к ресурсу Azure AI Vision. Чтобы найти и прочитать текст на изображении, вызовите метод analyze (или analyze_from_url), указав перечисление VisualFeatures.READ.

from azure.ai.vision.imageanalysis import ImageAnalysisClient
from azure.ai.vision.imageanalysis.models import VisualFeatures
from azure.core.credentials import AzureKeyCredential

client = ImageAnalysisClient(
    endpoint="<YOUR_RESOURCE_ENDPOINT>",
    credential=AzureKeyCredential("<YOUR_AUTHORIZATION_KEY>")
)

result = client.analyze(
    image_data=<IMAGE_DATA_BYTES>, # Binary data from your image file
    visual_features=[VisualFeatures.READ],
    language="en",
)

Чтобы использовать пакет SDK для Azure AI Vision .NET для извлечения текста из образа, установите пакет Azure.AI.Vision.ImageAnalysis . Затем в коде используйте проверку подлинности на основе ключей или проверку подлинности Идентификатора Microsoft Entra для подключения объекта ImageAnalysisClient к ресурсу Azure AI Vision. Чтобы найти и прочитать текст в изображении, вызовите метод Анализа , указав перечисление VisualFeatures.Read .

using Azure.AI.Vision.ImageAnalysis;

ImageAnalysisClient client = new ImageAnalysisClient(
    "<YOUR_RESOURCE_ENDPOINT>",
    new AzureKeyCredential("<YOUR_AUTHORIZATION_KEY>"));

ImageAnalysisResult result = client.Analyze(
    <IMAGE_DATA_BYTES>, // Binary data from your image file
    VisualFeatures.Read,
    new ImageAnalysisOptions { Language = t"en" });

Результаты функции OCR чтения возвращаются синхронно либо в формате JSON, либо в языковом объекте аналогичной структуры. Эти результаты разбиты в блоках (с текущей службой только с одним блоком), а затем строки, а затем слова. Кроме того, текстовые значения включаются как на строке, так и уровнях слова, что упрощает чтение целых строк текста, если вам не нужно извлекать текст на уровне отдельного слова.

{
    "metadata":
    {
        "width": 500,
        "height": 430
    },
    "readResult":
    {
        "blocks":
        [
            {
                "lines":
                [
                    {
                        "text": "Hello World!",
                        "boundingPolygon":
                        [
                            {"x":251,"y":265},
                            {"x":673,"y":260},
                            {"x":674,"y":308},
                            {"x":252,"y":318}
                        ],
                        "words":
                        [
                            {
                                "text":"Hello",
                                "boundingPolygon":
                                [
                                    {"x":252,"y":267},
                                    {"x":307,"y":265},
                                    {"x":307,"y":318},
                                    {"x":253,"y":318}
                                ],
                            "confidence":0.996
                            },
                            {
                                "text":"World!",
                                "boundingPolygon":
                                [
                                    {"x":318,"y":264},
                                    {"x":386,"y":263},
                                    {"x":387,"y":316},
                                    {"x":319,"y":318}
                                ],
                                "confidence":0.99
                            }
                        ]
                    },
                ]
            }
        ]
    }
}