Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Extract text from images using a vision LLM
.claude/skills/axoviq-ai-image/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 215% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -60% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -39% | 0% |
Base64-encodes the image and passes it to a vision-capable LLM that extracts all text and key information. Returns the LLM's response as result.text.
No pip dependency — the skill uses only the Python standard library plus a LLM provider you supply at construction time. The provider can be any object that implements the complete() interface (see below).
pythonimport asyncio from synthadoc.skills.image.scripts.main import ImageSkill # ImageSkill REQUIRES a vision-capable provider — calling extract() without # one raises ValueError immediately. skill = ImageSkill(provider=my_provider) async def main(): result = await skill.extract("/path/to/screenshot.png") print(result.text) # extracted text from the image print(result.metadata) # {"tokens_input": N, "tokens_output": N} asyncio.run(main())
Provider interface — any object with this async method:
pythonasync def complete( messages: list, # list of Message objects from synthadoc.skills.base system: str | None = None, temperature: float = 0.0, max_tokens: int = 4096, ) -> object # must have .text (str), .input_tokens (int), .output_tokens (int)
Build the provider with any vision-capable model. Message is importable from synthadoc.skills.base — no dependency on synthadoc.providers:
pythonfrom synthadoc.skills.base import Message
Supported image formats: .png, .jpg/.jpeg, .webp, .gif, .tiff
.png, .jpg, .jpeg, .webp, .gif, or .tiffimage, screenshot, diagram, photoOther measured skills in the registry, with their headline benchmark lift.