זיהוי טקסט בתמונות

שירות זיהוי התווים האופטי (OCR) של Vertex AI במכשיר GDC עם air gap מזהה ומחלץ טקסט מתמונות בפורמט JPEG ו-PNG. כדי לעבד תמונות ולאחזר הערות טקסט מובנות, אתם יכולים לשלוח בקשות מוטבעות ל-method‏ BatchAnnotateImages של ה-API.

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

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

זיהוי טקסט מקובצי JPEG ו-PNG

השיטה BatchAnnotateImages מזהה טקסט מקבוצה של קובצי JPEG או PNG. אתם שולחים את הקובץ שבו אתם רוצים לזהות טקסט ישירות כתוכן בבקשת ה-API. המערכת מחזירה את הטקסט שזוהה בפורמט JSON בתגובה מה-API.

צריך לציין ערכים לשדות בגוף ה-JSON של בקשת ה-API. בטבלה הבאה מתוארים השדות בגוף הבקשה שצריך לספק כשמשתמשים ב-method‏ BatchAnnotateImages של ה-API לבקשות של זיהוי טקסט:

שדות בגוף הבקשה תיאור השדה
content התמונות עם הטקסט שרוצים לזהות. אתם מספקים את הייצוג ב-Base64 (מחרוזת ASCII) של נתוני התמונה הבינאריים.
type סוג זיהוי הטקסט שאתם צריכים מהתמונה.

מציינים את אחת משתי תכונות ההערות:
  • ‫TEXT_DETECTION מזהה ומחלץ טקסט מכל תמונה. תגובת ה-JSON כוללת את המחרוזת שחולצה, מילים בודדות והתיבות התוחמות שלהן.
  • ‫DOCUMENT_TEXT_DETECTION גם מחלץ טקסט מתמונה, אבל השירות מבצע אופטימיזציה של התשובה לטקסט צפוף ולמסמכים. ה-JSON כולל מידע על הדף, הבלוק, הפסקה, המילה והמעבר.
מידע נוסף על תכונות ההערות האלה זמין במאמר תכונות של זיהוי תווים אופטי.
language_hints זה שינוי אופציונלי. רשימת השפות שבהן משתמשים לזיהוי הטקסט.

אם השדה הזה ריק, המערכת מפרשת את זה כזיהוי שפה אוטומטי.

אין צורך להגדיר את השדה language_hints לשפות שמבוססות על האלפבית הלטיני.

אם אתם יודעים מהי השפה של הטקסט בתמונה, הגדרת רמז משפרת את התוצאות.

שליחת בקשת API

שולחים בקשה ל-API שעבר אימון מראש ל-OCR באמצעות ה-method של ה-API בארכיטקטורת REST. אחרת, תוכלו להשתמש ב-API שעבר אימון מראש ל-OCR מסקריפט Python כדי לזהות טקסט מקובצי JPEG או PNG.

בדוגמאות הבאות מוסבר איך לזהות טקסט בתמונה באמצעות OCR:

REST

כדי לזהות טקסט בתמונות באמצעות ה-method של API בארכיטקטורת REST:

  1. שומרים את הקובץ request.json הבא לגוף הבקשה:

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "image": {
            "content": BASE64_ENCODED_IMAGE
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          }
        }
      ]
    }
    EOF
    

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

    • ‫BASE64_ENCODED_IMAGE: ייצוג Base64 (מחרוזת ASCII) של נתוני התמונה הבינאריים. המחרוזת הזו מתחילה בתווים שנראים כמו /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • ‫FEATURE_TYPE: סוג זיהוי הטקסט שאתם צריכים מהתמונה. הערכים המותרים הם TEXT_DETECTION או DOCUMENT_TEXT_DETECTION.
    • ‫LANGUAGE_HINT: תגי השפה של BCP 47 שישמשו כהנחיות שפה לזיהוי טקסט, כמו en-t-i0-handwrit. השדה הזה הוא אופציונלי, ואם הוא ריק המערכת מזהה את השפה באופן אוטומטי.
  2. קבל אסימון אימות.

  3. שולחים את הבקשה:

    curl

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "x-goog-user-project: projects/PROJECT_ID" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      https://ENDPOINT/v1/images:annotate
    

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

    PowerShell

    $headers = @{
      "Authorization" = "Bearer TOKEN"
      "x-goog-user-project" = "projects/PROJECT_ID"
    }
    
    Invoke-WebRequest
      -Method POST
      -Headers $headers
      -ContentType: "application/json; charset=utf-8"
      -InFile request.json
      -Uri "ENDPOINT/v1/images:annotate" | Select-Object -Expand Content
    

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

Python

כדי להשתמש בשירות ה-OCR מסקריפט Python לזיהוי טקסט בתמונה:

  1. מתקינים את הגרסה העדכנית של ספריית הלקוח של OCR.

  2. הגדרת משתני הסביבה הנדרשים בסקריפט של Python.

  3. מאמתים את בקשת ה-API.

  4. מוסיפים את הקוד הבא לסקריפט Python שיצרתם:

    from google.cloud import vision
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def vision_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return vision.ImageAnnotatorClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      image = {"content": "BASE64_ENCODED_IMAGE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single image. To annotate more
      # images, create a request element for each image and add it to
      # the array of requests
      req = {"image": image, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_image(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

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

    • ‫ENDPOINT: נקודת הקצה של ה-OCR שמשמשת את הארגון. למידע נוסף על סטטוס השירות ונקודות הקצה
    • ‫BASE64_ENCODED_IMAGE: ייצוג Base64 (מחרוזת ASCII) של נתוני התמונה הבינאריים. המחרוזת הזו מתחילה בתווים שנראים כמו /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • ‫FEATURE_TYPE: סוג זיהוי הטקסט שאתם צריכים מהתמונה. הערכים המותרים הם TEXT_DETECTION או DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: מזהה הפרויקט.
  5. שומרים את הסקריפט של Python.

  6. מריצים את הסקריפט של Python כדי לזהות טקסט בתמונה:

    python SCRIPT_NAME
    

    מחליפים את SCRIPT_NAME בשם שנתתם לסקריפט Python, למשל vision.py.