מדריך לזיהוי באינטרנט

במדריך הזה נסביר איך להשתמש בתכונה 'זיהוי אינטרנט' של Vision API באפליקציית Python כדי לזהות ישויות באינטרנט, דפים תואמים ותמונות דומות.

קהל

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

במדריך הזה נסביר איך ליצור אפליקציה ל-Cloud Vision API, ואיך לבצע קריאה ל-Cloud Vision API כדי להשתמש בתכונה שלו לזיהוי אינטרנט.

דרישות מוקדמות

Python

סקירה כללית

במדריך הזה מוסבר איך ליצור אפליקציית Cloud Vision API בסיסית שמשתמשת בWeb detection בקשה. Web detection תשובה מוסיפה הערות לתמונה שנשלחה בבקשה עם:

  • תוויות שהתקבלו מהאינטרנט
  • כתובות URL באתר שכוללות תמונות תואמות
  • כתובות URL של תמונות באינטרנט שתואמות באופן חלקי או מלא לתמונה שבבקשה
  • כתובות URL של תמונות דומות

רשימת קודים

במהלך קריאת הקוד, מומלץ לעיין בהפניה ל-Vision API Python.

import argparse

from google.cloud import vision



def annotate(path: str) -> vision.WebDetection:
    """Returns web annotations given the path to an image.

    Args:
        path: path to the input image.

    Returns:
        An WebDetection object with relevant information of the
        image from the internet (i.e., the annotations).
    """
    client = vision.ImageAnnotatorClient()

    if path.startswith("http") or path.startswith("gs:"):
        image = vision.Image()
        image.source.image_uri = path

    else:
        with open(path, "rb") as image_file:
            content = image_file.read()

        image = vision.Image(content=content)

    web_detection = client.web_detection(image=image).web_detection

    return web_detection


def report(annotations: vision.WebDetection) -> None:
    """Prints detected features in the provided web annotations.

    Args:
        annotations: The web annotations (WebDetection object) from which
        the features should be parsed and printed.
    """
    if annotations.pages_with_matching_images:
        print(
            f"\n{len(annotations.pages_with_matching_images)} Pages with matching images retrieved"
        )

        for page in annotations.pages_with_matching_images:
            print(f"Url   : {page.url}")

    if annotations.full_matching_images:
        print(f"\n{len(annotations.full_matching_images)} Full Matches found: ")

        for image in annotations.full_matching_images:
            print(f"Url  : {image.url}")

    if annotations.partial_matching_images:
        print(f"\n{len(annotations.partial_matching_images)} Partial Matches found: ")

        for image in annotations.partial_matching_images:
            print(f"Url  : {image.url}")

    if annotations.web_entities:
        print(f"\n{len(annotations.web_entities)} Web entities found: ")

        for entity in annotations.web_entities:
            print(f"Score      : {entity.score}")
            print(f"Description: {entity.description}")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter,
    )
    path_help = str(
        "The image to detect, can be web URI, "
        "Google Cloud Storage, or path to local file."
    )
    parser.add_argument("image_url", help=path_help)
    args = parser.parse_args()

    report(annotate(args.image_url))

האפליקציה הזו מבצעת את המשימות הבאות:

  • מייבא את הספריות שנדרשות להפעלת האפליקציה
  • מקבלת נתיב של תמונה כארגומנט ומעבירה אותו לפונקציה main()
  • שימוש ב-Google Cloud API Client כדי לבצע זיהוי באינטרנט
  • מבצע לולאה על התגובה ומדפיס את התוצאות
  • מדפיס רשימה של ישויות באינטרנט עם תיאור וציון
  • מדפיס רשימה של דפים תואמים
  • הדפסה של רשימת תמונות עם התאמה חלקית
  • הדפסת רשימה של תמונות שתואמות באופן מלא

מבט מקרוב

בקטעים הבאים נבחן בפירוט את הרכיבים העיקריים של האפליקציה לדוגמה.

ייבוא ספריות

import argparse

from google.cloud import vision

אנחנו מייבאים ספריות רגילות:

  • argparse כדי לאפשר לאפליקציה לקבל שמות של קובצי קלט כארגומנטים
  • io לקריאה מקבצים

ייבוא אחר:

  • הסיווג ImageAnnotatorClient בספרייה google.cloud.vision לגישה אל Cloud Vision API.
  • מודול types בספרייה google.cloud.vision ליצירת בקשות.

הפעלת האפליקציה

parser = argparse.ArgumentParser(
    description=__doc__,
    formatter_class=argparse.RawDescriptionHelpFormatter,
)
path_help = str(
    "The image to detect, can be web URI, "
    "Google Cloud Storage, or path to local file."
)
parser.add_argument("image_url", help=path_help)
args = parser.parse_args()

report(annotate(args