זיהוי תוויות בתמונה באמצעות שורת הפקודה

בדף הזה מוסבר איך לשלוח שלוש בקשות לזיהוי תכונות ולהוספת הערות ל-Vision API באמצעות ממשק REST והפקודה curl.

‫Vision API מאפשר לשלב בקלות את הטכנולוגיות של Google לזיהוי באמצעות ראייה ממוחשבת באפליקציות של מפתחים. אתם יכולים לשלוח נתוני תמונות וסוגי תכונות רצויים אל Vision API, שמחזיר תגובה תואמת על סמך מאפייני התמונה שמעניינים אתכם. מידע נוסף על סוגי התכונות שזמינות מופיע ברשימה של כל התכונות של Vision API.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. מפעילים את Vision API, אם הוא עדיין לא מופעל:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable vision.googleapis.com
  8. מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט.
    • ‫USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה, myemail@example.com.
    • ‫ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.
  9. התקינו את ה-CLI של Google Cloud.

  10. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  11. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  12. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  13. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  14. מפעילים את Vision API, אם הוא עדיין לא מופעל:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable vision.googleapis.com
  15. מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט.
    • ‫USER_IDENTIFIER: המזהה של חשבון המשתמש . לדוגמה, myemail@example.com.
    • ‫ROLE: תפקיד ה-IAM שאתם מקצים לחשבון המשתמש.

שליחת בקשה להוספת הערה לתמונה

אחרי שמבצעים את השלבים שבקטע לפני שמתחילים, אפשר להשתמש ב-Vision API כדי להוסיף הערות לקובץ תמונה.

בדוגמה הזו משתמשים ב-curl כדי לשלוח בקשה ל-Vision API באמצעות התמונה הבאה:

URI של Cloud Storage:

gs://cloud-samples-data/vision/using_curl/shanghai.jpeg

כתובת URL מסוג HTTPS:

https://console.cloud.google.com/storage/browser/cloud-samples-data/vision/using_curl/shanghai.jpeg

תמונה של רחוב בשנגחאי.
Image credit: Steve Long on Unsplash.

יצירת בקשת JSON

בקובץ request.json הבא מוצגות דוגמאות לבקשות לשלוש images:annotate תכונות ולהגבלת התוצאות בתשובה.

יוצרים את קובץ בקשת ה-JSON עם הטקסט הבא ושומרים אותו כקובץ טקסט פשוט request.json בספריית העבודה:

request.json

{
  "requests": [
    {
      "image": {
        "source": {
          "imageUri": "gs://cloud-samples-data/vision/using_curl/shanghai.jpeg"
        }
      },
      "features": [
        {
          "type": "LABEL_DETECTION",
          "maxResults": 3
        },
        {
          "type": "OBJECT_LOCALIZATION",
          "maxResults": 1
        },
        {
          "type": "TEXT_DETECTION",
          "maxResults": 1,
          "model": "builtin/latest"
        }
      ]
    }
  ]
}

שליחת הבקשה

משתמשים ב-curl ובתוכן הגוף מ-request.json כדי לשלוח את הבקשה ל-Vision API. מזינים את הפקודה הבאה בשורת הפקודה:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: PROJECT_ID" \
    -H "Content-Type: application/json; charset=utf-8" \
    https://vision.googleapis.com/v1/images:annotate -d @request.json

פירוש התשובה

אמורה להתקבל תגובת JSON שדומה לזו שבהמשך.

גוף הבקשה בפורמט JSON מציין maxResults לכל סוג הערה. לכן, תראו את הפרטים הבאים ב-JSON של התגובה:

תוצאות של זיהוי תוויות

  1. description: "People", score: 0.950
  2. description: "Street", score: 0.891
  3. description: "Mode of transport", score: 0.890
תמונה של רחוב בשנגחאי שמכילה תוצאות של זיהוי תוויות.
קרדיט על התמונה: Steve Long ב-Unsplash (הערות נוספו).

תוצאות של זיהוי טקסט

  • text: 牛牛面馆\n
  • קודקודי התיבה: (x: 159, y: 212), (x: 947, y: 212), (x: 947, y: 354), (x: 159, y: 354 )
תמונה של רחוב בשנגחאי שמכילה תוצאות של זיהוי טקסט.
קרדיט על התמונה: Steve Long ב-Unsplash (הערות נוספו).

תוצאות של זיהוי אובייקטים

  • name: "Person", score: 0.944
  • קודקודי צורה מנורמלים: (x: 0.260, y: 0.468), (x: 0.407, y: 0.468), (x: 0.407, y: 0.895), (x: 0.260, y: 0.895)
תמונה של רחוב בשנגחאי שמכילה תוצאות של זיהוי אובייקטים.
קרדיט על התמונה: Steve Long ב-Unsplash (הערות נוספו).

כל הכבוד! שלחת בקשה ראשונה ל-Vision API.

הסרת המשאבים

כדי לא לצבור חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט Google Cloud יחד עם המשאבים.

אם רוצים, מבטלים את פרטי הכניסה של ה-CLI של gcloud.

gcloud auth revoke

המאמרים הבאים

  • כאן אפשר לראות רשימה של כל סוגי התכונות והשימושים שלהן.
  • כדי להתחיל להשתמש ב-Vision API בשפה הרצויה, אפשר להשתמש בספריית הלקוח של Vision API.
  • במדריכים אפשר לקבל מידע נוסף על תכונות ספציפיות, לראות דוגמאות להערות ולקבל הערות לקובץ או לתמונה ספציפיים.
  • מידע על הוספת הערות לתמונות וקבצים (PDF/TIFF/GIF) בכמות גדולה.
  • עיון ברשימה מקיפה של דוגמאות לקוד של ספריות לקוח.