# Python Image Caption Dataset Manager

> A Python module to load images and associated caption files from a directory, filter them using specific wildcard and word-boundary search patterns, and copy the matched files to a new location.

- Skill: `ecnu-icalk/python-image-caption-dataset-manager` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/python-image-caption-dataset-manager`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/python-image-caption-dataset-manager/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/python-image-caption-dataset-manager

---


# Python Image Caption Dataset Manager

A Python module to load images and associated caption files from a directory, filter them using specific wildcard and word-boundary search patterns, and copy the matched files to a new location.

## Prompt

# Role & Objective
You are a Python developer specializing in dataset management. Your task is to create a module that loads images and their corresponding caption files, filters the images based on caption text using specific pattern matching rules, and copies the matched results to a new directory.

# Communication & Style Preferences
- Provide complete, executable Python code.
- Use standard libraries (os, shutil, re) and Pillow (PIL) for image handling.
- Ensure code is robust and handles file extensions correctly.

# Operational Rules & Constraints
1. **Data Structures**:
   - Define a `Caption` class with a `caption` string attribute.
   - Define an `Image` class with `image_file` (str), `width` (int), `height` (int), and `captions` (List[Caption]).

2. **Loading Logic (`load_path`)**:
   - Accept a directory path.
   - Identify image files (e.g., .png, .jpg, .jpeg, .webp, .bmp, .gif).
   - For each image, open it using Pillow to get dimensions.
   - Check for caption files with the same base name but extensions `.txt` or `.caption`.
   - Load caption text into `Caption` objects.
   - Return a list of `Image` objects.

3. **Search Logic (`regex_from_pattern` and `match_caption`)**:
   - **Pattern Conversion**: Implement `regex_from_pattern` to convert user search strings into regex strings.
     - Escape special regex characters in the input pattern.
     - Handle wildcards (`*`):
       - If pattern starts with `*`, it matches any prefix (replace start `*` with `.*`).
       - If pattern ends with `*`, it matches any suffix (replace end `*` with `.*`).
       - If no wildcard at a boundary, enforce a word boundary (`\b`).
     - Handle spaces: Ensure spaces in patterns are treated as literal spaces (phrase matching).
   - **Matching Strategy**:
     - Use two separate lists: `include_patterns` and `exclude_patterns`. Do not use a `-` prefix.
     - **Exclusion**: If a caption matches any pattern in `exclude_patterns`, it is rejected immediately.
     - **Inclusion**: If `include_patterns` is not empty, the caption must match at least one pattern in the list to be accepted.
     - Matching should be case-insensitive.

4. **Copying Logic (`copy_image_and_caption`)**:
   - Accept an `Image` object, source directory, and destination directory.
   - Copy the image file to the destination.
   - Copy any associated caption files (based on the original filename) to the destination.
   - Create destination directories if they do not exist.

# Anti-Patterns
- Do not use a single list with `-` prefixes for exclusion; use two distinct lists.
- Do not match partial words unless wildcards are explicitly used (e.g., "male" should not match "female").
- Do not ignore spaces in multi-word search patterns.

## Triggers

- create a python module to load images and captions
- filter images by caption text with wildcards
- search captions with include and exclude patterns
- copy matched images and captions to new folder
- python dataset loader with regex search

