> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/roboflow/roboflow-hi/datasets/adding-data/image-metadata.md).

# Image Metadata

मेटाडेटा आपको Roboflow workspace में images के साथ custom key-value pairs जोड़ने देता है। मेटाडेटा का उपयोग images के साथ structured जानकारी — जैसे capture conditions, device identifiers, quality scores, या किसी भी domain-specific attributes — सहेजने के लिए करें, और फिर उन attributes के आधार पर अपने डेटा को खोजें, filter करें, और व्यवस्थित करें।

## अवलोकन

प्रत्येक image में किसी भी संख्या में metadata entries हो सकती हैं। एक entry होती है एक **कुंजी** (जैसे नाम `camera_id`) के साथ **मान** (एक string, number, या boolean)।

| मान का प्रकार | उदाहरण                                      |
| ------------- | ------------------------------------------- |
| स्ट्रिंग      | `location: "warehouse-3"`, `shift: "night"` |
| संख्या        | `temperature: 72.5`, `quality_score: 95`    |
| बूलियन        | `reviewed: true`, `is_night: false`         |

### उपयोग के मामले

* **कैप्चर संदर्भ** — कैमरा ID, GPS निर्देशांक, मौसम, प्रकाश की स्थितियाँ रिकॉर्ड करें
* **गुणवत्ता ट्रैकिंग** — confidence scores, review status, annotator IDs संलग्न करें
* **डेटा slicing** — targeted training sets बनाने के लिए अपने dataset को किसी भी attribute के अनुसार filter करें
* **बाहरी सिस्टम linking** — ऐसे identifiers सहेजें जो images को आपके internal tools से वापस जोड़ते हैं

## मेटाडेटा जोड़ना

आप web UI, Python SDK, REST API के माध्यम से, या स्वचालित रूप से [S3 Bucket Mirror](/roboflow/roboflow-hi/datasets/adding-data/datasources.md).

{% hint style="info" %}
यदि आपकी images AWS S3 जैसी cloud storage में हैं, तो उपयोग करें [Datasources](/roboflow/roboflow-hi/datasets/adding-data/datasources.md) और Bucket Mirror, ताकि image files और metadata sidecars sync में रहें। Signed URL या manual uploads समान ongoing metadata sync behavior प्रदान नहीं करते।
{% endhint %}

### वेब एप्लिकेशन

{% stepper %}
{% step %}

#### एक image खोलें

अपने project में कोई भी image खोलें।
{% endstep %}

{% step %}

#### कुंजी और मान दर्ज करें

metadata सेक्शन में, एक **कुंजी** पहले input में और एक **मान** दूसरे input में दर्ज करें।
{% endstep %}

{% step %}

#### जोड़ें

दबाएँ **Enter** सेव करने के लिए या Add पर क्लिक करें
{% endstep %}
{% endstepper %}

मान प्रकार के अनुसार स्वतः parse किए जाते हैं:

| दर्ज किया गया मान | के रूप में संग्रहीत       |
| ----------------- | ------------------------- |
| `front`           | `"front"` (स्ट्रिंग)      |
| `95`              | `95` (संख्या)             |
| `3.14`            | `3.14` (संख्या)           |
| `true` / `false`  | `true` / `false` (बूलियन) |

<figure><img src="/files/20c2e467343d15272c18e021bf283815f4f4520b" alt=""><figcaption><p>Annotation Tool का metadata editor</p></figcaption></figure>

### Python SDK

पास करें एक `मेटाडेटा` डिक्शनरी जब image अपलोड कर रहे हों:

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace("your-workspace").project("your-project")

project.upload(
    image_path="image.jpg",
    metadata={
        "camera_id": "cam001",
        "location": "warehouse-3",
        "temperature": 72.5,
        "is_night": False
    }
)
```

पहले से अपलोड की जा चुकी image पर metadata अपडेट करने के लिए, उपयोग करें `rfapi` adapter सीधे। Values पास किए गए `मेटाडेटा` upsert किए जाते हैं: नई keys जोड़ी जाती हैं, मौजूदा keys ओवरराइट होती हैं।

```python
from roboflow.adapters import rfapi

rfapi.update_image_metadata(
    api_key="YOUR_API_KEY",
    workspace_url="your-workspace",
    image_id="IMAGE_ID",
    metadata={"quality_score": 95, "reviewed": True},
    remove_metadata=["old_key"],
    add_tags=["reviewed"],
    remove_tags=["pending"]
)
```

एक call में 1,000 तक images अपडेट करने के लिए, उपयोग करें `batch_update_image_metadata`. यह एक `taskId` लौटाता है, जिसे आप async tasks endpoint के माध्यम से poll कर सकते हैं:

```python
from roboflow.adapters import rfapi

result = rfapi.batch_update_image_metadata(
    api_key="YOUR_API_KEY",
    workspace_url="your-workspace",
    updates=[
        {"imageId": "img1", "metadata": {"batch": "june-2026"}, "addTags": ["processed"]},
        {"imageId": "img2", "metadata": {"batch": "june-2026"}, "addTags": ["processed"]}
    ]
)
print(result["taskId"])
```

### CLI

उपयोग करें `roboflow image metadata` कमांड का उपयोग करके मौजूदा images पर metadata और tags अपडेट करें:

```bash
# एक single image पर metadata सेट करें
roboflow image metadata <image_id> -m '{"camera_id": "cam001", "location": "warehouse-3"}'

# एक image में tags जोड़ें
roboflow image metadata <image_id> --tags "reviewed,v2"

# metadata keys हटाएँ
roboflow image metadata <image_id> --remove-metadata "old_key,deprecated_field"

# tags हटाएँ
roboflow image metadata <image_id> --remove-tags "draft"

# संयोजन: एक call में metadata सेट करें, tags जोड़ें, और tags हटाएँ
roboflow image metadata <image_id> -m '{"quality_score": 95}' --tags "reviewed" --remove-tags "pending"

# कई images का batch update (async)
roboflow image metadata img1,img2,img3 -m '{"batch": "june-2026"}' --tags "processed" --poll
```

एक single image ID सिंक्रोनस रूप से अपडेट होता है। Multiple comma-separated IDs (1,000 तक) batch async endpoint का उपयोग करते हैं। जोड़ें `--poll` batch समाप्त होने तक प्रतीक्षा करने के लिए; इसके बिना command एक `taskId` लौटाता है जिसे आप बाद में देख सकते हैं `roboflow asynctasks get <task-id>`.

| फ़्लैग                 | विवरण                                              |
| ---------------------- | -------------------------------------------------- |
| `-m`, `--metadata`     | सेट करने के लिए key-value pairs की JSON string     |
| `--remove-metadata`    | हटाने के लिए comma-separated metadata keys         |
| `--tags`               | जोड़ने के लिए comma-separated tags                 |
| `--remove-tags`        | हटाने के लिए comma-separated tags                  |
| `--poll` / `--no-poll` | batch completion का इंतज़ार करें (केवल batch mode) |
| `--timeout`            | सेकंड में polling timeout (default: 1800)          |

### REST API

#### अपलोड के दौरान metadata जोड़ें

एक `मेटाडेटा` फ़ील्ड (JSON-stringified) image अपलोड करते समय multipart form data में शामिल करें:

```bash
curl -X POST "https://api.roboflow.com/dataset/your-dataset/upload?api_key=YOUR_API_KEY" \
  -F "name=image.jpg" \
  -F "split=train" \
  -F "file=@image.jpg" \
  -F 'metadata={"camera_id":"cam001","temperature":72.5}'
```

#### मौजूदा image पर metadata अपडेट करें

अपने workspace में पहले से मौजूद image पर metadata सेट या overwrite करने, metadata keys हटाने, और tags जोड़ने/हटाने के लिए single-image endpoint का उपयोग करें। Values पास किए गए `मेटाडेटा` upsert किए जाते हैं (नई keys जोड़ी जाती हैं, मौजूदा keys ओवरराइट होती हैं); keys जो `removeMetadata` में सूचीबद्ध हैं, हटा दी जाती हैं।

```bash
curl -X POST "https://api.roboflow.com/your-workspace/images/IMAGE_ID/metadata?api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "metadata": {"quality_score": 95, "reviewed": true},
    "removeMetadata": ["old_key"],
    "addTags": ["reviewed"],
    "removeTags": ["pending"]
  }'
```

| फ़ील्ड           | प्रकार    | विवरण                                                                                     |
| ---------------- | --------- | ----------------------------------------------------------------------------------------- |
| `मेटाडेटा`       | object    | सेट करने के लिए key-value pairs। नई keys जोड़ता है, मौजूदा को overwrite करता है।          |
| `removeMetadata` | string\[] | हटाने के लिए metadata keys। एक key दोनों में नहीं हो सकती `मेटाडेटा` और `removeMetadata`. |
| `addTags`        | string\[] | जोड़ने के लिए tags।                                                                       |
| `removeTags`     | string\[] | हटाने के लिए tags। एक tag दोनों में नहीं हो सकता `addTags` और `removeTags`.               |

सभी fields वैकल्पिक हैं, लेकिन कम से कम एक मौजूद होना चाहिए। लौटाता है `200 { "success": true }`.

#### बैच metadata update (async)

एक call में 1,000 तक images अपडेट करने के लिए, `POST` workspace-level endpoint को updates का array भेजें:

```bash
curl -X POST "https://api.roboflow.com/your-workspace/images/metadata?api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "updates": [
      {"imageId": "img1", "metadata": {"batch": "june-2026"}, "addTags": ["processed"]},
      {"imageId": "img2", "metadata": {"batch": "june-2026"}, "addTags": ["processed"]}
    ]
  }'
```

लौटाता है `202 { "taskId": "...", "url": "..." }`. उसी `api_key` के साथ लौटाए गए URL को poll करें ताकि status देखें और per-item results प्राप्त करें:

```bash
curl "https://api.roboflow.com/your-workspace/asynctasks/TASK_ID?api_key=YOUR_API_KEY"
```

### S3 Bucket Mirror

जब उपयोग कर रहे हों [Datasources](/roboflow/roboflow-hi/datasets/adding-data/datasources.md) S3 bucket से images sync करने के लिए, metadata प्रत्येक image के साथ रखी गई JSON sidecar files के माध्यम से import किया जाता है। देखें [Datasources](/roboflow/roboflow-hi/datasets/adding-data/datasources.md) sidecar file format, constraints, और update strategies के लिए।

## metadata द्वारा खोज

metadata को index किया जाता है और [Asset Library](/roboflow/roboflow-hi/workspaces/asset-library.md)में searchable होता है। metadata values के आधार पर images filter करने के लिए search bar का उपयोग करें:

```
metadata:camera_id="cam001"
metadata:quality_score>80
metadata:reviewed=true
```

आप अन्य search filters के साथ metadata filters को मिला सकते हैं:

```
metadata:location="warehouse-3" AND class:forklift
```

Asset Library आपके workspace में मौजूद चीज़ों के आधार पर metadata keys और values के लिए autocomplete भी प्रदान करती है।

## कुंजी नामकरण नियम

metadata keys को इन नियमों का पालन करना होगा:

| नियम         | विवरण                                                                |
| ------------ | -------------------------------------------------------------------- |
| अनुमत वर्ण   | अक्षर (`a-z`, `A-Z`), संख्याएँ (`0-9`), अंडरस्कोर (`_`), डॉट्स (`.`) |
| पहला वर्ण    | अक्षर, संख्या, या underscore होना चाहिए                              |
| निषिद्ध वर्ण | फॉरवर्ड स्लैश (`/`) की अनुमति नहीं है                                |

मान्य keys: `camera_id`, `capture.temperature`, `_internal_ref`, `v2_score`

अमान्य keys: `camera/id` (शामिल करता है `/`), `.starts_with_dot` (से शुरू होता है `.`), `स्पेस हैं` (स्पेस शामिल हैं)

## Metadata बनाम Tags

Metadata और [tags](/roboflow/roboflow-hi/datasets/manage-datasets/add-tags-to-images.md) दोनों images को व्यवस्थित करने में मदद करते हैं, लेकिन वे अलग-अलग उद्देश्यों के लिए काम करते हैं:

|                      | Tags                                 | Metadata                                   |
| -------------------- | ------------------------------------ | ------------------------------------------ |
| **संरचना**           | सरल labels                           | key-value pairs                            |
| **मान**              | कोई मान नहीं, केवल एक नाम            | String, number, या boolean                 |
| **के लिए सर्वोत्तम** | वर्गीकरण, workflow status            | संरचित attributes, माप                     |
| **उदाहरण**           | `reviewed`, `v2`, `needs-annotation` | `temperature: 72.5`, `camera_id: "cam001"` |

आप एक ही image पर दोनों का उपयोग कर सकते हैं। उदाहरण के लिए, image को `reviewed` के रूप में टैग करें और साथ ही `reviewer: "alice"` और `confidence: 0.95` को metadata के रूप में संग्रहीत करें।
