AutoSkill 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.
git clone https://github.com/ECNU-ICALK/AutoSkill
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/python-image-caption-dataset-manager" ~/.claude/skills/ecnu-icalk-autoskill-python-image-caption-dataset-manager && rm -rf "$T"
SkillBank/ConvSkill/english_gpt4_8_GLM4.7/python-image-caption-dataset-manager/SKILL.mdPython 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
-
Data Structures:
- Define a
class with aCaption
string attribute.caption - Define an
class withImage
(str),image_file
(int),width
(int), andheight
(List[Caption]).captions
- Define a
-
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
or.txt
..caption - Load caption text into
objects.Caption - Return a list of
objects.Image
-
Search Logic (
andregex_from_pattern
):match_caption- Pattern Conversion: Implement
to convert user search strings into regex strings.regex_from_pattern- 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
- If pattern starts with
- Handle spaces: Ensure spaces in patterns are treated as literal spaces (phrase matching).
- Matching Strategy:
- Use two separate lists:
andinclude_patterns
. Do not use aexclude_patterns
prefix.- - Exclusion: If a caption matches any pattern in
, it is rejected immediately.exclude_patterns - Inclusion: If
is not empty, the caption must match at least one pattern in the list to be accepted.include_patterns - Matching should be case-insensitive.
- Use two separate lists:
- Pattern Conversion: Implement
-
Copying Logic (
):copy_image_and_caption- Accept an
object, source directory, and destination directory.Image - 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.
- Accept an
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