Odczytywanie tekstu za pomocą usługi Azure Vision Image Analysis

Ukończone

Aby użyć usługi Azure Vision do analizy obrazów, w tym optycznego rozpoznawania znaków, musisz aprowizować zasób usługi Azure Vision w subskrypcji platformy Azure. Zasób może być:

  • Zasób narzędzi Foundry ( wdrożony jako część centrum i projektu Microsoft Foundry lub jako zasób autonomiczny).
  • Zasób Azure Vision.

Aby użyć wdrożonego zasobu w aplikacji, musisz nawiązać połączenie z punktem końcowym przy użyciu uwierzytelniania opartego na kluczach lub uwierzytelniania identyfikatora Entra firmy Microsoft. Punkt końcowy zasobu można znaleźć w witrynie Azure Portal lub jeśli pracujesz w projekcie Microsoft Foundry, w portalu Microsoft Foundry. Punkt końcowy ma postać adresu URL i zazwyczaj wygląda mniej więcej tak:

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

Po nawiązaniu połączenia możesz użyć funkcji OCR, wywołując funkcję ImageAnalysis (za pośrednictwem interfejsu API REST lub równoważnej metody zestawu SDK), przekazując adres URL obrazu lub dane binarne, a opcjonalnie określając język, w którym tekst jest napisany (z wartością domyślną en dla języka angielskiego).

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

Aby wyodrębnić tekst z obrazu przy użyciu zestawu SDK języka Python usługi Azure Vision, zainstaluj pakiet azure-ai-vision-imageanalysis . Następnie w kodzie użyj uwierzytelniania opartego na kluczach lub uwierzytelniania identyfikatora Entra firmy Microsoft, aby połączyć obiekt ImageAnalysisClient z zasobem usługi Azure Vision. Aby znaleźć i odczytać tekst na obrazie, wywołaj metodę analyze (lub analyze_from_url), określając wyliczenie 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",
)

Aby użyć zestawu SDK platformy .NET usługi Azure Vision do wyodrębnienia tekstu z obrazu, zainstaluj pakiet Azure.AI.Vision.ImageAnalysis . Następnie w kodzie użyj uwierzytelniania opartego na kluczach lub uwierzytelniania identyfikatora Entra firmy Microsoft, aby połączyć obiekt ImageAnalysisClient z zasobem usługi Azure Vision. Aby znaleźć i odczytać tekst na obrazie, wywołaj metodę Analyze , określając wyliczenie 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" });

Wyniki funkcji Read OCR są zwracane synchronicznie jako kod JSON lub obiekt specyficzny dla języka podobnej struktury. Te wyniki są podzielone na bloki (z bieżącą usługą tylko przy użyciu jednego bloku), a następnie wiersze, a następnie wyrazy. Ponadto wartości tekstowe są uwzględniane zarówno w wierszu , jak i na poziomach wyrazów, co ułatwia odczytywanie całych wierszy tekstu, jeśli nie trzeba wyodrębniać tekstu na poziomie wyrazów.

{
    "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
                            }
                        ]
                    },
                ]
            }
        ]
    }
}