Skip to main content
Pictograph

Pictograph

Label images, train vision models, run them anywhere.

PyPI Python License Docs

Docs · Quick start · API reference · App


Four ways in. Same API underneath, so you can move between them.

Python pip install pictograph, this repo
CLI pip install "pictograph[cli]" · reference
REST Any language, X-API-Key header · reference
Claude skill Let an agent drive it · guide

Quick start

pip install pictograph

Upload a directory, label it from a text prompt, train, predict.

from pictograph import AnnotateReport, Client, TrainingRun, UploadReport

client = Client()  # reads PICTOGRAPH_API_KEY

uploaded: UploadReport = client.images.upload_from_directory(
    dataset_name="road-signs",
    directory="./road_signs",
)
print(f"{uploaded.images_uploaded} images uploaded")

labelled: AnnotateReport = client.auto_annotate.dataset(
    dataset_name="road-signs",
    classes=[("stop_sign", "bbox"), ("yield", "bbox")],
)
print(f"{labelled.annotations_added} annotations added")

client.exports.create(
    dataset_name="road-signs",
    name="road-signs-v1",
    format="pictograph",
    include_images=True,
    wait=True,
)

run: TrainingRun = client.training.create(
    dataset_name="road-signs",
    export_name="road-signs-v1",
    pipeline_type="yolox",
    name="road-signs-detector",
)
print("Trained model:", run.model_id or run.status)

A class is a (name, output_type) pair, where the output type is bbox, polygon or tag, because auto-annotation has to know what shape to produce. Training runs on an export, never on a dataset directly: you create the export, see what went into it, then train that.

The same thing from the shell:

pictograph login
pictograph images upload-directory road-signs ./road_signs
pictograph auto-annotate batch road-signs --images 001.jpg,002.jpg --classes "stop_sign:bbox"
pictograph exports create road-signs --name road-signs-v1 -f pictograph --include-images
pictograph train start road-signs road-signs-v1 --pipeline yolox --gpu a10g
pictograph models download "road-signs-detector" -o ./yolox.onnx

Or over REST:

curl -s https://api.pictograph.io/api/v1/developer/datasets/ \
  -H "X-API-Key: $PICTOGRAPH_API_KEY"

Resources are addressed by name everywhere. There are no IDs to look up first.

Typed

Responses are Pydantic models. Failures are typed exceptions.

from pictograph.exceptions import NotFoundError, PaymentRequiredError, RateLimitError

try:
    client.datasets.get(name="does-not-exist")
except NotFoundError:
    ...

Transient failures retry with backoff, and writes carry an idempotency key so a retry cannot apply twice.

Async

Every method has an async twin with the same signature.

import asyncio
from pictograph import AsyncClient

async def main() -> None:
    async with AsyncClient() as client:
        datasets = await client.datasets.list(limit=5)
        print([d.name for d in datasets])

asyncio.run(main())

Run models on your own hardware

from pictograph import get_model

model  = get_model(name="signs-detector", task="object_detection")
result = model.predict(image="test.jpg")

Weights download and cache on first use. ONNX, PyTorch, ExecuTorch and TensorRT are supported targets. See local inference.

Agents

pip install "pictograph[agents]"
pictograph agents install-skill --target claude-code
from pictograph.agents import Toolkit

tools = Toolkit(client).as_anthropic_tools()   # or .as_openai_tools()

Offline utilities

No network needed, so an existing local dataset can be brought into typed models before uploading anything.

pictograph.formats Read and write COCO, YOLO, Pascal VOC
pictograph.metrics Score detections against ground truth by IoU
pictograph.augment Transform images, remapping annotation geometry with them
pictograph.tile Slice images into a grid, clipping annotations per tile

Documentation

Full reference at pictograph.io/docs.

Quick start · Installation · Authentication · API reference · CLI · Agents · Annotation format · Auto-annotation · Local inference · Deployments · Export conversion · Async client · Error handling · Rate limits

Requires Python 3.10 or newer. Extras: [cli], [agents], [inference], [torch], [all].

Contributing, security, license

CONTRIBUTING.md has the development setup and the checks a change must pass. Report vulnerabilities per SECURITY.md, not as a public issue.

The SDK is MIT licensed, see LICENSE. Two model architectures are vendored so local inference works without pulling their full training stacks; both are Apache-2.0 and keep their own licence and attribution alongside the code:

Component Upstream Licence
pictograph.inference._rfdetr RF-DETR (Roboflow) Apache-2.0 · NOTICE
pictograph.inference._yolox YOLOX (Megvii) Apache-2.0 · NOTICE

Metadata

Release files for pictograph 1.69.102

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pictograph 1.69.102
File Size Uploaded
pictograph-1.69.102.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pictograph 1.69.102
File Interpreter ABI Platform
pictograph-1.69.102-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / pictograph-1.69.102.tar.gz

Download URL pictograph-1.69.102.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
566d5c7ef9977dff958a5e6a953f0c612a2f07c8c8655ded18bdce3afd9b88b7
BLAKE2b-256 checksum
How to use checksums
5e6c1f5da954415febc52a4a687662ad415ff5a463066c47ecfb55c6aa491c11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release files / pictograph-1.69.102-py3-none-any.whl

Download URL pictograph-1.69.102-py3-none-any.whl
Size 777.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bea29d838efa2cfd055b74b84157ddf89b4d580d2ae125d0fecb466c9bee9d6b
BLAKE2b-256 checksum
How to use checksums
c763be079344c54c60af1ac6095df4be4f73c6725e152408658c7b5a89c3dc27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

1.69.102 This release

2 release files

1.69.8

2 release files

1.69.7

2 release files

1.69.6

2 release files

1.69.5

2 release files

1.69.4

2 release files

1.69.3

2 release files

1.69.2

2 release files

1.69.1

2 release files

1.68.2

2 release files

1.68.1

2 release files

1.68.0

2 release files

1.67.9

2 release files

1.67.8

2 release files

1.67.7

2 release files

1.67.6

2 release files

1.67.4

2 release files

1.67.3

2 release files

1.67.1

2 release files

1.67.0

2 release files

1.66.2

2 release files

1.66.1

2 release files

1.66.0

2 release files

1.65.0

2 release files

1.64.1

2 release files

1.64.0

2 release files

1.63.0

2 release files

1.62.1

2 release files

1.62.0

2 release files

1.61.5

2 release files

1.61.4

2 release files

1.61.3

2 release files

1.61.1

2 release files

1.61.0

2 release files

1.9.0

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.34

2 release files

1.7.33

2 release files

1.7.32

2 release files

1.7.30

2 release files

1.7.29

2 release files

1.7.28

2 release files

1.7.27

2 release files

1.7.26

2 release files

1.7.25

2 release files

1.7.24

2 release files

1.7.23

2 release files

1.7.22

2 release files

1.7.21

2 release files

1.7.20

2 release files

1.7.19

2 release files

1.7.18

2 release files

1.7.17

2 release files

1.7.16

2 release files

1.7.15

2 release files

1.7.14

2 release files

1.7.13

2 release files

1.7.12

2 release files

1.7.11

2 release files

1.7.10

2 release files

1.7.9

2 release files

1.7.8

2 release files

1.7.7

2 release files

1.7.6

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.11

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page