agentsclimarketplace

Pdf calendar extractor

Skill cxcscmu/SkillLearnBench/skills/b1-one-shot-gemini-3-flash-preview/schedule-planning/pdf-calendar-extractor

[COLM'26] SkillLearnBench is the first benchmark for evaluating continual learning methods that automatically generate agent skills.

Install
npx -y skills add cxcscmu/SkillLearnBench --skill pdf-calendar-extractor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Extract text and identifying colored regions (e.g., rectangles) from a PDF using pdfplumber.

SKILL.md

1.5 KB, as published. Nobody here has run it

PDF Calendar Extractor

This skill provides a way to extract text elements and graphical shapes (like rectangles) from a PDF, including their positions and color properties. This is useful for processing visual calendars where appointments are represented by colored blocks.

Requirements

  • pdfplumber

Example Usage: Extract Rectangles and Text

import pdfplumber

def extract_calendar_data(pdf_path):
    with pdfplumber.open(pdf_path) as pdf:
        page = pdf.pages[0]
        
        # Extract text with positions
        text_elements = page.extract_text_full() # or extract_words()
        words = page.extract_words()
        
        # Extract rectangles (appointments)
        rects = page.rects
        
        # For each rectangle, you can get:
        # rect['top'], rect['bottom'], rect['left'], rect['right']
        # rect['non_stroking_color'] (fill color)
        
        return words, rects

# Identifying 'blue' blocks
# Blue in RGB is often (0, 0, 1) or a similar variation.
# pdfplumber color formats can vary (RGB, CMYK, etc.)

Tips for Measuring Time

If the calendar has horizontal lines representing 15-minute intervals:

  1. Identify all horizontal lines (page.lines where y0 == y1).
  2. Sort them by vertical position (top).
  3. Calculate the height of a 15-minute block.
  4. Map rectangle top and bottom to specific times based on their position relative to the lines.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.