שירות זיהוי התווים האופטי (OCR) של Vertex AI ב-Google Distributed Cloud (GDC) עם בידוד פיזי מזהה טקסט בתמונות באמצעות שיטת ה-API BatchAnnotateImages. השירות תומך בקובצי JPEG ו-PNG לתמונות.
בדף הזה מוסבר איך לזהות טקסט בתמונה באמצעות OCR API ב-Distributed Cloud.
לפני שמתחילים
כדי להתחיל להשתמש ב-OCR API, צריך שיהיה לכם פרויקט שבו ה-OCR API מופעל, ופרטי הכניסה המתאימים. אפשר גם להתקין ספריות לקוח כדי לבצע קריאות ל-API. מידע נוסף זמין במאמר בנושא הגדרת פרויקט לזיהוי תווים.
זיהוי טקסט מקובצי JPEG ו-PNG
השיטה BatchAnnotateImages מזהה טקסט מקבוצה של קובצי JPEG או PNG.
אתם שולחים את הקובץ שבו אתם רוצים לזהות טקסט ישירות כתוכן בבקשת ה-API. המערכת מחזירה את הטקסט שזוהה בפורמט JSON בתגובת ה-API.
צריך לציין ערכים לשדות בגוף ה-JSON של בקשת ה-API. בטבלה הבאה מפורטים השדות בגוף הבקשה שצריך לספק כשמשתמשים בשיטת ה-API BatchAnnotateImages לבקשות לזיהוי טקסט:
| שדות בגוף הבקשה | תיאור השדה |
|---|---|
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) print("Got token: ") print(creds.token) 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: מזהה הפרויקט.
-
שומרים את סקריפט Python.
מריצים את סקריפט Python כדי לזהות טקסט בתמונה:
python SCRIPT_NAMEמחליפים את
SCRIPT_NAMEבשם שנתתם לסקריפט Python, למשלvision.py.