תרגום מסמכים עם עיצוב

שירותי Vertex AI Translation וזיהוי תווים אופטי (OCR) משולבים כדי לספק תכונה לעיבוד מסמכים שנקראת Document Translate.

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

הכלי Document Translate תומך בתרגום מסמכים באופן מוטבע, מקטגוריות אחסון ובאצווה.

בדף הזה מוסבר איך להשתמש בתכונה לעיבוד מסמכים ב-Google Distributed Cloud (GDC)‎ עם פער אוויר כדי לתרגם מסמכים בלי לשנות את הפורמט שלהם.

פורמטים נתמכים

התכונה "תרגום מסמכים" תומכת בסוגי הקבצים הבאים לקלט ולפלט:

הנחיות סוג MIME של המסמך פלט
PDF application/pdf ‫PDF, ‏ DOCX
DOC application/msword DOC, ‏ DOCX
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document DOCX
PPT application/vnd.ms-powerpoint ‫PPT, ‏ PPTX
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation PPTX
XLS application/vnd.ms-excel XLS, ‏ XLSX
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet XLSX

תרגום של מסמכי PDF מקוריים וסרוקים

אפשר לתרגם מסמכי PDF מקוריים וסרוקים, כולל תרגומים לשפות שנכתבות מימין לשמאל או משפות כאלה. בנוסף, התכונה "תרגום מסמכים" שומרת על ההיפר-קישורים, גודל הגופן וצבע הגופן מהקבצים.

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

כדי להשתמש בתכונה של עיבוד מסמכים, צריך פרויקט בשם dt-project. המשאב המותאם אישית של הפרויקט צריך להיראות כמו בדוגמה הבאה:

apiVersion: resourcemanager.gdc.goog/v1
kind: Project
metadata:
  labels:
    atat.config.google.com/clin-number: CLIN_NUMBER
    atat.config.google.com/task-order-number: TASK_ORDER_NUMBER
  name: dt-project
  namespace: platform

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

תרגום מסמך מקטגוריית אחסון

כדי לתרגם מסמך שמאוחסן בקטגוריה, משתמשים ב-Vertex AI Translation API.

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

התכונה "תרגום מסמכים" תומכת בזיהוי שפה אוטומטי במסמכים שמאוחסנים בקטגוריות. אם לא תציינו קוד שפת מקור, השפה תזוהה על ידי Document Translate. השפה שזוהתה נכללת בפלט בשדה detectedLanguageCode.

כדי לתרגם מסמך מקטגוריית אחסון:

  1. הגדרת ה-gdcloud CLI למאגר אובייקטים.
  2. יוצרים קטגוריית אחסון במרחב השמות dt-project. משתמשים בסוג האחסון (storage class) Standard.

    כדי ליצור את קטגוריית האחסון, פורסים משאב Bucket במרחב השמות dt-project:

      apiVersion: object.gdc.goog/v1
      kind: Bucket
      metadata:
        name: dt-bucket
        namespace: dt-project
      spec:
        description: bucket for document vision service
        storageClass: Standard
        bucketPolicy:
          lockingPolicy:
            defaultObjectRetentionDays: 90
    
  3. נותנים לחשבונות השירות (ai-translation-system-sa ו-g-vai-translation-sie-sa) שמשמשים את שירות Vertex AI Translation את ההרשאות read ו-write בקטגוריה.

    כדי ליצור את התפקיד ואת קישור התפקיד באמצעות משאבים בהתאמה אישית בשרת ה-API לניהול:

    1. יוצרים את התפקיד על ידי פריסת משאב Role במרחב השמות dt-project:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: Role
        metadata:
          name: dvs-reader-writer
          namespace: dt-project
        rules:
          -
            apiGroups:
              - object.gdc.goog
            resources:
              - buckets
            verbs:
              - read-object
              - write-object
      
    2. יוצרים את קישור התפקיד על ידי פריסת משאב RoleBinding במרחב השמות dt-project:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: dvs-reader-writer-rolebinding
          namespace: dt-project
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: Role
          name: dvs-reader-writer
        subjects:
          -
            kind: ServiceAccount
            name: ai-translation-system-sa
            namespace: g-vai-translation-sie
          -
            kind: ServiceAccount
            name: g-vai-translation-sie-sa
            namespace: g-vai-translation-sie
      
  4. מעלים את המסמך לקטגוריית האחסון שיצרתם. מידע נוסף זמין במאמר העלאה והורדה של אובייקטים באחסון בפרויקטים.

  5. שולחים בקשה ל-API של Vertex AI Translation שעבר אימון מראש:

    curl

    כדי לשלוח בקשה ל-curl:

    1. שומרים את קובץ ה-request.json הבא:

      cat <<- EOF > request.json
      {
        "parent": "projects/PROJECT_ID/locations/PROJECT_ID",
        "source_language_code": "SOURCE_LANGUAGE",
        "target_language_code": "TARGET_LANGUAGE",
        "document_input_config": {
          "mime_type": "application/pdf",
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH"
          }
        },
        "document_output_config": {
          "mime_type": "application/pdf"
        },
        "enable_rotation_correction": "true"
      }
      EOF
      

      מחליפים את מה שכתוב בשדות הבאים:

      • PROJECT_ID: מזהה הפרויקט.
      • ‫SOURCE_LANGUAGE: השפה שבה כתוב המסמך. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
      • ‫TARGET_LANGUAGE: השפה או השפות שאליהן רוצים לתרגם את המסמך. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
      • ‫INPUT_FILE_PATH: הנתיב של קובץ המסמך בקטגוריית האחסון.

      משנים את הערך של mime_type בהתאם למסמך.

    2. קבל אסימון אימות.

    3. שולחים את הבקשה:

      curl -vv --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:translateDocument < request.json
      

      מחליפים את מה שכתוב בשדות הבאים:

תרגום מסמך בתוך השורה

בקטע הזה מוסבר איך לשלוח מסמך כחלק מבקשת ה-API. צריך לכלול את סוג ה-MIME לתרגומים של מסמכים מוטבעים.

התכונה "תרגום מסמכים" תומכת בזיהוי שפה אוטומטי לתרגום טקסט מוטבע. אם לא תציינו קוד שפת מקור, השפה תזוהה אוטומטית על ידי Document Translate. השפה שזוהתה נכללת בפלט בשדה detectedLanguageCode.

שולחים בקשה ל-API של Vertex AI Translation שעבר אימון מראש:

curl

כדי לשלוח בקשה ל-curl:

  1. קבל אסימון אימות.

  2. שולחים את הבקשה:

echo '{"parent": "projects/PROJECT_ID/locations/PROJECT_ID","source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE", "document_input_config": { "mime_type": "application/pdf", "content": "'$(base64 -w 0 INPUT_FILE_PATH)'" }, "document_output_config": { "mime_type": "application/pdf" }, "enable_rotation_correction": "true"}' | curl --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID/locations/PROJECT_ID:translateDocument

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט.
  • ‫SOURCE_LANGUAGE: השפה שבה כתוב המסמך. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
  • ‫TARGET_LANGUAGE: השפה או השפות שאליהן רוצים לתרגם את המסמך. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
  • ‫INPUT_FILE_PATH: הנתיב של קובץ המסמך באופן מקומי.
  • ‫TOKEN: אסימון האימות שקיבלתם.
  • ENDPOINT: נקודת הקצה של Vertex AI Translation שבה משתמשים בארגון. מידע נוסף על סטטוס השירות ונקודות הקצה

תרגום של כמה מסמכים בבת אחת

תרגום באצווה מאפשר לתרגם כמה קבצים לכמה שפות בבקשה אחת. בכל בקשה אפשר לשלוח עד 100 קבצים, עם תוכן בגודל כולל של עד 1GB או 100 מיליון נקודות קוד של Unicode, המגבלה הראשונה מביניהן. אפשר לציין מודל תרגום מסוים לכל שפה.

מידע נוסף זמין במאמר batchTranslateDocument.

תרגום של כמה מסמכים

הדוגמה הבאה כוללת כמה הגדרות קלט. כל הגדרת קלט היא מצביע לקובץ בקטגוריית אחסון.

שולחים בקשה ל-API של Vertex AI Translation שעבר אימון מראש:

curl

כדי לשלוח בקשה ל-curl:

  1. שומרים את גוף הבקשה הבא בקובץ בשם request.json:

    {
      "source_language_code": "SOURCE_LANGUAGE",
      "target_language_codes": ["TARGET_LANGUAGE", ...],
      "input_configs": [
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_1"
          }
        },
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_2"
          }
        },
        ...
      ],
      "output_config": {
        "s3_destination": {
          "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX"
        }
      }
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SOURCE_LANGUAGE: קוד השפה של מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
    • ‫TARGET_LANGUAGE: שפת היעד או השפות שאליהן רוצים לתרגם את מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
    • ‫INPUT_FILE_PATH: המיקום של קטגוריית האחסון ושם הקובץ של מסמך קלט אחד או יותר.
    • OUTPUT_FILE_PREFIX: המיקום של קטגוריית האחסון שבה נשמרים כל מסמכי הפלט.
  2. קבל אסימון אימות.

  3. שולחים את הבקשה:

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:batchTranslateDocument"
    

    מחליפים את מה שכתוב בשדות הבאים:

התגובה מכילה את המזהה של פעולה ממושכת:

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}

תרגום והמרה של קובץ PDF מקורי

בדוגמה הבאה, קובץ PDF מקורי מתורגם ומומר לקובץ DOCX. אפשר לציין כמה קלטים מסוגי קבצים שונים, ולא כולם חייבים להיות קובצי PDF מקוריים. עם זאת, אי אפשר לכלול קובצי PDF סרוקים כשכוללים המרה. הבקשה נדחית ולא מתבצעים תרגומים. רק קובצי PDF מקוריים מתורגמים ומומרים לקובצי DOCX. לדוגמה, אם אתם כוללים קובצי PPTX, הם מתורגמים ומוחזרים כקובצי PPTX.

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

שולחים בקשה ל-API של Vertex AI Translation שעבר אימון מראש:

curl

כדי לשלוח בקשה ל-curl:

  1. שומרים את גוף הבקשה הבא בקובץ בשם request.json:

    {
      "source_language_code": "SOURCE_LANGUAGE",
      "target_language_codes": ["TARGET_LANGUAGE", ...],
      "input_configs": [
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_1"
          }
        },
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_2"
          }
        },
        ...
      ],
      "output_config": {
        "s3_destination": {
          "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX"
        }
      },
      "format_conversions": {
        "application/pdf": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
      }
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SOURCE_LANGUAGE: קוד השפה של מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
    • ‫TARGET_LANGUAGE: שפת היעד או השפות שאליהן רוצים לתרגם את מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
    • ‫INPUT_FILE_PATH: המיקום של קטגוריית האחסון ושם הקובץ של מסמך קלט אחד או יותר.
    • OUTPUT_FILE_PREFIX: המיקום של קטגוריית האחסון שבה נשמרים כל מסמכי הפלט.
  2. קבל אסימון אימות.

  3. שולחים את הבקשה:

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:batchTranslateDocument"
    

    מחליפים את מה שכתוב בשדות הבאים:

התגובה מכילה את המזהה של פעולה ממושכת:

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}

שימוש במילון מונחים

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

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

שולחים בקשה ל-API של Vertex AI Translation שעבר אימון מראש:

curl

כדי לשלוח בקשה ל-curl:

  1. שומרים את גוף הבקשה הבא בקובץ בשם request.json:

    {
      "source_language_code": "SOURCE_LANGUAGE",
      "target_language_codes": ["TARGET_LANGUAGE", ...],
      "input_configs": [
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH"
          }
        }
      ],
      "output_config": {
        "s3_destination": {
          "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX"
        }
      },
      "glossaries": {
        "TARGET_LANGUAGE": {
          "glossary": "projects/GLOSSARY_PROJECT_ID/glossaries/GLOSSARY_ID"
        },
        ...
      }
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SOURCE_LANGUAGE: קוד השפה של מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
    • ‫TARGET_LANGUAGE: שפת היעד או השפות שאליהן רוצים לתרגם את מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות וקודי השפה שלהן.
    • ‫INPUT_FILE_PATH: המיקום של קטגוריית האחסון ושם הקובץ של מסמך קלט אחד או יותר.
    • OUTPUT_FILE_PREFIX: המיקום של קטגוריית האחסון שבה נשמרים כל מסמכי הפלט.
    • ‫GLOSSARY_PROJECT_ID: מזהה הפרויקט שבו נמצא מילון המונחים.
    • ‫GLOSSARY_ID: מזהה מילון המונחים.
  2. קבל אסימון אימות.

  3. שולחים את הבקשה:

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://ENDPOINT:443/v3/projects/PROJECT_ID/locations/PROJECT_ID:batchTranslateDocument"
    

    מחליפים את מה שכתוב בשדות הבאים:

התגובה מכילה את המזהה של פעולה ממושכת:

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}