זיהוי טקסט בקבצים

בדף הזה מוסבר איך לזהות טקסט בקבצים באמצעות 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 סוג קובץ המקור. צריך להגדיר אותו לאחד מהערכים הבאים:
  • application/pdf לקובצי PDF
  • image/tiff לקובצי TIFF
type סוג זיהוי הטקסט שדרוש מהקובץ.

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

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

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

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

אפשר לציין עד חמישה דפים. אם לא מציינים את מספר הדפים, השירות מעבד את חמשת הדפים הראשונים של הקובץ.

שליחת בקשת API מוטמעת

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

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

REST

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

  1. שומרים את קובץ 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. השדה הזה הוא אופציונלי, והמערכת מפרשת ערך ריק כזיהוי שפה אוטומטי.
  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/files: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/files: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)
        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: מזהה הפרויקט.
  5. שומרים את סקריפט Python.

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

    python SCRIPT_NAME
    

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