Perceptron Vision SDK

VerifiedCaution

Image and video analysis powered by Isaac vision models for tasks like Q&A, detection, OCR, captioning, and counting.

Sby Skills Guide Bot
Data & AIIntermediate
7/22/2026
Claude CodeCodexCursor
#vision#image-analysis#ocr#object-detection#python-sdk

Recommended for

Automated summary

This skill provides the Perceptron Python SDK for analyzing images and videos through Isaac vision models: visual Q&A, object detection, OCR, captioning, and grounded spatial reasoning.

Strengths

  • Covers a wide range of vision tasks (Q&A, detection, OCR, counting, captioning) through one consistent interface
  • Accepts file paths or URLs directly, with base64 conversion handled automatically
  • Structured outputs via Pydantic, JSON schemas, or regex, plus conversion of normalized coordinates to pixels
  • Advanced DSL composition with @perceive for custom multimodal workflows

Limitations

  • Requires a PERCEPTRON_API_KEY and access to the hosted Perceptron service
  • Analysis only: it does not generate images
  • Object detection depends on classes the user explicitly provides
When to use it

Use it when you need to query, detect, OCR, or describe the contents of images or videos inside a Python script.

When not to use it

Do not use it to generate or edit images, or when no access to the Perceptron service is available.

Security analysis

Caution
Quality score88/100

The skill provides a legitimate image and video analysis SDK with no destructive or clearly malicious instructions. However, it uses network calls to an external API, shell commands, and installs a third-party package, which warrant caution rather than a completely safe rating.

Findings
  • •Instructs installing a third-party Python package via pip, introducing supply-chain risk.
  • •Sends image and video data to an external Perceptron API, which may expose sensitive visual information.
  • •Requires an API key environment variable, creating risk of accidental exposure if mishandled.
  • •Uses shell commands including ffmpeg for video frame extraction.
How this analysis is made

Examples

Visual Q&A on a photo
Use the perceptron skill to ask 'What is happening in this image?' about photo.jpg and print the answer.
Grounded object detection
Detect all forklifts and people in warehouse.jpg with perceptron and print their bounding boxes in pixel coordinates for a 1920x1080 image.
Structured OCR extraction
Run OCR on receipt.jpg with perceptron and extract the total amount as text.

name: perceptron description: "Image and video analysis powered by Isaac vision models. Capabilities include visual Q&A, object detection, OCR, captioning, counting, and grounded spatial reasoning with bounding boxes, points, and polygons. Supports streaming, structured outputs, DSL composition, and in-context learning. NOT for: generating images (analysis only)."

Perceptron — Vision SDK

Docs: https://docs.perceptron.inc/

Image and video analysis via the Perceptron Python SDK. Pass file paths or URLs directly — the SDK handles base64 conversion automatically.

Setup

pip install perceptron
export PERCEPTRON_API_KEY=ak_...

Quick Reference

| Task | Function | Example | |------|----------|---------| | Describe / Q&A | question() | question("photo.jpg", "What's in this image?") | | Grounded Q&A | question() | question("photo.jpg", "Where is the cat?", expects="box") | | Object detection | detect() | detect("photo.jpg", classes=["person", "car"]) | | OCR | ocr() | ocr("document.png") | | OCR (markdown) | ocr_markdown() | ocr_markdown("document.png") | | Caption | caption() | caption("photo.jpg", style="detailed") | | Counting | question() | question("photo.jpg", "How many dogs?", expects="point") | | Custom workflow | @perceive | See DSL composition below |

Python SDK

from perceptron import configure, detect, caption, ocr, ocr_markdown, question

# Configuration (or set PERCEPTRON_API_KEY env var)
configure(provider="perceptron", api_key="ak_...")

# Visual Q&A — the most common operation
result = question("photo.jpg", "What's happening in this image?")
print(result.text)

# Grounded Q&A — get bounding boxes with answers
result = question("photo.jpg", "Where is the damage?", expects="box")
for box in result.points or []:
    print(f"{box.mention}: ({box.top_left.x},{box.top_left.y}) → ({box.bottom_right.x},{box.bottom_right.y})")

# Object detection
result = detect("warehouse.jpg", classes=["forklift", "person"])
for box in result.points or []:
    print(f"{box.mention}: ({box.top_left.x},{box.top_left.y}) → ({box.bottom_right.x},{box.bottom_right.y})")

# OCR
result = ocr("receipt.jpg", prompt="Extract the total amount")
print(result.text)

result = ocr_markdown("document.png")  # structured markdown output
print(result.text)

# Captioning
result = caption("scene.png", style="detailed")
print(result.text)

DSL Composition (Advanced)

Build custom multimodal workflows:

from perceptron import perceive, image, text, system

@perceive(expects="box", model="isaac-0.2-2b-preview")
def find_hazards(img_path):
    return [system("<hint>BOX</hint>"), image(img_path), text("Locate all safety hazards")]

result = find_hazards("factory.jpg")

Structured Outputs

Constrain responses to Pydantic models, JSON schemas, or regex:

from perceptron import perceive, image, text, pydantic_format
from pydantic import BaseModel

class Scene(BaseModel):
    objects: list[str]
    count: int

@perceive(response_format=pydantic_format(Scene))
def count_objects(path):
    return image(path) + text("List all objects and count them. Return JSON.")

result = count_objects("photo.jpg")
scene = Scene.model_validate_json(result.text)

Pixel Coordinate Conversion

All spatial outputs use normalized coordinates (0–1000). Convert to pixels:

pixel_boxes = result.points_to_pixels(width=1920, height=1080)

# Or standalone:
from perceptron import scale_points_to_pixels
pixel_pts = scale_points_to_pixels(result.points, width=1920, height=1080)

CLI Script

Located at: <skill-dir>/scripts/perceptron_cli.py

Requires PERCEPTRON_API_KEY environment variable. The provider is always perceptron.

P=<skill-dir>/scripts/perceptron_cli.py

# Visual Q&A
python3 $P question photo.jpg "What do you see?"
python3 $P question photo.jpg "Where is the car?" --expects box

# Object detection
python3 $P detect photo.jpg --classes person,car
python3 $P detect photo.jpg --classes forklift --format json --pixels
python3 $P detect ./frames/ --classes defect  # batch directory

# OCR
python3 $P ocr document.png
python3 $P ocr receipt.jpg --output markdown

# Captioning
python3 $P caption scene.png --style detailed

# Custom perceive
python3 $P perceive frame.png --prompt "Describe this scene" --expects box

# Batch processing
python3 $P batch --images img1.jpg img2.jpg --prompt "Describe" --output results.json

# Parse raw model output
python3 $P parse "<point_box ...>" --mode points

# List models
python3 $P models

Models

| Model | Best for | Speed | Temp | |-------|----------|-------|------| | isaac-0.2-2b-preview (default) | General use, detection, OCR | Fast | 0.0 | | isaac-0.2-1b | Quick/simple tasks | Fastest | 0.0 |

Override with model="..." in any SDK call or --model ... in CLI.

Grounding (expects parameter)

| Value | Returns | Use case | |-------|---------|----------| | text (default) | Plain text | Q&A, descriptions, OCR | | box | Bounding boxes | Detection, localization | | point | Point coordinates | Counting, pointing | | polygon | Polygon vertices | Segmentation |

Video Analysis

Extract frames with ffmpeg, then analyze:

# Single frame at 5 seconds
ffmpeg -ss 5 -i video.mp4 -frames:v 1 -q:v 2 /tmp/frame.jpg

# Then analyze
python3 $P question /tmp/frame.jpg "What's happening?"

For continuous monitoring, extract multiple frames and batch process.

Reference Files

For deeper SDK usage, consult these when needed:

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/perceptron-vision-sdk-mrwakfyp' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/perceptron-vision-sdk-mrwakfyp/download' --output '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md.part' && mv '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md.part' '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Original excerpt: Setup
pip install perceptron
export PERCEPTRON_API_KEY=ak_...

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md' && test -s '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/perceptron' && cp -R '.skill-downloads/perceptron-vision-sdk-mrwakfyp' '.claude/skills/perceptron'

Cursor
test -f '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md' && test -s '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/perceptron' && cp -R '.skill-downloads/perceptron-vision-sdk-mrwakfyp' '.cursor/skills/perceptron'

Codex
test -f '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md' && test -s '.skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/perceptron' && cp -R '.skill-downloads/perceptron-vision-sdk-mrwakfyp' '.agents/skills/perceptron'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/perceptron-vision-sdk-mrwakfyp'

openskills read 'perceptron-vision-sdk-mrwakfyp'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/perceptron-vision-sdk-mrwakfyp/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills