The Google Cloud Storage URI of the input csv file.
The URI must start with gs://.
The format of the input csv file should be one image per line.
In each line, there are 8 columns.
image-uri
image-id
product-set-id
product-id
product-category
product-display-name
labels
bounding-poly
The image-uri, product-set-id, product-id, and product-category
columns are required. All other columns are optional.
If the ProductSet or Product specified by the product-set-id and
product-id values does not exist, then the system will create a new
ProductSet or Product for the image. In this case, the
product-display-name column refers to
[display_name][google.cloud.vision.v1.Product.display_name], the
product-category column refers to
[product_category][google.cloud.vision.v1.Product.product_category], and
the labels column refers to
[product_labels][google.cloud.vision.v1.Product.product_labels].
The image-id column is optional but must be unique if provided. If it is
empty, the system will automatically assign a unique id to the image.
The product-display-name column is optional. If it is empty, the system
sets the [display_name][google.cloud.vision.v1.Product.display_name] field
for the product to a space (" "). You can update the display_name later
by using the API.
If a Product with the specified product-id already exists, then the
system ignores the product-display-name, product-category, and labels
columns.
The labels column (optional) is a line containing a list of
comma-separated key-value pairs, in the following format:
"key_1=value_1,key_2=value_2,...,key_n=value_n"
The bounding-poly column (optional) identifies one region of
interest from the image in the same manner as CreateReferenceImage. If
you do not specify the bounding-poly column, then the system will try to
detect regions of interest automatically.
At most one bounding-poly column is allowed per line. If the image
contains multiple regions of interest, add a line to the CSV file that
includes the same product information, and the bounding-poly values for
each region of interest.
The bounding-poly column must contain an even number of comma-separated
numbers, in the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Use
non-negative integers for absolute bounding polygons, and float values
in [0, 1] for normalized bounding polygons.
The system will resize the image if the image resolution is too
large to process (larger than 20MP).
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eImportProductSetsGcsSource\u003c/code\u003e class, part of the Google Cloud Vision v1 API, facilitates importing product sets from a Google Cloud Storage CSV file.\u003c/p\u003e\n"],["\u003cp\u003eThis class implements several interfaces including \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, which give it various methods for data handling and object comparison.\u003c/p\u003e\n"],["\u003cp\u003eThe CSV file must follow a specific format with columns for image URI, image ID, product set ID, product ID, product category, product display name, labels, and bounding polygon, and each line represents an image.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eCsvFileUri\u003c/code\u003e property specifies the Google Cloud Storage URI of the input CSV file, which is required to begin with \u003ccode\u003egs://\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of this function, version 3.7.0, is available, along with ten other earlier versions available for reference, down to version 2.3.0.\u003c/p\u003e\n"]]],[],null,["# Google Cloud Vision v1 API - Class ImportProductSetsGcsSource (3.7.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.7.0 (latest)](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.6.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.6.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.5.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.5.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.4.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.4.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.3.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.3.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.2.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.2.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.1.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.1.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [3.0.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/3.0.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/2.5.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/2.4.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.Vision.V1/2.3.0/Google.Cloud.Vision.V1.ImportProductSetsGcsSource) \n\n public sealed class ImportProductSetsGcsSource : IMessage\u003cImportProductSetsGcsSource\u003e, IEquatable\u003cImportProductSetsGcsSource\u003e, IDeepCloneable\u003cImportProductSetsGcsSource\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Google Cloud Vision v1 API class ImportProductSetsGcsSource.\n\nThe Google Cloud Storage location for a csv file which preserves a list of\nImportProductSetRequests in each line. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e ImportProductSetsGcsSource \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[ImportProductSetsGcsSource](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ImportProductSetsGcsSource), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[ImportProductSetsGcsSource](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ImportProductSetsGcsSource), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[ImportProductSetsGcsSource](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1.ImportProductSetsGcsSource), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.Vision.V1](/dotnet/docs/reference/Google.Cloud.Vision.V1/latest/Google.Cloud.Vision.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.Vision.V1.dll\n\nConstructors\n------------\n\n### ImportProductSetsGcsSource()\n\n public ImportProductSetsGcsSource()\n\n### ImportProductSetsGcsSource(ImportProductSetsGcsSource)\n\n public ImportProductSetsGcsSource(ImportProductSetsGcsSource other)\n\nProperties\n----------\n\n### CsvFileUri\n\n public string CsvFileUri { get; set; }\n\nThe Google Cloud Storage URI of the input csv file.\n\nThe URI must start with `gs://`.\n\nThe format of the input csv file should be one image per line.\nIn each line, there are 8 columns.\n\n1. image-uri\n2. image-id\n3. product-set-id\n4. product-id\n5. product-category\n6. product-display-name\n7. labels\n8. bounding-poly\n\nThe `image-uri`, `product-set-id`, `product-id`, and `product-category`\ncolumns are required. All other columns are optional.\n\nIf the `ProductSet` or `Product` specified by the `product-set-id` and\n`product-id` values does not exist, then the system will create a new\n`ProductSet` or `Product` for the image. In this case, the\n`product-display-name` column refers to\n\\[display_name\\]\\[google.cloud.vision.v1.Product.display_name\\], the\n`product-category` column refers to\n\\[product_category\\]\\[google.cloud.vision.v1.Product.product_category\\], and\nthe `labels` column refers to\n\\[product_labels\\]\\[google.cloud.vision.v1.Product.product_labels\\].\n\nThe `image-id` column is optional but must be unique if provided. If it is\nempty, the system will automatically assign a unique id to the image.\n\nThe `product-display-name` column is optional. If it is empty, the system\nsets the \\[display_name\\]\\[google.cloud.vision.v1.Product.display_name\\] field\nfor the product to a space (\" \"). You can update the `display_name` later\nby using the API.\n\nIf a `Product` with the specified `product-id` already exists, then the\nsystem ignores the `product-display-name`, `product-category`, and `labels`\ncolumns.\n\nThe `labels` column (optional) is a line containing a list of\ncomma-separated key-value pairs, in the following format: \n\n \"key_1=value_1,key_2=value_2,...,key_n=value_n\"\n\nThe `bounding-poly` column (optional) identifies one region of\ninterest from the image in the same manner as `CreateReferenceImage`. If\nyou do not specify the `bounding-poly` column, then the system will try to\ndetect regions of interest automatically.\n\nAt most one `bounding-poly` column is allowed per line. If the image\ncontains multiple regions of interest, add a line to the CSV file that\nincludes the same product information, and the `bounding-poly` values for\neach region of interest.\n\nThe `bounding-poly` column must contain an even number of comma-separated\nnumbers, in the format \"p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y\". Use\nnon-negative integers for absolute bounding polygons, and float values\nin \\[0, 1\\] for normalized bounding polygons.\n\nThe system will resize the image if the image resolution is too\nlarge to process (larger than 20MP)."]]