שירות זיהוי התווים האופטי (OCR) של Vertex AI ב-Google Distributed Cloud (GDC) עם air gap מזהה טקסט בתמונות באמצעות ה-method BatchAnnotateImages של ה-API. השירות תומך בקובצי JPEG ו-PNG לתמונות.
בדף הזה מוסבר איך לזהות טקסט בתמונה באמצעות OCR API ב-Distributed Cloud.
לפני שמתחילים
כדי לזהות טקסט בתמונות, צריך לבקש מאדמין ה-IAM של הפרויקט את התפקיד מפתח AI OCR (ai-ocr-developer) במרחב השמות של הפרויקט.
למידע נוסף על התפקיד הזה, קראו את המאמר הכנת הרשאות IAM.
כדי להתחיל להשתמש ב-OCR API, צריך פרויקט שבו ה-OCR API מופעל ופרטי כניסה מתאימים. אפשר גם להתקין ספריות לקוח שיעזרו לכם לבצע קריאות ל-API. למידע נוסף, קראו את המאמר הגדרת פרויקט לזיהוי תווים.
זיהוי טקסט מקובצי JPEG ו-PNG
השיטה BatchAnnotateImages מזהה טקסט מקבוצה של קובצי JPEG או PNG.
אתם שולחים את הקובץ שבו אתם רוצים לזהות טקסט ישירות כתוכן בבקשת ה-API. המערכת מחזירה את הטקסט שזוהה בפורמט JSON בתגובה מה-API.
צריך לציין ערכים לשדות בגוף ה-JSON של בקשת ה-API. בטבלה הבאה מתוארים השדות של גוף הבקשה שצריך לספק כשמשתמשים ב-method BatchAnnotateImages של ה-API לבקשות של זיהוי טקסט:
| שדות בגוף הבקשה | תיאור השדה |
|---|---|
content |
התמונות עם הטקסט שרוצים לזהות. אתם מספקים את הייצוג ב-Base64 (מחרוזת ASCII) של נתוני התמונה הבינאריים. |
type |
סוג זיהוי הטקסט שאתם צריכים מהתמונה. מציינים את אחת משתי תכונות ההערות:
|
language_hints |
זה שינוי אופציונלי. רשימת השפות שבהן משתמשים לזיהוי הטקסט. אם השדה הזה ריק, המערכת מפרשת את זה כזיהוי שפה אוטומטי. לא צריך להגדיר את השדה language_hints לשפות שמבוססות על האלפבית הלטיני.אם אתם יודעים מהי השפה של הטקסט בתמונה, הגדרת רמז משפרת את התוצאות. |
למידע על הייצוג המלא של JSON, ראו AnnotateImageRequest.
שליחת בקשת API
שולחים בקשה ל-API שעבר אימון מראש ל-OCR באמצעות ה-method של ה-API בארכיטקטורת REST. אחרת, אתם יכולים להשתמש ב-API שעבר אימון מראש לזיהוי תווים אופטי (OCR) מסקריפט Python כדי לזהות טקסט מקובצי JPEG או PNG.
בדוגמאות הבאות מוסבר איך לזהות טקסט בתמונה באמצעות OCR:
REST
כדי לזהות טקסט בתמונות באמצעות ה-method של API בארכיטקטורת REST:
שומרים את הקובץ
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. השדה הזה הוא אופציונלי, ואם הוא ריק המערכת מזהה את השפה באופן אוטומטי.
-
שולחים את הבקשה:
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מחליפים את מה שכתוב בשדות הבאים:
-
TOKEN: אסימון האימות שקיבלתם. PROJECT_ID: מזהה הפרויקט.-
ENDPOINT: נקודת הקצה של ה-OCR שבה משתמשים בארגון. למידע נוסף על סטטוס השירות ונקודות הקצה
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מחליפים את מה שכתוב בשדות הבאים:
-
TOKEN: אסימון האימות שקיבלתם. -
ENDPOINT: נקודת הקצה של ה-OCR שבה משתמשים בארגון. למידע נוסף על סטטוס השירות ונקודות הקצה
-
Python
כדי להשתמש בשירות ה-OCR מסקריפט Python לזיהוי טקסט בתמונה:
מוסיפים את הקוד הבא לסקריפט 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 שמשמשת את הארגון. למידע נוסף על סטטוס השירות ונקודות הקצה (endpoint) -
BASE64_ENCODED_IMAGE: ייצוג Base64 (מחרוזת ASCII) של נתוני התמונה הבינאריים. המחרוזת הזו מתחילה בתווים שנראים כמו/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==. -
FEATURE_TYPE: סוג זיהוי הטקסט שאתם צריכים מהתמונה. הערכים המותרים הםTEXT_DETECTIONאוDOCUMENT_TEXT_DETECTION. PROJECT_ID: מזהה הפרויקט.
-
שומרים את הסקריפט של Python.
מריצים את הסקריפט של Python כדי לזהות טקסט בתמונה:
python SCRIPT_NAMEמחליפים את
SCRIPT_NAMEבשם שנתתם לסקריפט Python, למשלvision.py.