הודעות שגיאה

כאן מוסבר איך לפתור חלק מהשגיאות שמוצגות ב-Document AI. במאמר הזה נסביר על שגיאות שפתרונן דורש יותר שלבים מאלה שאפשר לתאר בהודעת שגיאה.

במאמרי העזרה של Cloud API מפורטות שיטות מומלצות לטיפול בשגיאות.

הרשאות

כדי לפתור את הבעיה, צריך לבצע כמה שלבים שמתוארים בהודעת השגיאה.

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

אם קיבלתם את ההודעה הזו:

The Application Default Credentials are not available. They are
available if running in Compute Engine. Otherwise, the
environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined
pointing to a file defining the credentials.
See https://developers.google.com/accounts/docs/application-default-credentials
for more information.

‫Document AI משתמש ב-Application Default Credentials לאימות.

צריך ליצור חשבון שירות לפרויקט, להוריד את המפתח (קובץ JSON) של חשבון השירות לסביבת הפיתוח, ואז להגדיר את המיקום של קובץ ה-JSON הזה למשתנה סביבה בשם GOOGLE_APPLICATION_CREDENTIALS.

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

מידע נוסף על הגדרת משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS זמין במדריך לתחילת העבודה עם Document AI או במאמר בנושא שימוש ב-Application Default Credentials.

ההרשאה נדחתה

אם קיבלתם את ההודעה הזו:

ERROR: (gcloud.auth.application-default.print-access-token) File
(pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!
{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

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

כדי לאבחן את השגיאה הזו, נסו לפתוח את קובץ המפתח של חשבון השירות מהתיקייה שממנה אתם מנסים לקרוא ל-Document AI API.

cat $GOOGLE_APPLICATION_CREDENTIALS

הגישה נדחתה: לא נעשה שימוש ב-POST API עם קוד 403 או שהוא מושבת

אם קיבלתם את ההודעה:

Forbidden: 403 POST Document AI API has not been used in
project # before or it is disabled.
Enable it by visiting [url], then retry.
If you enabled this API recently, wait a few minutes for the action to
propagate and retry.
  1. עוברים לקישור שצוין בהודעת השגיאה ומפעילים את Document AI API. מחכים כמה דקות ומנסים שוב.
  2. מוודאים שיש לכם קובץ JSON תקין של מפתח חשבון שירות שמאוחסן במשתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS. כדי לאבחן את השגיאה הזו, נסו לפתוח את קובץ המפתח של חשבון השירות מהתיקייה שממנה אתם מנסים לקרוא ל-Document AI API.
    cat $GOOGLE_APPLICATION_CREDENTIALS
    

שגיאה בכתיבת הפלט הסופי

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

{
  "name": "projects/project-name/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.document.v1beta1.OperationMetadata",
    "state": "SUCCEEDED",
    "createTime": "2019-09-19T02:02:15.885267760Z",
    "updateTime": "2019-09-19T02:02:31.896425001Z"
  },
  "done": true,
  "error": {
    "code": 5,
    "message": "Error writing final output to: gs://bucket-name/filename.json"
  }
}

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

יכול להיות שגם טעיתם באיות של שם הקטגוריה של Cloud Storage. מוודאים שהבאקט שאליו מנסים לגשת קיים.

ל-P4SA אין גישה ל-Cloud Storage

כשאין לחשבון השירות לכל מוצר (P4SA) של Document AI הרשאה לגשת למשאבים מסוימים ב-Cloud Storage.

message: "Cloud DocumentAI P4SA doesn't have access to this Cloud Storage resource:"

לחשבון השירות אין אפשרות ליצור אובייקט ב-Cloud Storage

כשאין לחשבון שירות לכל מוצר (P4SA) של Document AI הרשאה ליצור אובייקט ב-Cloud Storage.

message: "Service account service-123@gcp-sa-prod-dai-core.iam.gserviceaccount.com
         does not have permission storage.objects.create to create
         Google Cloud Storage object in bucket gs://foo."

יכול להיות שלחשבון השירות של Document AI אין את ההרשאות המתאימות ליצירת אובייקטים בקטגוריה של Cloud Storage. חשוב לוודא שהקציתם את ההרשאות הנכונות לחשבון השירות של Document AI, כמו שמתואר בהגדרת גישה לקבצים בין פרויקטים.

יכול להיות שגם טעיתם באיות של שם הקטגוריה של Cloud Storage. מוודאים שהבאקט שאליו מנסים לגשת קיים.

למבצע הקריאה אין אפשרות לקבל אובייקטים ב-Cloud Storage

כשלקורא של Document AI API אין הרשאה לקבל אובייקטים ב-Cloud Storage.

message: "The caller does not have permission storage.objects.get to get Google
         Cloud Storage objects in bucket gs://foo."

יכול להיות שלמשתמש שקורא ל-API אין את ההרשאות הנכונות כדי לקבל אובייקטים בקטגוריה שלכם ב-Cloud Storage. חשוב לוודא שהקציתם למבצע הקריאה את ההרשאות הנכונות.

יכול להיות שגם טעיתם באיות של שם הקטגוריה של Cloud Storage. מוודאים שהבאקט שאליו מנסים לגשת קיים.

ארגומנטים לא חוקיים

כדי לפתור את הבעיה, צריך לבצע כמה שלבים שמתוארים בהודעת השגיאה.

גרסת ה-API לא נתמכת

כששולחים בקשה לגרסת API שלא תומכת בפעולה.

message: "The requested operation is unsupported for the API version."

סוג המעבד לא נתמך

כשמבצעים בקשה לשיטת API שלא תומכת בסוג המעבד שצוין.

message: "The requested operation is unsupported for the processor type: ${PROCESSOR_TYPE}."

בקשה פגומה

כשמתבצעת בקשת API אבל בשדות הבקשה יש הפרה אחת או יותר. כל הפרה מתועדת כfield_violations בפרטים של google.rpc.BadRequest.

message: "Request contains an invalid argument."
details {
  [type.googleapis.com/google.rpc.BadRequest] {
    field_violations { field: "foo" description: "bar" }
  }
}

עיבוד באצווה של כל המסמכים נכשל

כשעיבוד של כל המסמכים בבקשה לעיבוד ברצף נכשל.

message: "Failed to process all documents."
details {
  [type.googleapis.com/google.rpc.ErrorInfo] {
    reason: "FAILED_TO_PROCESS_ALL_DOCUMENTS"
    domain: "documentai.googleapis.com"
  }
}

אין מסמכים

כשנדרשים או מצופים מסמכים אבל לא מסופקים מסמכים, למשל כשמייבאים מסמכים באמצעות URI של Cloud Storage.

message: "No valid documents found in ${training|test} directory. Ensure files are in a supported MIME type. For details, see https://cloud.google.com/document-ai/docs/file-types."
details {
  [type.googleapis.com/google.rpc.ErrorInfo] {
    reason: "NO_DOCUMENTS"
    domain: "documentai.googleapis.com"
  }
}

הפרמטרים gcsUriPrefix ו-gcsOutputConfig.gcsUri צריכים להתחיל ב-gs:// ולהסתיים בתו נטוי הפוך (/). כדאי לבדוק את ההגדרה של כתובות ה-URI של דלי הנתונים.

לדוגמה: gs://bucket/directory/

אין תמיכה בהדרכה

כשמבצעים בקשה לאימון גרסת מעבד מסוג מעבד שלא תומך באימון.

message: "Training is not supported on processor type: ${DOCUMENT_TYPE}_PROCESSOR."

לא נבחרו מסמכים

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

message: No documents selected. Please select at least one document."
details {
  [type.googleapis.com/google.rpc.ErrorInfo] {
    reason: "NO_DOCUMENTS_SELECTED"
    domain: "documentai.googleapis.com"
  }
}

לא נמצא סוג המסמך

כשהסיווג של מסמך (כמו רישיון, דרכון או חשבונית) לא תואם לסיווג שנדרש לסוג המעבד. דוגמה לכך היא כששלב הסיווג במנתח W2 לא מוצא רכיבים מחשבונית.

יכול להיות שההגדרה הזו תופיע גם כCouldn't preview the document: Unable to find a document of type: 'foo' במסוף Google Cloud . הודעת השגיאה הזו רלוונטית למעבדים מדור קודם.

message: "Unable to find a document of type: 'foo'"
details {
  [type.googleapis.com/google.rpc.ErrorInfo] {
    reason: "DOCUMENT_OF_TYPE_NOT_FOUND"
    domain: "documentai.googleapis.com"