בדף הזה מוסבר איך לזהות טקסט בקבצים באמצעות Optical Character Recognition (OCR) API במכשיר עם פער אבטחה (air-gapped) של Google Distributed Cloud (GDC).
שירות ה-OCR של Vertex AI במכשיר GDC עם air gap מזהה טקסט בקובצי PDF ו-TIFF באמצעות שיטת ה-API BatchAnnotateFiles.
לפני שמתחילים
כדי להתחיל להשתמש ב-OCR API, צריך שיהיה לכם פרויקט שבו ה-OCR API מופעל, ופרטי הכניסה המתאימים. אפשר גם להתקין ספריות לקוח כדי לבצע קריאות ל-API. מידע נוסף זמין במאמר בנושא הגדרת פרויקט לזיהוי תווים.
זיהוי טקסט באמצעות בקשות מוטבעות
בשיטה BatchAnnotateFiles מזוהה טקסט מקבוצה של קובצי PDF או TIFF.
אתם שולחים את הקובץ שבו אתם רוצים לזהות טקסט ישירות כתוכן בבקשת ה-API. המערכת מחזירה את הטקסט שזוהה בפורמט JSON בתגובת ה-API.
צריך לציין ערכים לשדות בגוף ה-JSON של בקשת ה-API. בטבלה הבאה מפורטים השדות בגוף הבקשה שצריך לספק כשמשתמשים בשיטת ה-API BatchAnnotateFiles לבקשות לזיהוי טקסט:
| שדות בגוף הבקשה | תיאור השדה |
|---|---|
content |
הקבצים עם הטקסט לזיהוי. אתם מספקים את הייצוג ב-Base64 (מחרוזת ASCII) של תוכן הקובץ הבינארי. |
mime_type |
סוג קובץ המקור. צריך להגדיר אותו לאחד מהערכים הבאים:
|
type |
סוג זיהוי הטקסט שדרוש מהקובץ. מציינים אחת משתי תכונות ההערה:
|
language_hints |
זה שינוי אופציונלי. רשימת השפות שבהן יתבצע זיהוי הטקסט. המערכת מפרשת ערך ריק בשדה הזה כזיהוי שפה אוטומטי. אין צורך להגדיר את השדה language_hints לשפות שמבוססות על האלפבית הלטיני.אם אתם יודעים את השפה של הטקסט בקובץ, הגדרת רמז משפרת את התוצאות. |
pages |
זה שינוי אופציונלי. מספר העמודים מהקובץ שיעברו עיבוד לצורך זיהוי טקסט. אפשר לציין עד חמישה דפים. אם לא מציינים את מספר הדפים, השירות מעבד את חמשת הדפים הראשונים של הקובץ. |
שליחת בקשת API מוטמעת
שולחים בקשה ל-API של OCR שעבר אימון מראש באמצעות ה-method של API בארכיטקטורת REST. אפשר גם ליצור אינטראקציה עם ה-API של OCR שעבר אימון מראש באמצעות סקריפט Python כדי לזהות טקסט מקובצי PDF או TIFF.
בדוגמאות הבאות אפשר לראות איך לזהות טקסט בקובץ באמצעות OCR:
REST
כדי לזהות טקסט בקבצים באמצעות ה-method של API בארכיטקטורת REST:
שומרים את קובץ
request.jsonהבא עבור גוף הבקשה:cat <<- EOF > request.json { "requests": [ { "input_config": { "content": BASE64_ENCODED_FILE, "mime_type": "application/pdf" }, "features": [ { "type": "FEATURE_TYPE" } ], "image_context": { "language_hints": [ "LANGUAGE_HINT_1", "LANGUAGE_HINT_2", ... ] }, "pages": [] } ] } EOFמחליפים את מה שכתוב בשדות הבאים:
-
BASE64_ENCODED_FILE: ייצוג 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/files: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/files: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) input_config = {"content": "BASE64_ENCODED_FILE"} features = [{"type_": vision.Feature.Type.FEATURE_TYPE}] # Each requests element corresponds to a single file. To annotate more # files, create a request element for each file and add it to # the array of requests req = {"input_config": input_config, "features": features} metadata = [("x-goog-user-project", "projects/PROJECT_ID")] resp = vc.annotate_file(req,metadata=metadata) print(resp) if __name__=="__main__": creds = main() vision_func(creds)מחליפים את מה שכתוב בשדות הבאים:
-
ENDPOINT: נקודת הקצה של ה-OCR שבה אתם משתמשים בארגון. למידע נוסף, אפשר לראות את סטטוס השירות ונקודות הקצה. -
BASE64_ENCODED_FILE: ייצוג 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.