DE EN EN (Google)

Auto Keyworder

Please note: This Plugin is licensed as a separate Module. Please check you license contract.

The Auto Keyworder Plugin is a process (background) plugin which periodically posts image data of objects to online AI services to detect the image content, and update objects with auto generated keywords and subjects.

Currently, wrappers for the following AI services are implemented:

Homepage External API Documentation
Cloudsight https://cloudsight.ai https://cloudsight.docs.apiary.io
DeepVA https://deepva.ai https://docs.deepva.com
Imagga https://imagga.com https://docs.imagga.com

Base Configuration

All AI services are configured in the base config in the ‘Auto Keyworder’ tab.

The Plugin checks the base config for changes with a delay baseconfig_poll_interval_sec after any currently running worker has finished.

Configuration Mandatory Default Description
Service active yes False Enable/disable the complete Auto-Keyworder process
Start update process after saving False
  • Enable this to ignore the calculated next run time of the workers. Instead, start as soon as possible after the base configuration was saved
  • Internal representation: value start_now, which can also be set by an API call (see Plugin API)
  • This value is not persistent but only valid once. Every time it is set to True, the plugin sets this value to False after it is read
  • This checkbox will still be enabled after saving until the base config is reloaded in the frontend
easydb API user

easydb API user password
yes
  • Login and password of a special user which can perform searches and object updates in easydb
  • This plugin uses the easydb API endpoints /api/v1/search, /api/v1/db and /api/v1/event
  • The user needs at least the following rights on objecttypes (or pools respectively):
    • write right on all objecttypes that are configured for updating
    • mask right on a mask that allows editing of all fields that are updated
    • asset_show right on the selected asset fields, so the plugin can transfer the image data to the AI service
    • bag_read on the pool if the objects are pool managed
    • if the keywords are stored in linked objects, the user needs the following rights on the linked objecttype(s):
      • read to be able to search for existing linked objects
      • mask right on a mask that allows reading and writing the value of the keyword text field
      • create right to be able to create new linked objects
Status request repitions yes 3 maximum number of requests of the status of the analyzing of an image before the keywording for the image is discarded
Status request delay yes 5 minimum delay in seconds between repeated status requests for an image

Configurations for each service

Configurations for different services and objecttype setups are saved in multiple configuration blocks. These settings are the same for all services, but each service has more different settings.

Configuration Mandatory Default Description
Enable this configuration yes False Enable/disable this configuration block
Name of this configuration To help debugging, you can give a specific name for this configuration
API URL yes
  • The base URL of the API of the service
  • It should not be different from the default URL that is given
  • If there should be another URL for this service, there might also be other breaking changes in the API and this service might not work at all!
API Key Depending on the API, this can be mandatory The API Key for the service provider
Objecttype yes
  • Objecttype for updating keywords
  • Only objecttypes with the following requirements can be selected:
    • At least one asset (image)
    • At least one text field (on top level, in a nested table or in a linked object in a nested table) where the generated keywords are saved
    • At least one datetime field where the timestamp of the last successful update of the object is saved
  • Tag management should be activated if a tag filter is used (see below)
Asset field yes
  • Asset field from which the image is taken and uploaded
  • Please note: it is important that this field is enabled for the expert search in the standard mask
Asset version yes original
  • Asset Version that is uploaded, can be any existing version, but needs to be a valid image format
  • a minimum size per side is recommended, smaller images can cause errors in detection due to lower resolution, so the “preview” or “small” version should be avoided
  • Please note: the asset versions are protected under rights management. Make sure that the plugin user has at least read rights on the selected asset version. Otherwise, the plugin can not upload the asset in this version to the service provider
Target field for timestamp yes
  • Must be a datetime field to store a complete timestamp
  • After a object was successfully updated, the timestamp is saved in this field
  • Only objects are searched where this field is unset, or where the timestamp is older than the specified max age (see below)
  • Please note: it is important that this field is enabled for the expert search in the standard mask
Tagfilter to mark objects for auto keyword generation optional but recommended
  • Define a tag filter to mark objects that should be updated
  • Only objects are searched where the specfified tags are set / unset respectively
Minimal age since the last keyword generating yes 7
  • Time since this object was last updated, in days
  • Only objects are searched where the timestamp field is unset, or where the timestamp is older than this age
  • If you want to overwrite data in objects that were updated too recently, you have to delete this timestamp in the objects

Configurations for different services

Configurations for Cloudsight

Configuration Mandatory Default Description
Target field for image subject Text field where the image subject is saved
Target fields for keywords:
  • similar objects
  • category
  • quantity
  • gender
  • material
  • color
  • Fields where different parts of structured output from responses from the Cloudsight API are saved
  • If any of these structured outputs is present in the response, these special fields are filled
  • If the field is in a nested table, each keyword is saved in a new row, else the keywords are comma separated
  • If the field is a multi language field, the keywords are saved for the specified language (see below)
  • If the field is in a linked object, the plugin searches if a linked object with the keyword already exisits, else a new object is created before linking it to the updated object
Language english
  • Language in which the keywords are requested
  • The language parameter is sent via the API
  • The subject (name) of the analyzed image is returned in this language
  • The keywords are returned in the language that is configured in the Cloudsight project for the given API key. This configuration is separate and independant from easydb5!.
  • For best results, the language in which the Cloudsight project is configured should be selected, so that the keywords and the subject are saved in the same language
  • The following languages are available:
    • german: de-DE
    • english: en-US
    • spanish: es-ES
    • italian: it-IT
    • arabic: ar
    • czech: cs-CZ
    • farsi (persian): fa
    • french: fr-FR
    • japanese: ja-Jpan
    • georgian: ka-GE
    • korean: ko-Kore
    • dutch: nl-NL
    • polish: pl-PL
    • russian: ru-RU
    • chinese: zh-Hans

Configurations for DeepVA

Configuration Mandatory Default Description
Target field
  • Field where labels from responses from the DeepVA API are saved
  • If the field is in a nested table, each keyword is saved in a new row, else the keywords are comma separated
  • If the field is a multi language field, the keywords are saved in the default response language (en-US)
  • If the field is in a linked object, the plugin searches if a linked object with the keyword already exisits, else a new object is created before linking it to the updated object
Maximum number of keywords 5 If there are more labels in the response, only use the first n labels
Modules and Models
  • DeepVA offers different pre-trained models to label images
  • At least one module and model must be specified
  • All models and modules are applied to an uploaded image
  • Use this to control the content of the labels
  • Different models are pre-trained for different purposes, make sure to choose the correct models depending on the expected content of the images!
  • Please refer to the external documentation: https://docs.deepva.com/core-resources/model/#pre-trained-models

Configurations for Imagga

Configuration Mandatory Default Description
API Secret yes Additionaly to the API Key, the Imagga API also requires an API Secret
Target field
  • Field where tags from responses from the Imagga API are saved
  • If the field is in a nested table, each keyword is saved in a new row, else the keywords are comma separated
  • If the field is a multi language field, the keywords are saved for the specified language (see below)
  • If the field is in a linked object, the plugin searches if a linked object with the keyword already exisits, else a new object is created before linking it to the updated object
Maximum number of keywords 5 If there are more labels in the response, only use the first n labels
Minimum Confidence yes 75
  • The API returns a confidence value for each keyword (percentage: 1 - 100)
  • Keywords which do not reach this confidence value are ignored.
Language english
  • Language in which the keywords are requested
  • The language parameter is sent via the API
  • The tags of the analyzed image are returned in this language
  • The following languages are available:
    • english: en-US
    • german: de-DE
    • arabic: ar
    • catalan: ca
    • czech: cs-CZ
    • spanish: es-ES
    • farsi (persian): fa
    • finnish: fi-FI
    • french: fr-FR
    • hebrew: he
    • hindi: hi
    • italian: it-IT
    • japanese: ja-Jpan
    • korean: ko-Kore
    • dutch: nl-NL
    • polish: pl-PL
    • portuguese: pt
    • russian: ru-RU
    • swedish: sv-SE
    • turkish: tr-TR
    • ukrainian: uk
    • urdu: ur
    • chinese simplified: zh-Hans
    • chinese traditional: zh-Hant