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

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

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

הכלי 'תרגום מסמכים' תומך בתרגום מסמכים בתוך הטקסט, ממאגרי אחסון ובצורה של אצווה.

בדף הזה מוסבר איך להשתמש בתכונה לעיבוד מסמכים ב-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 מקוריים ובקובצי 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 שעברו אימון מראש ולוודא שיש לכם את פרטי הכניסה המתאימים. כדאי להתקין את ספריות הלקוח של Vertex AI Translation ו-OCR כדי להקל על קריאות ה-API. מידע נוסף על הדרישות המוקדמות זמין במאמר הגדרת פרויקט תרגום.

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

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

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

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

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

  1. הגדרת ה-CLI של gcloud לאחסון אובייקטים.
  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) שבו משתמש שירות התרגום של Vertex AI הרשאות read ו-write בקטגוריית האחסון.

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

    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
      
  4. מעלים את המסמך לקטגוריית האחסון שיצרתם. מידע נוסף זמין במאמר העלאה והורדה של אובייקטים של אחסון בפרויקטים.

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

    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.

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

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.

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

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

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

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 מקוריים, מומלץ לארגן אותם בדלי אחסון נפרדים. כך, כשמבקשים תרגום והמרה של קבוצת קבצים, אפשר להחריג את ה-bucket שמכיל קובצי PDF סרוקים, במקום להחריג קבצים בודדים.

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

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 שפות יעד עם מילון מונחים משלהן.

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

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

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"
        },
        ...
      }
    }
    

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

    • SOURCE_LANGUAGE: קוד השפה של מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות ובקודים של השפות האלה.
    • TARGET_LANGUAGE: שפת היעד או השפות שאליהן רוצים לתרגם את מסמכי הקלט. כאן אפשר לעיין ברשימת השפות הנתמכות ובקודים של השפות האלה.
    • INPUT_FILE_PATH: המיקום של קטגוריית האחסון ושם הקובץ של מסמך קלט אחד או יותר.
    • OUTPUT_FILE_PREFIX: המיקום של מאגר האחסון שבו נשמרים כל מסמכי הפלט.
    • GLOSSARY_PROJECT_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"
}
}