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

שירות זיהוי התווים האופטי (OCR) של Vertex AI ב-Google Distributed Cloud (GDC) air-gapped appliance מזהה ומחלץ טקסט מקובצי PDF ו-TIFF. אתם יכולים לשלוח קבצים מקומיים ישירות בבקשות מוטבעות למתודה BatchAnnotateFiles של ה-API, שתומכת בבקשה אחת לכל קריאה באצווה.

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

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

זיהוי טקסט באמצעות בקשות מוטבעות

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

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

שדות בגוף הבקשה תיאור השדה
content הקבצים עם הטקסט שרוצים לזהות. אתם מספקים את הייצוג ב-Base64 (מחרוזת ASCII) של תוכן הקובץ הבינארי.
mime_type סוג קובץ המקור. צריך להגדיר אותו לאחד מהערכים הבאים:
  • ‫application/pdf לקובצי PDF
  • ‫image/tiff לקובצי TIFF
type סוג זיהוי הטקסט שאתם צריכים מהקובץ.

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

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

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

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

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

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

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

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

REST

כדי לזהות טקסט בקבצים באמצעות השיטה של 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)
      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.