1. Guia Pràctica: Azure AI Vision (Capa Gratuïta)
1.1. Introducció
Azure AI Vision és un servei de visió per computadora que permet analitzar imatges i vídeos mitjançant models d'intel·ligència artificial preentrenats. No cal entrenar cap model propi per começar.
1.1.1. Límits de la capa gratuïta (F0)
- 5.000 transaccions/mes gratuïtes
- Sense cost de desplegament
- Accessible des del portal d'Azure
1.2. Prerequisits
- Compte d'Azure actiu (gratuït a azure.microsoft.com)
- Python 3.8 o superior instal·lat
- Connexió a internet
1.3. Pas 1: Crear el recurs al portal d'Azure
- Ves a portal.azure.com
- Cerca "Computer Vision" o "Azure AI Vision" a la barra de cerca
- Fes clic a "Crear"
- Omple els camps:
- Subscripció: la teva subscripció activa
- Grup de recursos: crea'n un de nou (p.ex.
rg-ia-practica)
- Regió:
West Europe o East US
- Nom: un nom únic (p.ex.
vision-practica-2024)
- Nivell de preus: F0 (Gratuït)
- Fes clic a "Revisar i crear" → "Crear"
Una vegada creat, ves al recurs i copia:
- Endpoint (p.ex. https://vision-practica-2024.cognitiveservices.azure.com/)
- Clau (a "Claus i punt de connexió")
1.4. Pas 2: Instal·lar les dependències
| Bash |
|---|
| pip install azure-ai-vision-imageanalysis pillow requests
|
1.5. Pas 3: Anàlisi d'imatges bàsica
Crea un fitxer vision_basic.py:
| Python |
|---|
| from azure.ai.vision.imageanalysis import ImageAnalysisClient
from azure.ai.vision.imageanalysis.models import VisualFeatures
from azure.core.credentials import AzureKeyCredential
# Configura les teves credencials
ENDPOINT = "https://<el-teu-endpoint>.cognitiveservices.azure.com/"
KEY = "<la-teva-clau>"
# Crear el client
client = ImageAnalysisClient(
endpoint=ENDPOINT,
credential=AzureKeyCredential(KEY)
)
# URL d'una imatge pública per analitzar
image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/280px-PNG_transparency_demonstration_1.png"
# Analitzar la imatge
result = client.analyze_from_url(
image_url=image_url,
visual_features=[
VisualFeatures.CAPTION,
VisualFeatures.TAGS,
VisualFeatures.OBJECTS
],
language="en" # CAPTION i OBJECTS només suporten "en"; per TAGS sol es pot usar "ca", "es", etc.
)
# Mostrar resultats
print("=== DESCRIPCIÓ ===")
if result.caption:
print(f"Descripció: {result.caption.text}")
print(f"Confiança: {result.caption.confidence:.2f}")
print("\n=== ETIQUETES ===")
if result.tags:
for tag in result.tags.list:
print(f" - {tag.name} (confiança: {tag.confidence:.2f})")
print("\n=== OBJECTES DETECTATS ===")
if result.objects:
for obj in result.objects.list:
print(f" - {obj.tags[0].name} a {obj.bounding_box}")
|
Executa'l:
Crea un fitxer vision_ocr.py:
| Python |
|---|
| from azure.ai.vision.imageanalysis import ImageAnalysisClient
from azure.ai.vision.imageanalysis.models import VisualFeatures
from azure.core.credentials import AzureKeyCredential
ENDPOINT = "https://<el-teu-endpoint>.cognitiveservices.azure.com/"
KEY = "<la-teva-clau>"
client = ImageAnalysisClient(
endpoint=ENDPOINT,
credential=AzureKeyCredential(KEY)
)
# Imatge amb text (pots usar una captura de pantalla o document escanejat)
image_url = "https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png"
result = client.analyze_from_url(
image_url=image_url,
visual_features=[VisualFeatures.READ]
)
print("=== TEXT EXTRET (OCR) ===")
if result.read:
for block in result.read.blocks:
for line in block.lines:
print(line.text)
|
1.7. Exercicis proposats
- Nivell bàsic: Analitza 3 imatges diferents (paisatge, persona, document) i compara les etiquetes obtingudes.
- Nivell mitjà: Crea un script que, donada una carpeta d'imatges local, generi un fitxer CSV amb les descripcions i etiquetes de cada imatge.
- Nivell avançat: Construeix una petita aplicació web amb Flask que permeti pujar una imatge i mostrar el resultat de l'anàlisi.
1.8. Errors habituals
| Error |
Causa |
Solució |
AuthenticationFailure |
Clau incorrecta |
Verifica la clau al portal |
ResourceNotFound |
Endpoint incorrecte |
Copia l'endpoint exacte del portal |
QuotaExceeded |
Superat el límit gratuït |
Espera al mes següent o canvia a S1 |
InvalidImageUrl |
URL no accessible |
Usa una URL pública vàlida |
1.9. Recursos addicionals