מדריך למתחילים

במדריך הזה מפורטים כל השלבים להגדרה ולשימוש ב-Document AI Warehouse.

היכרות עם מסוף Google Cloud

מסוף Google Cloud console הוא ממשק משתמש לדפדפן שבאמצעותו מקצים, מגדירים, מנהלים ומנטרים את המערכות שמשתמשות במוצרי Google Cloud . בעזרת מסוףGoogle Cloud אפשר להגדיר ולנהל משאבים ב-Document AI Warehouse.

יצירת פרויקט

כדי להשתמש בשירותי Google Cloud, אתם צריכים ליצור פרויקט.

בפרויקט מאורגנים כל המשאבים שלכם ב- Google Cloud . פרויקט מורכב מהרכיבים הבאים:

  • קבוצה של שותפי עריכה
  • ממשקי API מופעלים (ומשאבים אחרים)
  • כלי מעקב
  • פרטי חיוב
  • אימות ובקרות גישה

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

בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

תפקידים שנדרשים כדי לבחור או ליצור פרויקט

  • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
  • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים

כניסה לדף לבחירת הפרויקט

הפעלת החיוב

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

מוודאים שהחיוב מופעל בפרויקט Google Cloud .

הקצאה והפעלה של השירות

לפני שמשתמשים ב-Document AI Warehouse בפעם הראשונה, צריך להקצות משאבים שמשויכים לפרויקט ולהפעיל אותם בדף ההקצאה של Document AI Warehouse.

כדי להקצות את המשאבים, צריך לקבל את התפקידים אדמין של Content Warehouse ואדמין של Service Usage בפרויקט.

שלבי הקצאת ההרשאות

  1. בוחרים אזור.

    בדף ההקצאה, בוחרים את האזור שרוצים להפעיל.

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

  2. מפעילים את ה-API הראשי. {:#enable-core-api}:

    לוחצים על Enable. כך מפעילים את ממשקי Document AI Warehouse API בפרויקט.

    אחרי הפעלת ה-API, לוחצים על הבא.

  3. מקצים את המופע.

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

    1. בוחרים מצב של בקרת גישה (ACL).

      • [מומלץ] בקרת גישה ברמת המסמך עם משתמשים ב-Cloud Identity.

        ההגדרה הזו רלוונטית אם הארגון שלכם מנהל משתמשים או קבוצות בשירות Cloud Identity.

      • בקרת גישה ברמת המסמך באמצעות משתמשים בבקרת גישה לשירות Bring-your-own Identity.

        אם אי אפשר להוסיף או לסנכרן את המשתמשים עם Cloud Identity, צריך להשתמש במצב הזה. עם זאת:

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

        • ממשק Document AI Warehouse תומך במצב הזה לצורך אימות משתמשים.
        • בדרך כלל משתמשים במצב הזה כדי להעניק גישה למשתמשים ציבוריים בלי לדרוש אימות.
        • פורטלים בהתאמה אישית יכולים לגשת לכל המסמכים באמצעות חשבון שירות עם התפקיד הרצוי (למשל, התפקיד 'צפייה במסמך') ולהעביר את הגישה הזו למשתמשים ציבוריים ללא אימות.
      בקרת גישה ברמת המסמך עם משתמשים ב-Cloud Identity בקרת גישה ברמת המסמך עם משתמשים בבקרת גישה לשירות Bring-your-own Identity גישה אוניברסלית
      גישה ברמת המסמך כן כן לא
      תמיכה בממשק המשתמש של Document AI Warehouse כן לא כן (אם למשתמשים יש גישה ברמת הפרויקט)

    2. הפעלת שאלות ותשובות:

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

  4. הפעלת הקצאת הרשאות:

    לוחצים על Provision (הקצאת הרשאות) כדי להתחיל בהקצאת הרשאות לפרויקט. יעבור זמן מה (3-5 דקות) עד שהמופע יוגדר.

  5. יוצרים סכימה שמוגדרת כברירת מחדל.

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

  6. צפייה במופע:

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

    אם אתם נמצאים ברשימת ההיתרים לתכונות בממשק המשתמש של Google Cloud המסוף, אתם יכולים ללחוץ על תחילת העבודה כדי להתחיל להשתמש ב-Document AI Warehouse במסוף Google Cloud .

    אם אתם לא ברשימת ההיתרים לשימוש בתכונות של ממשק המשתמש של המסוף, אתם יכולים להמשיך להגדרת אפליקציית האינטרנט כדי ללמוד איך להגדיר את אפליקציית האינטרנט של Document AI Warehouse. Google Cloud

  7. מגדירים את ההרשאות הנדרשות ב-IAM למשתמשים. אם מופעלת בקרת גישה ברמת המסמך, נדרשות הרשאות ברמת הפרויקט והרשאות IAM. מידע נוסף מפורט בקטע הרשאות נדרשות.

הגדרת הרשאות ברמת הפרויקט

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

כדי לעשות את זה, בתצוגה הסופית אחרי הקצאת ההרשאות, עוברים אל Project Permissions (הרשאות בפרויקט):

כדי להוסיף את חשבון האדמין כאדמין מסמכים, פועלים לפי השלבים הבאים:

  1. לוחצים על הוספת משתמש.

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

  3. משתמשים אחרים אפשר להוסיף בתור:

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

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

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

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

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

ההרשאות הנדרשות

ב-Document AI Warehouse יש מערכת ACL עצמאית בנוסף ל-IAM. בפרויקטים עם רשימות ACL ברמת המסמך, צריך לקבל הרשאות נוספות ברמת הפרויקט במערכת ה-ACL של Document AI Warehouse. בפרויקטים עם גישה אוניברסלית, נדרשות רק הרשאות IAM.

בטבלאות הבאות מפורטות ההרשאות הנדרשות:

פרויקטים של ACL של מסמכים

סוג משתמש תפקיד IAM הרשאות ברמת הפרויקט ב-Document AI Warehouse
משתמשים עם הרשאת אדמין אדמין של מחסן תוכן אדמין של מסמכים
משתמשים רגילים Content Warehouse document Schema Viewer יוצר/עורך/צופה במסמך, בהתאם להרשאות הרצויות

פרויקטים של גישה אוניברסלית

סוג משתמש תפקיד IAM
משתמשים עם הרשאת אדמין 1. אדמין ב-Content Warehouse
2. אדמין של מסמכים ב-Content Warehouse
משתמשים רגילים 1. צפייה בסכימת מסמך במחסן התוכן
2. יוצר/צופה/עורך מסמכים ב-Content Warehouse, בהתאם להרשאות הרצויות
תפקידי IAM בפרויקטים עם גישה אוניברסלית
שם התפקיד שם התפקיד מטרה
יוצר מסמכים ב-Content Warehouse contentwarehouse.documentCreator יצירת מסמכים
צפייה במסמכים ב-Content Warehouse contentwarehouse.documentViewer צפייה במסמכים
עורך המסמכים של Content Warehouse contentwarehouse.documentEditor עריכה של מסמכים (לא כולל יצירה ומחיקה)
אדמין של מסמכים ב-Content Warehouse contentwarehouse.documentAdmin ניהול של כל המסמכים (כולל יצירה ומחיקה)
אדמין של מחסן תוכן contentwarehouse.admin ניהול מסמכים, סכימות וכללים

פרטים נוספים זמינים במאמר תפקידים והרשאות ב-IAM.

הגדרת אסימון הגישה (לקריאה ל-API משורת הפקודה)

כדי להתקשר אל Document AI Warehouse API באמצעות כלי שורת פקודה, פועלים לפי השלבים הבאים.

משתמשים בקובץ המפתח של חשבון השירות בסביבה הרצויה

התקנה והפעלה של Google Cloud CLI (אופציונלי)

ה-CLI של gcloud הוא קבוצת כלים שבעזרתם אפשר לנהל משאבים ואפליקציות שמתארחים ב- Google Cloud.

אתם יכולים להיעזר בהוראות שבקישורים האלה:

התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

gcloud init

אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

יצירת אסימון הגישה

אם הגדרתם אימות בשלבים הקודמים, תוכלו להשתמש ב-Google Cloud CLI כדי לבדוק את סביבת האימות. מריצים את הפקודה הבאה ומוודאים שאין שגיאות ושפרטי הכניסה מוחזרים:

AUTH_TOKEN=$(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/cloud-platform)

המשתנה AUTH_TOKEN מוגדר, לדוגמה:

$ echo $AUTH_TOKEN
ya29.c.b0AXv0zTPvXmEMZXCe781qL0Y3r1EKnw3k4DJcoWGZkyWKx-nMNVQVErQ3ge6XA2RXsTU1tf_SMLgeWC6xwS51tP8QZhbypuGczBzMgKWYExwATHt3Vn553edl8tmqCMjROgdQjCDd8i7as-236r4d8gNwKsR192gNgNw_0zzs0MPyNVmqydpfmpj8yBwJI5QWna1331GTGKgd3Ia16fTzAHrZC_GkcO0wJPo....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

בדיקת הקריאה ל-Document AI Warehouse API

הפקודה AUTH_TOKEN משמשת כדי לאמת שליחת קריאות ל-API בכל הדוגמאות לשליחת קריאה ל-Document AI Warehouse API באמצעות שורות הפקודה ב-REST. לדוגמה, הפקודה הבאה מאחזרת את כל סכימות המסמכים שהגדרתם שמשויכות לפרויקט שלכם (ברוב המקרים, משתמשים ב-'us' כמיקום):

  curl --header "Authorization: Bearer $AUTH_TOKEN" https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER>/locations/LOCATION/documentSchemas

דוגמאות קוד

Java

מידע נוסף מופיע במאמרי העזרה של Document AI Warehouse Java API.

כדי לבצע אימות ב-Document AI Warehouse, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

public class QuickStart {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String location = "your-region"; // Format is "us" or "eu".
    String userId = "your-user-id"; // Format is user:<user-id>
    quickStart(projectId, location, userId);
  }

  public static void quickStart(String projectId, String location, String userId)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    String projectNumber = getProjectNumber(projectId);

    String endpoint = "contentwarehouse.googleapis.com:443";
    if (!"us".equals(location)) {
      endpoint = String.format("%s-%s", location, endpoint);
    }
    DocumentSchemaServiceSettings documentSchemaServiceSettings = 
         DocumentSchemaServiceSettings.newBuilder().setEndpoint(endpoint).build(); 

    // Create a Schema Service client
    try (DocumentSchemaServiceClient documentSchemaServiceClient =
        DocumentSchemaServiceClient.create(documentSchemaServiceSettings)) {
      /*  The full resource name of the location, e.g.:
      projects/{project_number}/locations/{location} */
      String parent = LocationName.format(projectNumber, location);

      /* Create Document Schema with Text Type Property Definition
       * More detail on managing Document Schemas: 
       * https://cloud.google.com/document-warehouse/docs/manage-document-schemas */
      DocumentSchema documentSchema = DocumentSchema.newBuilder()
          .setDisplayName("My Test Schema")
          .setDescription("My Test Schema's Description")
          .addPropertyDefinitions(
            PropertyDefinition.newBuilder()
              .setName("test_symbol")
              .setDisplayName("Searchable text")
              .setIsSearchable(true)
              .setTextTypeOptions(TextTypeOptions.newBuilder().build())
              .build()).build();

      // Define Document Schema request
      CreateDocumentSchemaRequest createDocumentSchemaRequest =
          CreateDocumentSchemaRequest.newBuilder()
            .setParent(parent)
            .setDocumentSchema(documentSchema).build();

      // Create Document Schema
      DocumentSchema documentSchemaResponse =
          documentSchemaServiceClient.createDocumentSchema(createDocumentSchemaRequest); 


      // Create Document Service Client Settings
      DocumentServiceSettings documentServiceSettings = 
          DocumentServiceSettings.newBuilder().setEndpoint(endpoint).build();

      // Create Document Service Client and Document with relevant properties 
      try (DocumentServiceClient documentServiceClient =
          DocumentServiceClient.create(documentServiceSettings)) {
        TextArray textArray = TextArray.newBuilder().addValues("Test").build();
        Document document = Document.newBuilder()
              .setDisplayName("My Test Document")
              .setDocumentSchemaName(documentSchemaResponse.getName())
              .setPlainText("This is a sample of a document's text.")
              .addProperties(
                Property.newBuilder()
                  .setName(documentSchema.getPropertyDefinitions(0).getName())
                  .setTextValues(textArray)).build();

        // Define Request Metadata for enforcing access control
        RequestMetadata requestMetadata = RequestMetadata.newBuilder()
            .setUserInfo(
            UserInfo.newBuilder()
              .setId(userId).build()).build();

        // Define Create Document Request 
        CreateDocumentRequest createDocumentRequest = CreateDocumentRequest.newBuilder()
            .setParent(parent)
            .setDocument(document)
            .setRequestMetadata(requestMetadata)
            .build();

        // Create Document
        CreateDocumentResponse createDocumentResponse =
            documentServiceClient.createDocument(createDocumentRequest);

        System.out.println(createDocumentResponse.getDocument().getName());
        System.out.println(documentSchemaResponse.getName());
      }
    }
  }

  private static String getProjectNumber(String projectId) throws IOException { 
    try (ProjectsClient projectsClient = ProjectsClient.create()) { 
      ProjectName projectName = ProjectName.of(projectId); 
      Project project = projectsClient.getProject(projectName);
      String projectNumber = project.getName(); // Format returned is projects/xxxxxx
      return projectNumber.substring(projectNumber.lastIndexOf("/") + 1);
    } 
  }
}

Node.js

מידע נוסף מופיע במאמרי העזרה של Document AI Warehouse Node.js API.

כדי לבצע אימות ב-Document AI Warehouse, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 * const projectNumber = 'YOUR_PROJECT_NUMBER';
 * const location = 'YOUR_PROJECT_LOCATION'; // Format is 'us' or 'eu'
 * const userId = 'user:xxx@example.com'; // Format is "user:xxx@example.com"
 */

// Import from google cloud
const {DocumentSchemaServiceClient, DocumentServiceClient} =
  require('@google-cloud/contentwarehouse').v1;

const apiEndpoint =
  location === 'us'
    ? 'contentwarehouse.googleapis.com'
    : `${location}-contentwarehouse.googleapis.com`;

// Create service client
const schemaClient = new DocumentSchemaServiceClient({
  apiEndpoint: apiEndpoint,
});
const serviceClient = new DocumentServiceClient({apiEndpoint: apiEndpoint});

// Get Document Schema
async function quickstart() {
  // The full resource name of the location, e.g.:
  // projects/{project_number}/locations/{location}
  const parent = `projects/${projectNumber}/locations/${location}`;

  // Initialize request argument(s)
  const schemaRequest = {
    parent: parent,
    documentSchema: {
      displayName: 'My Test Schema',
      propertyDefinitions: [
        {
          name: 'testPropertyDefinitionName', // Must be unique within a document schema (case insensitive)
          displayName: 'searchable text',
          isSearchable: true,
          textTypeOptions: {},
        },
      ],
    },
  };

  // Create Document Schema
  const documentSchema =
    await schemaClient.createDocumentSchema(schemaRequest);

  const documentRequest = {
    parent: parent,
    document: {
      displayName: 'My Test Document',
      documentSchemaName: documentSchema[0].name,
      plainText: "This is a sample of a document's text.",
      properties: [
        {
          name: 'testPropertyDefinitionName',
          textValues: {values: ['GOOG']},
        },
      ],
    },
    requestMetadata: {userInfo: {id: userId}},
  };

  // Make Request
  const response = serviceClient.createDocument(documentRequest);

  // Print out response
  response.then(
    result => console.log(`Document Created: ${JSON.stringify(result)}`),
    error => console.log(`error: ${error}`)
  );
}

Python

מידע נוסף מופיע במאמרי העזרה של Document AI Warehouse Python API.

כדי לבצע אימות ב-Document AI Warehouse, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.


from google.cloud import contentwarehouse

# TODO(developer): Uncomment these variables before running the sample.
# project_number = 'YOUR_PROJECT_NUMBER'
# location = 'YOUR_PROJECT_LOCATION' # Format is 'us' or 'eu'
# user_id = "user:xxxx@example.com" # Format is "user:xxxx@example.com"


def quickstart(project_number: str, location: str, user_id: str) -> None:
    # Create a Schema Service client
    document_schema_client = contentwarehouse.DocumentSchemaServiceClient()

    # The full resource name of the location, e.g.:
    # projects/{project_number}/locations/{location}
    parent = document_schema_client.common_location_path(
        project=project_number, location=location
    )

    # Define Schema Property of Text Type
    property_definition = contentwarehouse.PropertyDefinition(
        name="stock_symbol",  # Must be unique within a document schema (case insensitive)
        display_name="Searchable text",
        is_searchable=True,
        text_type_options=contentwarehouse.TextTypeOptions(),
    )

    # Define Document Schema Request
    create_document_schema_request = contentwarehouse.CreateDocumentSchemaRequest(
        parent=parent,
        document_schema=contentwarehouse.DocumentSchema(
            display_name="My Test Schema",
            property_definitions=[property_definition],
        ),
    )

    # Create a Document schema
    document_schema = document_schema_client.create_document_schema(
        request=create_document_schema_request
    )

    # Create a Document Service client
    document_client = contentwarehouse.DocumentServiceClient()

    # The full resource name of the location, e.g.:
    # projects/{project_number}/locations/{location}
    parent = document_client.common_location_path(
        project=project_number, location=location
    )

    # Define Document Property Value
    document_property = contentwarehouse.Property(
        name=document_schema.property_definitions[0].name,
        text_values=contentwarehouse.TextArray(values=["GOOG"]),
    )

    # Define Document
    document = contentwarehouse.Document(
        display_name="My Test Document",
        document_schema_name=document_schema.name,
        plain_text="This is a sample of a document's text.",
        properties=[document_property],
    )

    # Define Request
    create_document_request = contentwarehouse.CreateDocumentRequest(
        parent=parent,
        document=document,
        request_metadata=contentwarehouse.RequestMetadata(
            user_info=contentwarehouse.UserInfo(id=user_id)
        ),
    )

    # Create a Document for the given schema
    response = document_client.create_document(request=create_document_request)

    # Read the output
    print(f"Rule Engine Output: {response.rule_engine_output}")
    print(f"Document Created: {response.document}")

השלבים הבאים